Skip to content

Instantly share code, notes, and snippets.

Bogdan metallica127

Block or report user

Report or block metallica127

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
metallica127 /
Last active Nov 14, 2017
Chef: add node attributes automatically

Chef: add node attributes automatically

Using knife exec

The best way probably

knife exec -E "nodes.find(:name => 'chef-node') { |node|  node.normal_attrs['some_key'] = 'some_value';; }"


Use the delegate instance methods flexibly in class:

require 'forwardable'

class MyHash


metallica127 /
Last active Mar 20, 2018
How to setup elastic interface on AWS instance.

AMI: ubuntu 16.04

Create and assign ENI
Assume additional interface name: eth1
Assume its private ip:
Assume mask: (16)

Inside instance:

metallica127 /
Last active Nov 14, 2017
Assign second IP to single elastic interface

This guide assumes you've configured your ENI inside linux instance. After you've assigned second ip address to your ENI in the AWS console, you need to reconfigure your interface inside intance.

Assume your interface name: eth1 Assume your second ip: $second_ip From the guide, mentioned above, the content of /etc/network/interfaces.d/eth1.cfg should look like:

auto eth1
iface eth1 inet static
 address $your_ip_addr
  1. Add docker repo
sudo add-apt-repository \
   "deb [arch=amd64] \
   $(lsb_release -cs) \
  1. Update
metallica127 /
Last active Nov 14, 2017
Create and use swap on aws instance (or any other ubuntu machine)

Platform: Ubuntu 16.04

  1. It is common practice to create swap that equals to your RAM. So firstly, you should find out your RAM:
free -m

Which outputs like:

              total        used        free      shared  buff/cache   available

Actually, it's a guide to setup docker macvlan network and it can be used to attach static ip to container on public/local network.

  1. Create docker public network:
docker network create -d macvlan --subnet=$SUBNET --gateway=$GATEWAY_IP -o parent=eth0 public

$SUBNET - your public network subnet
$GATEWAY_IP - your public network gateway


How to run Chef-Solo programmatically:

require 'chef'
require 'chef/application/solo'

Chef::Config[:solo_legacy_mode] = true
Chef::Config[:cookbook_path] = [File.join(File.absolute_path(File.dirname(__FILE__)), 'cookbooks')]

chef_client =
metallica127 /
Last active Nov 14, 2017
List of some weirdness and gotchas


  1. Outside ENV strings are frozen:






We need a global docker network in order to communicate between docker-compose setups on different hosts

Step 1: Install and run Consul (as a key-value storage for docker)

Step 2: Edit docker configuration (on each docker host)

You can’t perform that action at this time.