diff --git a/photon-ansible/Vagrantfile b/photon-ansible/Vagrantfile new file mode 100644 index 0000000..7a92726 --- /dev/null +++ b/photon-ansible/Vagrantfile @@ -0,0 +1,72 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Specify Vagrant version, Vagrant API version, and desired clone location +Vagrant.require_version '>= 1.6.0' +VAGRANTFILE_API_VERSION = '2' +ENV['VAGRANT_DEFAULT_PROVIDER'] = 'vmware_fusion' +ENV['VAGRANT_VMWARE_CLONE_DIRECTORY'] = '~/.vagrant' +#ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox' +#ENV['VAGRANT_DEFAULT_PROVIDER'] = 'vmware_appcatalyst' + +# 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'] + srv.vm.box = machine['box'] + + # 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'] + + # Assign additional private network + if machine['ip_addr'] != nil + srv.vm.network 'private_network', ip: machine['ip_addr'] + end # if machine['ip_addr'] + + # Configure CPU & RAM per settings in machines.yml (Fusion) + # Nested virt not included because not supported with Photon + srv.vm.provider :vmware_fusion do |vmw| + vmw.vmx['memsize'] = machine['ram'] + vmw.vmx['numvcpus'] = machine['vcpu'] + end # srv.vm.provider vmware_fusion + + # Configure CPU & RAM per settings in machines.yml (AppCatalyst) + # Nested virt not included because not supported with Photon + srv.vm.provider :vmware_appcatalyst do |vmw| + vmw.vmx['memsize'] = machine['ram'] + vmw.vmx['numvcpus'] = machine['vcpu'] + #vmw.vmx['guestos'] = 'other3xlinux-64' + end # srv.vm.provider vmware_appcatalyst + + # Configure CPU & RAM per settings in machines.yml (VirtualBox) + srv.vm.provider :virtualbox do |vb| + vb.memory = machine['ram'] + vb.cpus = machine['vcpu'] + 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/photon-ansible/ansible.cfg b/photon-ansible/ansible.cfg new file mode 100644 index 0000000..a25e3e2 --- /dev/null +++ b/photon-ansible/ansible.cfg @@ -0,0 +1,5 @@ +[defaults] +inventory = ./vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory +private_key_file = ~/.vagrant.d/insecure_private_key +remote_user = vagrant +host_key_checking = False \ No newline at end of file diff --git a/photon-ansible/docker-tcp.socket b/photon-ansible/docker-tcp.socket new file mode 100644 index 0000000..2d29cca --- /dev/null +++ b/photon-ansible/docker-tcp.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Docker TCP Socket for the API + +[Socket] +ListenStream=2375 +BindIPv6Only=both +Service=docker.service + +[Install] +WantedBy=sockets.target diff --git a/photon-ansible/docker.service b/photon-ansible/docker.service new file mode 100644 index 0000000..51e3878 --- /dev/null +++ b/photon-ansible/docker.service @@ -0,0 +1,11 @@ +[Unit] +Description=Docker Daemon + +[Service] +ExecStart=/bin/docker -d -H fd:// -s overlay +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/photon-ansible/docker.socket b/photon-ansible/docker.socket new file mode 100644 index 0000000..7dd9509 --- /dev/null +++ b/photon-ansible/docker.socket @@ -0,0 +1,12 @@ +[Unit] +Description=Docker Socket for the API +PartOf=docker.service + +[Socket] +ListenStream=/var/run/docker.sock +SocketMode=0660 +SocketUser=root +SocketGroup=docker + +[Install] +WantedBy=sockets.target diff --git a/photon-ansible/machines.yml b/photon-ansible/machines.yml new file mode 100644 index 0000000..3c4e18a --- /dev/null +++ b/photon-ansible/machines.yml @@ -0,0 +1,5 @@ +--- +- name: "photon" + box: "vmware/photon" + ram: "512" + vcpu: "1" diff --git a/photon-ansible/provision.yml b/photon-ansible/provision.yml new file mode 100644 index 0000000..b471eb5 --- /dev/null +++ b/photon-ansible/provision.yml @@ -0,0 +1,37 @@ +--- +- hosts: "all" + sudo: "yes" + remote_user: "vagrant" + + tasks: + - name: "Copy Docker TCP socket file" + copy: + src: "docker-tcp.socket" + dest: "/etc/systemd/system/docker-tcp.socket" + owner: "root" + group: "root" + mode: "0644" + - name: "Copy Docker socket file" + copy: + src: "docker.socket" + dest: "/lib/systemd/system/docker.socket" + owner: "root" + group: "root" + mode: "0644" + - name: "Copy Docker TCP socket file" + copy: + src: "docker.service" + dest: "/lib/systemd/system/docker.service" + owner: "root" + group: "root" + mode: "0644" + - name: "Enable Docker TCP socket" + service: + name: "docker-tcp.socket" + enabled: "yes" + state: "started" + - name: "Enable Docker socket" + service: + name: "docker.socket" + enabled: "yes" + state: "started"