From e9f83eb143fbe5f98f864cc4df9fdd021e5f395f Mon Sep 17 00:00:00 2001 From: Scott Lowe Date: Wed, 12 Apr 2017 23:25:33 -0600 Subject: [PATCH] Commit files for simple 2 VM OVS environment Add Vagrantfile, external YAML data file, and Ansible playbook to create a simple 2 VM environment running Ubuntu 16.04 and OVS 2.5.2. Signed-off-by: Scott Lowe --- ovs-ovn/ovs-simple/Vagrantfile | 74 ++++++++++++++++++++++++++++++ ovs-ovn/ovs-simple/ansible.cfg | 5 ++ ovs-ovn/ovs-simple/machines.yml | 19 ++++++++ ovs-ovn/ovs-simple/provision.retry | 1 + ovs-ovn/ovs-simple/provision.yml | 21 +++++++++ 5 files changed, 120 insertions(+) create mode 100644 ovs-ovn/ovs-simple/Vagrantfile create mode 100644 ovs-ovn/ovs-simple/ansible.cfg create mode 100644 ovs-ovn/ovs-simple/machines.yml create mode 100644 ovs-ovn/ovs-simple/provision.retry create mode 100644 ovs-ovn/ovs-simple/provision.yml diff --git a/ovs-ovn/ovs-simple/Vagrantfile b/ovs-ovn/ovs-simple/Vagrantfile new file mode 100644 index 0000000..3f9888a --- /dev/null +++ b/ovs-ovn/ovs-simple/Vagrantfile @@ -0,0 +1,74 @@ +# -*- 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, RAM, IP addresses) +# Edit machines.yml to change VM configuration details +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| + + # Configure the VMs per details in machines.yml + config.vm.define machine['name'] do |srv| + + # Don't check for box updates + srv.vm.box_check_update = false + + # Specify the hostname of the VM + srv.vm.hostname = machine['name'] + + # Specify the Vagrant box to use (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'] + end # srv.vm.provider 'virtualbox' + end # config.vm.define + end # machines.each + + # Configure the machines with Ansible + config.vm.provision 'ansible' do |ansible| + ansible.playbook = 'provision.yml' + end # config.vm.provision +end # Vagrant.configure diff --git a/ovs-ovn/ovs-simple/ansible.cfg b/ovs-ovn/ovs-simple/ansible.cfg new file mode 100644 index 0000000..b3a4567 --- /dev/null +++ b/ovs-ovn/ovs-simple/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/ovs-ovn/ovs-simple/machines.yml b/ovs-ovn/ovs-simple/machines.yml new file mode 100644 index 0000000..3077e42 --- /dev/null +++ b/ovs-ovn/ovs-simple/machines.yml @@ -0,0 +1,19 @@ +--- +- box: + vmw: "bento/ubuntu-16.04" + vb: "bento/ubuntu-16.04" + name: "ovs-01" + nics: + - type: "private_network" + ip_addr: "192.168.100.101" + ram: "512" + vcpu: "1" +- box: + vmw: "bento/ubuntu-16.04" + vb: "bento/ubuntu-16.04" + name: "ovs-02" + nics: + - type: "private_network" + ip_addr: "192.168.100.101" + ram: "512" + vcpu: "1" diff --git a/ovs-ovn/ovs-simple/provision.retry b/ovs-ovn/ovs-simple/provision.retry new file mode 100644 index 0000000..ecb9f0b --- /dev/null +++ b/ovs-ovn/ovs-simple/provision.retry @@ -0,0 +1 @@ +ovs-01 diff --git a/ovs-ovn/ovs-simple/provision.yml b/ovs-ovn/ovs-simple/provision.yml new file mode 100644 index 0000000..002a34c --- /dev/null +++ b/ovs-ovn/ovs-simple/provision.yml @@ -0,0 +1,21 @@ +--- +- hosts: "all" + become: "yes" + remote_user: "vagrant" + + tasks: + - name: "Install OVS" + apt: + state: "present" + update_cache: "yes" + name: "{{ item }}" + with_items: + - "openvswitch-common" + - "openvswitch-switch" + + - name: "Create OVS bridges" + openvswitch_bridge: + bridge: "{{ item }}" + state: "present" + with_items: + - "br0"