consolidated create-vms's into juju-setup role
diff --git a/roles/create-vms/defaults/main.yml b/roles/create-vms/defaults/main.yml
deleted file mode 100644
index d8d5ea7..0000000
--- a/roles/create-vms/defaults/main.yml
+++ /dev/null
@@ -1,17 +0,0 @@
----
-# roles/create-vms/defaults/main.yml
-# default variables for xos-install role
-
-head_vm_list:
- - { name: "juju", cpu: "1", memMB: "2048", diskGB: "20" }
- - { name: "mysql", cpu: "2", memMB: "4096", diskGB: "40" }
- - { name: "rabbitmq-server", cpu: "2", memMB: "4096", diskGB: "40" }
- - { name: "keystone", cpu: "2", memMB: "4096", diskGB: "40" }
- - { name: "glance", cpu: "2", memMB: "4096", diskGB: "160" }
- - { name: "nova-cloud-controller", cpu: "2", memMB: "4096", diskGB: "40" }
- - { name: "neutron-gateway", cpu: "2", memMB: "4096", diskGB: "40" }
- - { name: "neutron-api", cpu: "2", memMB: "4096", diskGB: "40" }
- - { name: "openstack-dashboard", cpu: "1", memMB: "2048", diskGB: "20" }
- - { name: "ceilometer", cpu: "1", memMB: "2048", diskGB: "20" }
- - { name: "nagios", cpu: "1", memMB: "2048", diskGB: "20" }
-
diff --git a/roles/create-vms/handlers/main.yml b/roles/create-vms/handlers/main.yml
deleted file mode 100644
index fce01c5..0000000
--- a/roles/create-vms/handlers/main.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-# roles/create-vms/handlers/main.yml
-
-
diff --git a/roles/create-vms/tasks/main.yml b/roles/create-vms/tasks/main.yml
deleted file mode 100644
index a637153..0000000
--- a/roles/create-vms/tasks/main.yml
+++ /dev/null
@@ -1,26 +0,0 @@
----
-# roles/create-vms/tasks/main.yml
-
-- name: create Virtual Machines with uvt-kvm
- shell: uvt-kvm create {{ item.name }} --cpu={{ item.cpu }} --memory={{ item.memMB }} --disk={{ item.diskGB }}; \
- uvt-kvm wait --insecure {{ item.name }}
- creates=/var/lib/uvtool/libvirt/images/{{ item.name }}.qcow
- with_items: head_vm_list
-
-- name: discover VM IP addresses
- shell: uvt-kvm ip {{ item.name }}
- with_items: head_vm_list
- register: vm_ip
-
-- name: Create /etc/hosts with VM IP addresses
- become: yes
- template:
- src=hosts.j2
- dest=/etc/hosts
-
-- name: Create /etc/ansible/hosts file
- become: yes
- template:
- src=ansible_hosts.j2
- dest=/etc/ansible/hosts
-
diff --git a/roles/juju-setup/defaults/main.yml b/roles/juju-setup/defaults/main.yml
new file mode 100644
index 0000000..8087b54
--- /dev/null
+++ b/roles/juju-setup/defaults/main.yml
@@ -0,0 +1,42 @@
+---
+# roles/juju-setup/defaults/main.yml
+
+head_vm_list:
+ - { name: "juju", cpu: "1", memMB: "2048", diskGB: "20" }
+ - { name: "ceilometer", cpu: "1", memMB: "2048", diskGB: "20" }
+ - { name: "glance", cpu: "2", memMB: "4096", diskGB: "160" }
+ - { name: "keystone", cpu: "2", memMB: "4096", diskGB: "40" }
+ - { name: "mysql", cpu: "2", memMB: "4096", diskGB: "40" }
+ - { name: "nagios", cpu: "1", memMB: "2048", diskGB: "20" }
+ - { name: "neutron-api", cpu: "2", memMB: "4096", diskGB: "40" }
+ - { name: "neutron-gateway", cpu: "2", memMB: "4096", diskGB: "40" }
+ - { name: "nova-cloud-controller", cpu: "2", memMB: "4096", diskGB: "40" }
+ - { name: "openstack-dashboard", cpu: "1", memMB: "2048", diskGB: "20" }
+ - { name: "rabbitmq-server", cpu: "2", memMB: "4096", diskGB: "40" }
+
+vm_service_list:
+ - ceilometer
+ - glance
+ - keystone
+ - mysql
+ - nagios
+ - neutron-api
+ - neutron-gateway
+ - nova-cloud-controller
+ - openstack-dashboard
+ - rabbitmq-server
+
+standalone_service_list:
+ - ntp
+ - nrpe
+ - ceilometer-agent
+ - neutron-openvswitch
+
+service_relations:
+ - keystone: [ "mysql" ]
+ - nova-cloud-controller: [ "mysql", "rabbitmq-server", "glance", "keystone" ]
+
+openstack_version: kilo
+openstack_cfg_path: /usr/local/src/openstack.cfg
+
+
diff --git a/roles/juju-setup/tasks/main.yml b/roles/juju-setup/tasks/main.yml
index 593bfdb..bf40c73 100644
--- a/roles/juju-setup/tasks/main.yml
+++ b/roles/juju-setup/tasks/main.yml
@@ -1,6 +1,29 @@
---
# roles/juju-setup/main/tasks.yml
+- name: create Virtual Machines with uvt-kvm
+ shell: uvt-kvm create {{ item.name }} --cpu={{ item.cpu }} --memory={{ item.memMB }} --disk={{ item.diskGB }}; \
+ uvt-kvm wait --insecure {{ item.name }}
+ creates=/var/lib/uvtool/libvirt/images/{{ item.name }}.qcow
+ with_items: head_vm_list
+
+- name: discover VM IP addresses
+ shell: uvt-kvm ip {{ item.name }}
+ with_items: head_vm_list
+ register: vm_ip
+
+- name: Create /etc/hosts with VM IP addresses
+ become: yes
+ template:
+ src=hosts.j2
+ dest=/etc/hosts
+
+- name: Create /etc/ansible/hosts file
+ become: yes
+ template:
+ src=ansible_hosts.j2
+ dest=/etc/ansible/hosts
+
- name: Verify that we can log into every VM
command: ansible services -m ping -u ubuntu
@@ -17,23 +40,34 @@
command: juju bootstrap
creates={{ ansible_user_dir }}/.juju/environments/manual.jenv
-- name: Copy openstack.cfg for Juju
+- name: Create openstack.cfg for Juju from template
become: yes
- copy:
- src=openstack.cfg
- dest=/usr/local/src/openstack.cfg
+ template:
+ src=openstack.cfg.j2
+ dest={{ openstack_cfg_path }}
-# Code for juju_facts this is in library/juju_facts.py
-
+# Code for this is in library/juju_facts.py
- name: Obtain Juju Facts
juju_facts:
# For setwise operations on desired vs Juju state:
-# list of VM names head_vm_list dict: head_vm_list | map(attribute='name') | list
+# list of VM names in head_vm_list dict: head_vm_list | map(attribute='name') | list
# list of active juju_machines names: juju_machines.keys()
# list of active juju_services names: juju_services.keys()
- name: Add machines to Juju
command: "juju add-machine ssh:{{ item }}"
- with_items: "{{ head_vm_list | map(attribute='name') | list | difference( juju_machines.keys()) }}"
+ with_items: "{{ head_vm_list | map(attribute='name') | list | difference( juju_machines.keys() ) }}"
+
+- name: Deploy services that are hosted in their own VM
+ command: "juju deploy {{ item }} --to {{ juju_machines[item]['machine_id'] }} --config={{ openstack_cfg_path }}"
+ with_items: "{{ vm_service_list | difference( juju_services.keys() ) }}"
+
+- name: Deploy mongodb to ceilometer VM
+ command: "juju deploy mongodb --to {{ juju_machines['ceilometer']['machine_id'] }} --config={{ openstack_cfg_path }}"
+ when: juju_services['mongodb'] is undefined
+
+- name: Deploy services that don't have their own VM
+ command: "juju deploy {{ item }} --config={{ openstack_cfg_path }}"
+ with_items: "{{ standalone_service_list | difference( juju_services.keys() ) }}"
diff --git a/roles/create-vms/templates/ansible_hosts.j2 b/roles/juju-setup/templates/ansible_hosts.j2
similarity index 100%
rename from roles/create-vms/templates/ansible_hosts.j2
rename to roles/juju-setup/templates/ansible_hosts.j2
diff --git a/roles/create-vms/templates/hosts.j2 b/roles/juju-setup/templates/hosts.j2
similarity index 100%
rename from roles/create-vms/templates/hosts.j2
rename to roles/juju-setup/templates/hosts.j2
diff --git a/roles/juju-setup/files/openstack.cfg b/roles/juju-setup/templates/openstack.cfg.j2
similarity index 77%
rename from roles/juju-setup/files/openstack.cfg
rename to roles/juju-setup/templates/openstack.cfg.j2
index e9a1866..063d239 100644
--- a/roles/juju-setup/files/openstack.cfg
+++ b/roles/juju-setup/templates/openstack.cfg.j2
@@ -1,3 +1,5 @@
+ceilometer:
+ceilometer-agent:
glance:
openstack-origin: "cloud:trusty-kilo"
keystone:
@@ -5,33 +7,33 @@
https-service-endpoints: "True"
openstack-origin: "cloud:trusty-kilo"
use-https: "yes"
-nova-cloud-controller:
- console-access-protocol: "novnc"
- network-manager: "Neutron"
+mysql:
+mongodb:
+nagios:
+neutron-api:
+ flat-network-providers: "*"
openstack-origin: "cloud:trusty-kilo"
-nova-compute:
-# config-flags: "firewall_driver=nova.virt.firewall.NoopFirewallDriver"
- config-flags: "firewall_driver=nova.virt.firewall.NoopFirewallDriver,xos_api_url=http://portal.opencloud.us"
- disable-neutron-security-groups: "True"
- openstack-origin: "cloud:trusty-kilo"
-ntp:
- source: "0.ubuntu.pool.ntp.org 1.ubuntu.pool.ntp.org 2.ubuntu.pool.ntp.org 3.ubuntu.pool.ntp.org"
-openstack-dashboard:
- openstack-origin: "cloud:trusty-kilo"
+ vlan-ranges: "physnet1:1000:2000 nat"
neutron-gateway:
bridge-mappings: "physnet1:br-data nat:br-nat"
flat-network-providers: "*"
instance-mtu: "1400"
openstack-origin: "cloud:trusty-kilo"
vlan-ranges: "physnet1:1000:2000 nat"
-neutron-api:
- flat-network-providers: "*"
- openstack-origin: "cloud:trusty-kilo"
- vlan-ranges: "physnet1:1000:2000 nat"
neutron-openvswitch:
bridge-mappings: "physnet1:br-data nat:br-nat"
disable-security-groups: "True"
flat-network-providers: "*"
vlan-ranges: "physnet1:1000:2000 nat"
+nova-cloud-controller:
+ console-access-protocol: "novnc"
+ network-manager: "Neutron"
+ openstack-origin: "cloud:trusty-kilo"
+ntp:
+ source: "0.ubuntu.pool.ntp.org 1.ubuntu.pool.ntp.org 2.ubuntu.pool.ntp.org 3.ubuntu.pool.ntp.org"
+nrpe:
+openstack-dashboard:
+ openstack-origin: "cloud:trusty-kilo"
rabbitmq-server:
ssl: "on"
+