| # 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:
   - export TERM=linux
   - export LANG=C
   # Configure dhclient
   - sudo echo "nameserver {gateway}" >> /etc/resolvconf/resolv.conf.d/base
   - sudo resolvconf -u

   # Prepare network connection
   - sudo ifup ens3
   #- sudo route add default gw {gateway} {interface_name}
   - sudo ifup ens4

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

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

   ############## 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/ xenial main security extra 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/16.04/amd64/latest xenial main" > /etc/apt/sources.list.d/saltstack.list
   #- wget -O - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/latest/SALTSTACK-GPG-KEY.pub | apt-key add -
   - echo "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3 xenial main" > /etc/apt/sources.list.d/saltstack.list
   - wget -O - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.3/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

  write_files:
   - path: /etc/network/interfaces
     content: |
          auto ens3
          iface ens3 inet dhcp
          auto ens4
          iface ens4 inet dhcp
