diff --git a/ansible/src-dst-list/Vagrantfile b/ansible/src-dst-list/Vagrantfile new file mode 100644 index 0000000..fdb901d --- /dev/null +++ b/ansible/src-dst-list/Vagrantfile @@ -0,0 +1,71 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Specify minimum Vagrant version and Vagrant API version +Vagrant.require_version '>= 1.6.0' +VAGRANTFILE_API_VERSION = '2' + +# Require 'yaml' module +require 'yaml' + +# Read YAML file with VM details (box, CPU, and RAM) +machines = YAML.load_file(File.join(File.dirname(__FILE__), 'machines.yml')) + +# Create and configure the VMs +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| + + # Always use Vagrant's default insecure key + config.ssh.insert_key = false + + # Iterate through entries in YAML file to create VMs + machines.each do |machine| + config.vm.define machine['name'] do |srv| + + # Don't check for box updates + srv.vm.box_check_update = false + srv.vm.hostname = machine['name'] + + # Use VMware box by default + srv.vm.box = machine['box']['vmw'] + + # Configure default synced folder (disable by default) + if machine['sync_disabled'] != nil + srv.vm.synced_folder '.', '/vagrant', disabled: machine['sync_disabled'] + else + srv.vm.synced_folder '.', '/vagrant', disabled: true + end #if machine['sync_disabled'] + + # Iterate through networks as per settings in machines.yml + machine['nics'].each do |net| + if net['ip_addr'] == 'dhcp' + srv.vm.network net['type'], type: net['ip_addr'] + else + srv.vm.network net['type'], ip: net['ip_addr'] + end # if net['ip_addr'] + end # machine['nics'].each + + # Configure CPU & RAM per settings in machines.yml (Fusion) + srv.vm.provider 'vmware_fusion' do |vmw| + vmw.vmx['memsize'] = machine['ram'] + vmw.vmx['numvcpus'] = machine['vcpu'] + if machine['nested'] == true + vmw.vmx['vhv.enable'] = 'TRUE' + end #if machine['nested'] + end # srv.vm.provider 'vmware_fusion' + + # Configure CPU & RAM per settings in machines.yml (VirtualBox) + srv.vm.provider 'virtualbox' do |vb, override| + vb.memory = machine['ram'] + vb.cpus = machine['vcpu'] + override.vm.box = machine['box']['vb'] + vb.customize ['modifyvm', :id, '--nictype1', 'virtio'] + vb.customize ['modifyvm', :id, '--nictype2', 'virtio'] + end # srv.vm.provider 'virtualbox' + end # config.vm.define + + # Provision the VM with Ansible + config.vm.provision 'ansible' do |ansible| + ansible.playbook = 'provision.yml' + end # config.vm.provision + end # machines.each +end # Vagrant.configure diff --git a/ansible/src-dst-list/docker-socket.conf b/ansible/src-dst-list/docker-socket.conf new file mode 100644 index 0000000..ea41aa7 --- /dev/null +++ b/ansible/src-dst-list/docker-socket.conf @@ -0,0 +1,13 @@ +[Service] +ExecStart= +ExecStart=/usr/bin/dockerd-current -H fd:// \ + --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \ + --default-runtime=docker-runc \ + --exec-opt native.cgroupdriver=systemd \ + --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \ + $OPTIONS \ + $DOCKER_STORAGE_OPTIONS \ + $DOCKER_NETWORK_OPTIONS \ + $ADD_REGISTRY \ + $BLOCK_REGISTRY \ + $INSECURE_REGISTRY diff --git a/ansible/src-dst-list/docker-tcp.socket b/ansible/src-dst-list/docker-tcp.socket new file mode 100644 index 0000000..024a102 --- /dev/null +++ b/ansible/src-dst-list/docker-tcp.socket @@ -0,0 +1,10 @@ +[Unit] +Description=TCP Socket for the Docker API + +[Socket] +ListenStream=2375 +BindIPv6Only=both +Service=docker.service + +[Install] +WantedBy=sockets.target diff --git a/ansible/src-dst-list/docker.socket b/ansible/src-dst-list/docker.socket new file mode 100644 index 0000000..3c5e736 --- /dev/null +++ b/ansible/src-dst-list/docker.socket @@ -0,0 +1,12 @@ +[Unit] +Description=UNIX Socket for the Docker API +PartOf=docker.service + +[Socket] +ListenStream=/var/run/docker.sock +SocketMode=0660 +SocketUser=root +SocketGroup=docker + +[Install] +WantedBy=sockets.target diff --git a/ansible/src-dst-list/machines.yml b/ansible/src-dst-list/machines.yml new file mode 100644 index 0000000..cb03628 --- /dev/null +++ b/ansible/src-dst-list/machines.yml @@ -0,0 +1,12 @@ +--- +- box: + vmw: "bento/centos-7.1" + vb: "centos/atomic-host" + name: "atomic-01" + nested: false + nics: + - type: "private_network" + ip_addr: "dhcp" + ram: "512" + sync_disabled: true + vcpu: "1" diff --git a/ansible/src-dst-list/provision.yml b/ansible/src-dst-list/provision.yml new file mode 100644 index 0000000..7031946 --- /dev/null +++ b/ansible/src-dst-list/provision.yml @@ -0,0 +1,48 @@ +--- +- hosts: "all" + become: "yes" + remote_user: "vagrant" + + tasks: + - name: Stop the Docker Engine service + service: + name: "docker.service" + state: "stopped" + + - name: Create systemd drop-in directory for Docker + file: + path: "/etc/systemd/system/docker.service.d" + state: "directory" + owner: "root" + group: "root" + + - name: Copy files into place + copy: + src: "{{ item.src }}" + dest: "{{ item.dst }}" + owner: "root" + group: "root" + mode: "0644" + with_items: + - src: "docker.socket" + dst: "/etc/systemd/system/" + - src: "docker-tcp.socket" + dst: "/etc/systemd/system/" + - src: "docker-socket.conf" + dst: "/etc/systemd/system/docker.service.d" + + - name: Create Docker group + group: + name: "docker" + + - name: Reload systemd unit files + command: "systemctl daemon-reload" + + - name: Start Docker sockets and service + service: + name: "{{ item }}" + state: "started" + with_items: + - "docker.socket" + - "docker-tcp.socket" + - "docker.service"