mirror of
https://codeberg.org/scottslowe/learning-tools.git
synced 2026-03-11 09:04:37 +00:00
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:
parent
8bc2487d06
commit
b9324df45d
7 changed files with 152 additions and 0 deletions
72
photon-ansible/Vagrantfile
vendored
Normal file
72
photon-ansible/Vagrantfile
vendored
Normal 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
|
||||
5
photon-ansible/ansible.cfg
Normal file
5
photon-ansible/ansible.cfg
Normal 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
|
||||
10
photon-ansible/docker-tcp.socket
Normal file
10
photon-ansible/docker-tcp.socket
Normal 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
|
||||
11
photon-ansible/docker.service
Normal file
11
photon-ansible/docker.service
Normal 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
|
||||
12
photon-ansible/docker.socket
Normal file
12
photon-ansible/docker.socket
Normal 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
|
||||
5
photon-ansible/machines.yml
Normal file
5
photon-ansible/machines.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
- name: "photon"
|
||||
box: "vmware/photon"
|
||||
ram: "512"
|
||||
vcpu: "1"
|
||||
37
photon-ansible/provision.yml
Normal file
37
photon-ansible/provision.yml
Normal 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"
|
||||
Loading…
Reference in a new issue