| # All the data below will be stored as a string object
  #cloud-config, see http://cloudinit.readthedocs.io/en/latest/topics/examples.html

  ssh_pwauth: True
  users:
   - name: root
     sudo: ALL=(ALL) NOPASSWD:ALL
     shell: /bin/bash
     ssh_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGwjUlYn9UsmWmAGSuEA2sICad7WqxgsJR0HKcMbbxi0tn96h4Cq2iGYmzlJ48egLm5R5pxyWnFvL4b/2zb+kKTPCMwRc9nv7xEGosEFNQEoSDd+gYu2CO0dgS2bX/7m2DXmzvhqPjxWQUXXsb0OYAS1r9Es65FE8y4rLaegz8V35xfH45bTCA0W8VSKh264XtGz12hacqsttE/UvyjJTZe+/XV+xJy3WAWxe8J/MuW1VqbqNewTmpTE/LJU8i6pG4msU6+wH99UvsGAOKQOduynUHKWG3VZg5YCjpbbV/t/pfW/vHB3b3jiifQmNhulyiG/CNnSQ5BahtV/7qPsYt vagrant@cfg01

  disable_root: false
  chpasswd:
   list: |
    root:r00tme
   expire: False

  bootcmd:
   # Block access to SSH while node is preparing
   - cloud-init-per once sudo iptables -A INPUT -p tcp --dport 22 -j DROP
   # Enable root access
   - sed -i -e '/^PermitRootLogin/s/^.*$/PermitRootLogin yes/' /etc/ssh/sshd_config
   - service sshd restart
  output:
    all: '| tee -a /var/log/cloud-init-output.log /dev/tty0'

  runcmd:
   # Configure dhclient
   - sudo echo "nameserver {gateway}" >> /etc/resolvconf/resolv.conf.d/base
   - sudo resolvconf -u

   # Prepare network connection
   - sudo ifup eth0
   #- sudo route add default gw {gateway} {interface_name}
   - sudo ifup eth1

   # Create swap
   - fallocate -l 4G /swapfile
   - chmod 600 /swapfile
   - mkswap /swapfile
   - swapon /swapfile
   - echo "/swapfile   none    swap    defaults    0   0" >> /etc/fstab

   ############## TCP Cloud cfg01 node ##################
   #- sleep 120
   - echo "Preparing base OS"
   - which wget >/dev/null || (apt-get update; apt-get install -y wget)

   - echo "deb [arch=amd64] http://apt.tcpcloud.eu/nightly/ trusty main security tcp tcp-salt" > /etc/apt/sources.list
   - wget -O - http://apt.tcpcloud.eu/public.gpg | apt-key add -
   # saltstack repo is for minions that have the same version in the xenial and trusty (2016.3.3)
   - echo "deb http://repo.saltstack.com/apt/ubuntu/14.04/amd64/latest trusty main" > /etc/apt/sources.list.d/saltstack.list
   - wget -O - https://repo.saltstack.com/apt/ubuntu/14.04/amd64/latest/SALTSTACK-GPG-KEY.pub | apt-key add -

   - apt-get clean
   - apt-get update
   - apt-get -y upgrade

   # Install common packages
   - apt-get install -y python-pip git
   - apt-get install -y curl tmux byobu iputils-ping traceroute htop tree

   - apt-get install -y salt-minion

   # To be configured from inventory/fuel-devops by operator or autotests
   - 'echo "id: {hostname}" >> /etc/salt/minion'
   - 'echo "master: 172.16.10.100" >> /etc/salt/minion'

   - echo "Restarting minion service with workarounds..."
   - rm -f /etc/salt/pki/minion/minion_master.pub
   - service salt-minion restart
   - sleep 5
   - rm -f /etc/salt/pki/minion/minion_master.pub
   - service salt-minion restart

   #- echo "Showing node metadata..."
   #- salt-call pillar.data

   #- echo "Running complete state ..."
   #- salt-call state.sls linux,openssh,salt

   # Workaround for bug https://mirantis.jira.com/browse/PROD-8214
   - apt-get -y install --install-recommends linux-generic-lts-xenial
   - reboot

   ########################################################
   # Node is ready, allow SSH access
   ##- echo "Allow SSH access ..."
   ##- sudo iptables -D INPUT -p tcp --dport 22 -j DROP
   ########################################################

  write_files:
   - path: /etc/network/interfaces
     content: |
          auto eth0
          iface eth0 inet dhcp
          auto eth1
          iface eth1 inet dhcp
