summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMustapha Lansana <Mustapha.Lansana@windriver.com>2014-05-27 22:02:58 -0400
committerBruce Ashfield <bruce.ashfield@windriver.com>2014-09-26 09:09:21 -0400
commit48bd378fda4db37b519742bdcf98b6a48f83b594 (patch)
tree399306667c5de33d5fac1b311f53e91150f9b88e
parent800f64a64014fdbe046a6d0969303057de2e6539 (diff)
downloadmeta-cloud-services-48bd378fda4db37b519742bdcf98b6a48f83b594.tar.gz
deploychef: make chef-solo templates for openstack services
The deploychef package enables us to reconfigure an openstack installation at run-time. It does this with the help of chef-solo, by first creating a set of template files from openstack services' configuration files. The template files are then passed on to chef-solo at run-time. Finally, chef-solo recreates the services' configuration files from the template files at run-time; this enables us to reconfigure openstack services with dynamic run-time environment variables. This patch set consist of files with helper functions which enables deploychef to recreate the template files for the respective openstack services. Later on in this commit series, the files in this patch set will be deleted, because the functionality they provide will be provided by openstackchef class. Signed-off-by: Mustapha Lansana <Mustapha.Lansana@windriver.com>
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/ceilometer-template.inc19
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/ceph-template.inc26
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/cinder-template.inc21
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/constants.inc23
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/glance-template.inc16
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/heat-template.inc15
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/hosts-template.inc10
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/keystone-template.inc24
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/neutron-template.inc24
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/nova-template.inc47
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/postgresql-template.inc12
-rw-r--r--meta-openstack/recipes-support/deploychef/files/conf-templates/swift-template.inc37
-rw-r--r--meta-openstack/recipes-support/deploychef/files/generate-templates274
13 files changed, 548 insertions, 0 deletions
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/ceilometer-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/ceilometer-template.inc
new file mode 100644
index 0000000..471ef1e
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/ceilometer-template.inc
@@ -0,0 +1,19 @@
1#Ceilometer chefsolo template generation functions
2
3ceilometer-conf_chefsolo_template() {
4 file_name=$1
5 if [ -e $file_name ]; then
6 sed "s/^os_password=.*$/os_password=<%=node[:ADMIN_PASSWORD]%>/" -i $file_name
7 sed "s/^os_tenant_name=.*$/os_tenant_name= <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name
8 sed "s/^auth_host=.*$/auth_host=<%=node[:CONTROLLER_IP]%>/" -i $file_name
9 sed "s/^admin_password=.*$/admin_password= <%=node[:ADMIN_PASSWORD]%>/" -i $file_name
10 sed "s/^admin_tenant_name=.*$/admin_tenant_name= <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name
11
12 sed "s/^rabbit_host =.*$/rabbit_host = <%=node[:CONTROLLER_IP]%>/" -i $file_name
13 sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name
14 sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name
15 sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name
16 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
17 mv $file_name $file_name$SUFFIX
18 fi
19}
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/ceph-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/ceph-template.inc
new file mode 100644
index 0000000..2946808
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/ceph-template.inc
@@ -0,0 +1,26 @@
1#!/bin/bash
2#Ceph related chefsolo template functions
3ceph-conf_chefsolo_template() {
4 file_name=$1
5 if [ -e $file_name ]; then
6 sed "s/mon initial members =.*$/mon initial members = <%=node[:HOST_NAME]%> /" -i $file_name
7 sed "s/mon host =.*$/mon host = <%=node[:PUBLIC_IP]%>/" -i $file_name
8
9 sed "s:public network =.*/:public network = <%=node[\:CONTROLLER_IP]%>/:" -i $file_name
10 sed "s/mon.$CONTROLLER_HOST/mon.<%=node[:HOST_NAME]%>/" -i $file_name
11 sed "s/host =.*$/host = <%=node[:HOST_NAME]%>/" -i $file_name
12 sed "s#mon addr =.*:#mon addr = <%=node[:PUBLIC_IP]%>:#" -i $file_name
13 sed "s#public addr =.*:#public addr = <%=node[:PUBLIC_IP]%>:#" -i $file_name
14 sed "s#cluster addr =.*:#cluster addr = <%=node[:PRIVATE_IP]%>:#" -i $file_name
15 mv $file_name $file_name$SUFFIX
16 fi
17}
18
19ceph-setup_chefsolo_template() {
20 file_name=$1
21 if [ -e $file_name ]; then
22 sed "s/^HOST_NAME.*$/HOST_NAME= <%=node[:HOST_NAME]%> /" -i $file_name
23 sed "s/^PUBLIC_IP.*$/PUBLIC_IP= <%=node[:PUBLIC_IP]%>/" -i $file_name
24 mv $file_name $file_name$SUFFIX
25 fi
26}
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/cinder-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/cinder-template.inc
new file mode 100644
index 0000000..4aeb616
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/cinder-template.inc
@@ -0,0 +1,21 @@
1#Cinder related configuration functions
2cinder-conf_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name
6 sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name
7 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
8 mv $file_name $file_name$SUFFIX
9 fi
10}
11
12cinder-api_chefsolo_template() {
13 file_name=$1
14 if [ -e $file_name ]; then
15 sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name
16 sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name
17 sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name
18 mv $file_name $file_name$SUFFIX
19 fi
20}
21
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/constants.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/constants.inc
new file mode 100644
index 0000000..48994d3
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/constants.inc
@@ -0,0 +1,23 @@
1#This file is used in the generation of config script
2CONTROLLER_HOST="%CONTROLLER_HOST%"
3COMPUTE_HOST="%COMPUTE_HOST%"
4CONTROLLER_IP="%CONTROLLER_IP%"
5COMPUTE_IP="%COMPUTE_IP%"
6
7DB_USER="%DB_USER%"
8DB_PASSWORD="%DB_PASSWORD%"
9ADMIN_USER="%ADMIN_USER%"
10ADMIN_TENANT_NAME="%ADMIN_PASSWORD%"
11
12ADMIN_PASSWORD="%ADMIN_PASSWORD%"
13SERVICE_PASSWORD="%SERVICE_PASSWORD%"
14SERVICE_TENANT_NAME="%SERVICE_TENANT_NAME%"
15
16SERVICE_USER="%SERVICE_USER%"
17SERVICE_TOKEN="%SERVICE_TOKEN%"
18DEMO_USER="%DEMO_USER%"
19DEMO_PASSWORD="%DEMO_PASSWORD%"
20
21OS_TENANT_NAME="%OS_TENANT_NAME%"
22OS_USERNAME="%OS_USERNAME%"
23OS_PASSWORD="%OS_PASSWORD%"
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/glance-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/glance-template.inc
new file mode 100644
index 0000000..cbf3264
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/glance-template.inc
@@ -0,0 +1,16 @@
1#Glance related configuration functions
2glance_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name
6 sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name
7 sed "s/^swift_store_user =.*$/swift_store_user = <%=node[:SERVICE_TENANT_NAME]%>:glance/" -i $file_name
8 sed "s/^swift_store_key =.*$/swift_store_key = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name
9
10 sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name
11 sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name
12 sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name
13 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
14 mv $file_name $file_name$SUFFIX
15 fi
16}
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/heat-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/heat-template.inc
new file mode 100644
index 0000000..578d2e7
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/heat-template.inc
@@ -0,0 +1,15 @@
1#Heat related configuration function(s)
2heat-conf_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name
6 sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name
7 sed "s/^auth_host =.*$/auth_host = <%=node[:CONTROLLER_IP]%> /" -i $file_name
8 sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name
9 sed "s/^admin_password =.*$/admin_password = <%=node[:ADMIN_PASSWORD]%> /" -i $file_name
10 sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name
11 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
12 mv $file_name $file_name$SUFFIX
13 fi
14}
15
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/hosts-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/hosts-template.inc
new file mode 100644
index 0000000..b7690b8
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/hosts-template.inc
@@ -0,0 +1,10 @@
1#Hosts related configuration function(s)
2hosts_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/$CONTROLLER_IP.*$/<%=node[:CONTROLLER_IP]%> <%=node[:CONTROLLER_HOST]%>/" -i $file_name
6 sed "s/$COMPUTE_IP*$/<%=node[:COMPUTE_IP]%> <%=node[:COMPUTE_HOST]%>/" -i $file_name
7 mv $file_name $file_name$SUFFIX
8 fi
9}
10
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/keystone-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/keystone-template.inc
new file mode 100644
index 0000000..dc43639
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/keystone-template.inc
@@ -0,0 +1,24 @@
1#Keystone related configuration functions
2keystone-conf_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 #keystone.conf related
6 sed "s/^admin_token =.*$/admin_token=<%=node[:SERVICE_TOKEN]%> /" -i $file_name
7 sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name
8 sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name
9 mv $file_name $file_name$SUFFIX
10 fi
11}
12
13keystone-identity_chefsolo_template() {
14 file_name=$1
15 if [ -e $file_name ]; then
16 #Identifyy related substitutions
17 sed "s/^export OS_SERVICE_TOKEN.*$/export OS_SERVICE_TOKEN=<%=node[:SERVICE_TOKEN]%>/" \
18 -i $file_name
19 sed "s/$ADMIN_PASSWORD/<%=node[:ADMIN_PASSWORD]%>/" -i $file_name
20 sed "s/$SERVICE_TENANT_NAME/<%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name
21 sed "s/^KEYSTONE_HOST.*$/KEYSTONE_HOST=<%=node[:CONTROLLER_IP]%> /" -i $file_name
22 mv $file_name $file_name$SUFFIX
23 fi
24}
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/neutron-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/neutron-template.inc
new file mode 100644
index 0000000..4d10607
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/neutron-template.inc
@@ -0,0 +1,24 @@
1#Neutron chefsolo template generation related function(s)
2neutron-conf_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name
6 sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name
7 sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%>/" -i $file_name
8 sed "s/^admin_password =.*$/admin_password =<%=node[:SERVICE_PASSWORD]%>/g" -i $file_name
9 sed "s/^rabbit_host =.*$/rabbit_host = <%=node[:CONTROLLER_IP]%>/" -i $file_name
10 mv $file_name $file_name$SUFFIX
11 fi
12}
13
14neutron-plugins_chefsolo_template() {
15 file_name=$1
16 if [ -e $file_name ]; then
17 sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name
18 sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name
19 sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name
20 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
21 mv $file_name $file_name$SUFFIX
22 fi
23}
24
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/nova-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/nova-template.inc
new file mode 100644
index 0000000..74b0d4c
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/nova-template.inc
@@ -0,0 +1,47 @@
1#Nova chefsolo template generation functions
2openrc_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/^export OS_TENANT_NAME=.*$/export OS_TENANT_NAME=<%=node[:OS_TENANT_NAME]%> /" -i $file_name
6 sed "s/^export OS_USERNAME=.*$/export OS_USERNAME=<%=node[:OS_USERNAME]%> /" -i $file_name
7 sed "s/^export OS_PASSWORD=.*$/export OS_PASSWORD=<%=node[:OS_PASSWORD]%> /" -i $file_name
8 sed "s/^export SERVICE_TOKEN=.*$/export SERVICE_TOKEN=<%=node[:SERVICE_TOKEN]%> /" -i $file_name
9 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
10 mv $file_name $file_name$SUFFIX
11 fi
12}
13
14nova-conf_chefsolo_template() {
15 file_name=$1
16 if [ -e $file_name ]; then
17 sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name
18 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
19 sed "s/$COMPUTE_IP/<%=node[:COMPUTE_IP]%>/g" -i $file_name
20 sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name
21 sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name
22 mv $file_name $file_name$SUFFIX
23 fi
24}
25
26api-paste_chefsolo_template() {
27 file_name=$1
28 if [ -e $file_name ]; then
29 sed "s/auth_host =.*$/auth_host = <%=node[:CONTROLLER_IP]%> /" -i $file_name
30 sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name
31 sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name
32 sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name
33 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
34 mv $file_name $file_name$SUFFIX
35 fi
36}
37
38deploy-conf_chefsolo_template() {
39 file_name=$1
40 if [ -e $file_name ]; then
41 sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name
42 sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name
43 sed "s/$COMPUTE_IP/<%=node[:COMPUTE_IP]%>/g" -i $file_name
44 sed "s/$COMPUTE_HOST/<%=node[:COMPUTE_HOST]%>/g" -i $file_name
45 mv $file_name $file_name$SUFFIX
46 fi
47}
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/postgresql-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/postgresql-template.inc
new file mode 100644
index 0000000..6022cd2
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/postgresql-template.inc
@@ -0,0 +1,12 @@
1#Postgresql chefsolo template generation functions
2postgresql_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name
6 sed "s/$COMPUTE_IP/<%=node[:COMPUTE_IP]%>/g" -i $file_name
7 sed "s/^DB_USER=.*$/DB_USER=<%=node[:DB_USER]%>/" -i $file_name
8 sed "s/^DB_PASSWORD=.*$/DB_PASSWORD=<%=node[:DB_PASSWORD]%>/" -i $file_name
9 mv $file_name $file_name$SUFFIX
10 fi
11}
12
diff --git a/meta-openstack/recipes-support/deploychef/files/conf-templates/swift-template.inc b/meta-openstack/recipes-support/deploychef/files/conf-templates/swift-template.inc
new file mode 100644
index 0000000..4a33536
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/conf-templates/swift-template.inc
@@ -0,0 +1,37 @@
1#Swift chefso template generation functions
2dispersion-conf_chefsolo_template() {
3 file_name=$1
4 if [ -e $file_name ]; then
5 sed "s/$SERVICE_TENANT_NAME/<%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name
6 sed "s/$SERVICE_USER/<%=node[:SERVICE_USER]%>/" -i $file_name
7 sed "s/$SERVICE_PASSWORD/<%=node[:SERVICE_PASSWORD]%>/" -i $file_name
8 mv $file_name $file_name$SUFFIX
9 fi
10}
11
12test-conf_chefsolo_template() {
13 file_name=$1
14 if [ -e $file_name ]; then
15 sed "s/^account =.*$/account = <%=node[:ADMIN_TENANT_NAME]%>/" -i $file_name
16 sed "s/^username =.*$/username = <%=node[:ADMIN_USER]%>/" -i $file_name
17 sed "s/^password =.*$/password = <%=node[:ADMIN_PASSWORD]%>/g" -i $file_name
18
19 sed "s/^account2 =.*$/account = <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name
20 sed "s/^username2 =.*$/username = <%=node[:SERVICE_USER]%>/" -i $file_name
21 sed "s/^password2 =.*$/password = <%=node[:SERVICE_PASSWORD]%>/g" -i $file_name
22
23 sed "s/^username3 =.*$/username = <%=node[:DEMO_USER]%>/" -i $file_name
24 sed "s/^password3 =.*$/password = <%=node[:DEMO_PASSWORD]%>/g" -i $file_name
25 mv $file_name $file_name$SUFFIX
26 fi
27}
28
29proxy-server_chefsolo_template() {
30 file_name=$1
31 if [ -e $file_name ]; then
32 sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name
33 sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name
34 sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name
35 mv $file_name $file_name$SUFFIX
36 fi
37}
diff --git a/meta-openstack/recipes-support/deploychef/files/generate-templates b/meta-openstack/recipes-support/deploychef/files/generate-templates
new file mode 100644
index 0000000..178c8c3
--- /dev/null
+++ b/meta-openstack/recipes-support/deploychef/files/generate-templates
@@ -0,0 +1,274 @@
1#!/bin/bash
2#Location of servics configuration files
3D="%SYSCONFDIR%"
4TEMPLATES="%DEPLOYCHEF_ROOT_DIR%/cookbooks/openstack/templates/default"
5#Chefsolo template suffix
6SUFFIX='.erb'
7#List of services whose config files needs to be converted to templates
8service_list="ceph swift nova heat cinder keystone glance neutron ceilometer init.d"
9source %DEPLOYCHEF_ROOT_DIR%/conf-templates/constants.inc
10source %DEPLOYCHEF_ROOT_DIR%/conf-templates/nova-template.inc
11source %DEPLOYCHEF_ROOT_DIR%/conf-templates/ceph-template.inc
12source %DEPLOYCHEF_ROOT_DIR%/conf-templates/swift-template.inc
13source %DEPLOYCHEF_ROOT_DIR%/conf-templates/neutron-template.inc
14source %DEPLOYCHEF_ROOT_DIR%/conf-templates/ceilometer-template.inc
15source %DEPLOYCHEF_ROOT_DIR%/conf-templates/glance-template.inc
16source %DEPLOYCHEF_ROOT_DIR%/conf-templates/postgresql-template.inc
17source %DEPLOYCHEF_ROOT_DIR%/conf-templates/keystone-template.inc
18source %DEPLOYCHEF_ROOT_DIR%/conf-templates/cinder-template.inc
19source %DEPLOYCHEF_ROOT_DIR%/conf-templates/heat-template.inc
20source %DEPLOYCHEF_ROOT_DIR%/conf-templates/hosts-template.inc
21
22SRC="${D}/%POSTINSTS_DIR%/"
23DST=${TEMPLATES}
24#Copy postinstall scripts and make chefsolo templates
25postinsts_make_templates(){
26 for file in $(ls -h ${SRC}); do
27 dst_file=${DST}/$file$SUFFIX
28 install -m 0644 ${SRC}/$file $dst_file
29 sed 's|ADMIN_PASSWORD=.*$|ADMIN_PASSWORD=<%=node[:ADMIN_PASSWORD]%> \\|' -i $dst_file
30 sed 's|SERVICE_PASSWORD=.*$|SERVICE_PASSWORD=<%=node[:SERVICE_PASSWORD]%> \\|' -i $dst_file
31 sed 's|SERVICE_TENANT_NAME=.*$|SERVICE_TENANT_NAME=<%=node[:SERVICE_TENANT_NAME]%> \\|' -i $dst_file
32 sed "s|$CONTROLLER_IP|<%=node[:CONTROLLER_IP]%>|g" -i $dst_file
33 sed "s|$CONTROLLER_HOST|<%=node[:CONTROLLER_HOST]%>|g" -i $dst_file
34 done
35}
36
37#These sets of make_*_templates() helper functions
38#copy the respective configuration files if they
39#exist and converts them to chefsolo templates
40etc-hosts_make_templates(){
41 #Creat template file for /etc/hosts
42 SRC=${D}
43 DST=${TEMPLATES}
44 file_name=hosts
45 install -m 0644 ${SRC}/$file_name ${DST}
46 file_name="${DST}/$file_name"
47 hosts_chefsolo_template $file_name
48}
49
50make_ceph_templates(){
51 file_name=ceph.conf
52 if [ -f ${SRC}/$file_name ]; then
53 install -m 0644 ${SRC}/$file_name ${DST}
54 file_name="${DST}/$file_name"
55 ceph-conf_chefsolo_template $file_name
56 fi
57 file_name=ceph-setup
58 if [ -f ${SRC}/$file_name ]; then
59 install -m 0644 ${SRC}/../init.d/$file_name ${DST}
60 file_name="${DST}/$file_name"
61 ceph-setup_chefsolo_template $file_name
62 fi
63}
64
65make_swift_templates(){
66 file_name='test.conf'
67 if [ -f ${SRC}/$file_name ]; then
68 install -m 0644 ${SRC}/$file_name ${DST}
69 file_name="${DST}/$file_name"
70 test-conf_chefsolo_template $file_name
71 fi
72
73 file_name='dispersion.conf'
74 if [ -f ${SRC}/$file_name ]; then
75 install -m 0644 ${SRC}/$file_name ${DST}
76 file_name="${DST}/$file_name"
77 dispersion-conf_chefsolo_template $file_name
78 fi
79 file_name='proxy-server.conf'
80 if [ -f ${SRC}/$file_name ]; then
81 install -m 0644 ${SRC}/$file_name ${DST}
82 file_name="${DST}/$file_name"
83 proxy-server_chefsolo_template $file_name
84 fi
85}
86
87make_nova_templates(){
88 file_name=nova.conf
89 if [ -f ${SRC}/$file_name ]; then
90 install -m 0644 ${SRC}/$file_name ${DST}
91 file_name="${DST}/$file_name"
92 nova-conf_chefsolo_template $file_name
93 fi
94 file_name=openrc
95 if [ -f ${SRC}/$file_name ]; then
96 install -m 0644 ${SRC}/$file_name ${DST}
97 file_name="${DST}/$file_name"
98 openrc_chefsolo_template $file_name
99 fi
100 file_name=api-paste.ini
101 if [ -f ${SRC}/$file_name ]; then
102 install -m 0644 ${SRC}/$file_name ${DST}
103 file_name="${DST}/$file_name"
104 api-paste_chefsolo_template $file_name
105 fi
106
107 file_name=deploy.conf
108 if [ -f ${SRC}/$file_name ]; then
109 install -m 0644 ${SRC}/$file_name ${DST}
110 file_name="${DST}/$file_name"
111 deploy-conf_chefsolo_template $file_name
112 fi
113}
114
115make_neutron_templates(){
116 file_name=neutron.conf
117 install -m 0644 ${SRC}/$file_name ${DST}
118 file_name="${DST}/$file_name"
119 neutron-conf_chefsolo_template $file_name
120 if [ -d ${SRC}/plugins/openvswitch ]; then
121 file_name=ovs_neutron_plugin.ini
122 install -m 0644 ${SRC}/plugins/openvswitch/$file_name ${DST}
123 file_name="${DST}/$file_name"
124 neutron-plugins_chefsolo_template $file_name
125 fi
126
127 if [ -d ${SRC}/plugins/linuxbridge ]; then
128 file_name=linuxbridge_conf.ini
129 install -m 0644 ${SRC}/plugins/linuxbridge/$file_name ${DST}
130 file_name="${DST}/$file_name"
131 neutron-plugins_chefsolo_template $file_name
132 fi
133}
134make_heat_templates(){
135 file_name=heat.conf
136 if [ -f ${SRC}/$file_name ]; then
137 install -m 0644 ${SRC}/$file_name ${DST}
138 file_name="${DST}/$file_name"
139 heat-conf_chefsolo_template $file_name
140 fi
141}
142
143make_cinder_templates(){
144 file_name=api-paste.ini
145 if [ -f ${SRC}/$file_name ]; then
146 install -m 0644 ${SRC}/$file_name ${DST}/${file_name}.cinder
147 file_name="${DST}/${file_name}.cinder"
148 cinder-api_chefsolo_template $file_name
149 fi
150
151 file_name=cinder.conf
152 if [ -f ${SRC}/$file_name ]; then
153 install -m 0644 ${SRC}/$file_name ${DST}
154 file_name="${DST}/$file_name"
155 cinder-conf_chefsolo_template $file_name
156 fi
157}
158make_keystone_templates(){
159 file_name=keystone.conf
160 if [ -f ${SRC}/$file_name ]; then
161 install -m 0644 ${SRC}/$file_name ${DST}
162 file_name="${DST}/$file_name"
163 keystone-conf_chefsolo_template $file_name
164 fi
165 file_name=identity.sh
166 if [ -f ${SRC}/$file_name ]; then
167 install -m 0644 ${SRC}/$file_name ${DST}
168 file_name="${DST}/$file_name"
169 keystone-identity_chefsolo_template $file_name
170 fi
171}
172make_glance_templates(){
173 file_name=glance-api.conf
174 if [ -f ${SRC}/$file_name ]; then
175 install -m 0644 ${SRC}/$file_name ${DST}
176 file_name="${DST}/$file_name"
177 glance_chefsolo_template $file_name
178 fi
179
180 file_name=glance-cache.conf
181 if [ -f ${SRC}/$file_name ]; then
182 install -m 0644 ${SRC}/$file_name ${DST}
183 file_name="${DST}/$file_name"
184 glance_chefsolo_template $file_name
185 fi
186 file_name=glance-registry.conf
187 if [ -f ${SRC}/$file_name ]; then
188 install -m 0644 ${SRC}/$file_name ${DST}
189 file_name="${DST}/$file_name"
190 glance_chefsolo_template $file_name
191 fi
192}
193
194make_ceilometer_templates(){
195
196 file_name=ceilometer.conf
197 if [ -f ${SRC}/$file_name ]; then
198 install -m 0644 ${SRC}/$file_name ${DST}
199 file_name="${DST}/$file_name"
200 ceilometer-conf_chefsolo_template $file_name
201 fi
202}
203
204make_postgresql_templates(){
205
206 file_name=postgresql-init
207 if [ -f ${SRC}/$file_name ]; then
208 install -m 0644 ${SRC}/$file_name ${DST}
209 file_name="${DST}/$file_name"
210 postgresql_chefsolo_template $file_name
211 fi
212}
213
214
215#This function installs the config/script files of services
216#and converts them into templates.
217services-conf_make_templates(){
218 for mod in ${service_list}; do
219 if [ -d ${D}/$mod ]; then
220 SRC=${D}/$mod
221 DST=${TEMPLATES}
222 case $mod in
223 ceph)
224 #Copy ceph configuration files and convert them to templates
225 make_ceph_templates
226 ;;
227 swift)
228 #Copy swift configuration files and convert them into
229 #chefsolo templates
230 make_swift_templates
231
232 ;;
233 nova)
234 #Copy nova configuration files and convert them into
235 #chefsolo templates
236 make_nova_templates
237 ;;
238 neutron)
239 #Copy neutron configuration files and convert them into
240 #chefsolo templates
241 make_neutron_templates
242 ;;
243 heat)
244 make_heat_templates
245 ;;
246 cinder)
247 make_cinder_templates
248 ;;
249 keystone)
250 make_keystone_templates
251 ;;
252 glance)
253 #Copy glance configuration files and convert them into
254 #chefsolo templates
255 make_glance_templates
256 ;;
257 ceilometer)
258 make_ceilometer_templates
259 ;;
260 init.d)
261 make_postgresql_templates
262 ;;
263 *)
264 ;;
265 esac
266 echo "Service present in $mod"
267 fi
268 done
269}
270
271install -d ${TEMPLATES}
272postinsts_make_templates
273etc-hosts_make_templates
274services-conf_make_templates