configure openstack on juju
diff --git a/aztest.yml b/aztest.yml
index d115075..61c4f62 100644
--- a/aztest.yml
+++ b/aztest.yml
@@ -7,6 +7,7 @@
- { role: head-prep, become: yes }
- juju-user-prep
- juju-setup
+ - juju-openstack-config
- hosts: compute
become: yes
diff --git a/roles/juju-openstack-config/files/network-setup.sh b/roles/juju-openstack-config/files/network-setup.sh
new file mode 100755
index 0000000..05e4c12
--- /dev/null
+++ b/roles/juju-openstack-config/files/network-setup.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+source ~/admin-openrc.sh
+
+function create-flat-net {
+ NAME=$1
+ neutron net-show $NAME-net 2>&1 > /dev/null
+ if [ "$?" -ne 0 ]
+ then
+ neutron net-create --provider:physical_network=$NAME --provider:network_type=flat --shared $NAME-net
+ fi
+}
+
+function create-subnet {
+ NAME=$1
+ CIDR=$2
+ GW=$3
+
+ neutron subnet-show $NAME-net 2>&1 > /dev/null
+ if [ "$?" -ne 0 ]
+ then
+ neutron subnet-create $NAME-net --name $NAME-net $CIDR --gateway=$GW --disable-dhcp
+ fi
+}
+
+function create-subnet-no-gateway {
+ NAME=$1
+ CIDR=$2
+
+ neutron subnet-show $NAME-net 2>&1 > /dev/null
+ if [ "$?" -ne 0 ]
+ then
+ neutron subnet-create $NAME-net --name $NAME-net $CIDR --no-gateway --disable-dhcp
+ fi
+}
+
+create-flat-net nat
+create-subnet nat 172.16.0.0/16 172.16.0.1
+
+create-flat-net ext
diff --git a/roles/juju-openstack-config/handlers/main.yml b/roles/juju-openstack-config/handlers/main.yml
new file mode 100644
index 0000000..c90c918
--- /dev/null
+++ b/roles/juju-openstack-config/handlers/main.yml
@@ -0,0 +1,7 @@
+---
+# roles/juju-openstack-config/handlers/tasks.yml
+
+- name: update-ca-certificates
+ become: yes
+ command: update-ca-certificates
+
diff --git a/roles/juju-openstack-config/tasks/main.yml b/roles/juju-openstack-config/tasks/main.yml
new file mode 100644
index 0000000..47d4cc7
--- /dev/null
+++ b/roles/juju-openstack-config/tasks/main.yml
@@ -0,0 +1,36 @@
+---
+# roles/juju-openstack-config/main/tasks.yml
+
+- name: Obtain keystone admin password
+ command: "juju run --unit={{ juju_services['keystone']['units'].keys()[0] }} 'sudo cat /var/lib/keystone/keystone.passwd'"
+ register: keystone_password
+
+- name: Obtain keystone IP address
+ command: uvt-kvm ip keystone
+ register: keystone_ip
+
+- name: Create admin-openrc.sh credentials file
+ template:
+ src=admin-openrc.sh.j2
+ dest={{ ansible_user_dir }}/admin-openrc.sh
+
+- name: Copy credentials file to nova-cloud-controller
+ command: "scp {{ ansible_user_dir }}/admin-openrc.sh ubuntu@nova-cloud-controller:"
+
+- name: Copy network setup script
+ become: yes
+ copy:
+ src=network-setup.sh
+ dest=/usr/local/src/network-setup.sh
+ mode=0644 owner=root
+
+- name: Run network setup script
+ command: ansible nova-cloud-controller -m script -u ubuntu -a "/usr/local/src/network-setup.sh"
+
+- name: Copy nova-cloud-controller CA certificate to local
+ become: yes
+ command: juju scp {{ juju_services['nova-cloud-controller']['units'].keys()[0] }}:/usr/local/share/ca-certificates/keystone_juju_ca_cert.crt \
+ /usr/local/share/ca-certificates
+ creates=/usr/local/share/ca-certificates/keystone_juju_ca_cert.crt
+ notify: update-ca-certificates
+
diff --git a/roles/juju-openstack-config/templates/admin-openrc.sh.j2 b/roles/juju-openstack-config/templates/admin-openrc.sh.j2
new file mode 100644
index 0000000..4ef1a08
--- /dev/null
+++ b/roles/juju-openstack-config/templates/admin-openrc.sh.j2
@@ -0,0 +1,5 @@
+export OS_USERNAME=admin
+export OS_PASSWORD={{ keystone_password.stdout }}
+export OS_TENANT_NAME=admin
+export OS_AUTH_URL=http://keystone:5000/v2.0
+export OS_REGION_NAME=RegionOne