Add new learning environment for Photon and Ansible

Add new learning environment for Photon and Ansible. Add Vagrantfile,
supporting files, Ansible playbook, and Ansible configuration file.
This commit is contained in:
Scott Lowe 2016-01-09 21:54:26 -07:00
parent 8bc2487d06
commit b9324df45d
7 changed files with 152 additions and 0 deletions

72
photon-ansible/Vagrantfile vendored Normal file
View file

@ -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

View file

@ -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

View file

@ -0,0 +1,10 @@
[Unit]
Description=Docker TCP Socket for the API
[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service
[Install]
WantedBy=sockets.target

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
---
- name: "photon"
box: "vmware/photon"
ram: "512"
vcpu: "1"

View file

@ -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"