From 48bd378fda4db37b519742bdcf98b6a48f83b594 Mon Sep 17 00:00:00 2001 From: Mustapha Lansana Date: Tue, 27 May 2014 22:02:58 -0400 Subject: 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 --- .../files/conf-templates/ceilometer-template.inc | 19 ++ .../files/conf-templates/ceph-template.inc | 26 ++ .../files/conf-templates/cinder-template.inc | 21 ++ .../deploychef/files/conf-templates/constants.inc | 23 ++ .../files/conf-templates/glance-template.inc | 16 ++ .../files/conf-templates/heat-template.inc | 15 ++ .../files/conf-templates/hosts-template.inc | 10 + .../files/conf-templates/keystone-template.inc | 24 ++ .../files/conf-templates/neutron-template.inc | 24 ++ .../files/conf-templates/nova-template.inc | 47 ++++ .../files/conf-templates/postgresql-template.inc | 12 + .../files/conf-templates/swift-template.inc | 37 +++ .../deploychef/files/generate-templates | 274 +++++++++++++++++++++ 13 files changed, 548 insertions(+) create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/ceilometer-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/ceph-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/cinder-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/constants.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/glance-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/heat-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/hosts-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/keystone-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/neutron-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/nova-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/postgresql-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/conf-templates/swift-template.inc create mode 100644 meta-openstack/recipes-support/deploychef/files/generate-templates 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 @@ +#Ceilometer chefsolo template generation functions + +ceilometer-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/^os_password=.*$/os_password=<%=node[:ADMIN_PASSWORD]%>/" -i $file_name + sed "s/^os_tenant_name=.*$/os_tenant_name= <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name + sed "s/^auth_host=.*$/auth_host=<%=node[:CONTROLLER_IP]%>/" -i $file_name + sed "s/^admin_password=.*$/admin_password= <%=node[:ADMIN_PASSWORD]%>/" -i $file_name + sed "s/^admin_tenant_name=.*$/admin_tenant_name= <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name + + sed "s/^rabbit_host =.*$/rabbit_host = <%=node[:CONTROLLER_IP]%>/" -i $file_name + sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name + sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name + sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} 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 @@ +#!/bin/bash +#Ceph related chefsolo template functions +ceph-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/mon initial members =.*$/mon initial members = <%=node[:HOST_NAME]%> /" -i $file_name + sed "s/mon host =.*$/mon host = <%=node[:PUBLIC_IP]%>/" -i $file_name + + sed "s:public network =.*/:public network = <%=node[\:CONTROLLER_IP]%>/:" -i $file_name + sed "s/mon.$CONTROLLER_HOST/mon.<%=node[:HOST_NAME]%>/" -i $file_name + sed "s/host =.*$/host = <%=node[:HOST_NAME]%>/" -i $file_name + sed "s#mon addr =.*:#mon addr = <%=node[:PUBLIC_IP]%>:#" -i $file_name + sed "s#public addr =.*:#public addr = <%=node[:PUBLIC_IP]%>:#" -i $file_name + sed "s#cluster addr =.*:#cluster addr = <%=node[:PRIVATE_IP]%>:#" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +ceph-setup_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/^HOST_NAME.*$/HOST_NAME= <%=node[:HOST_NAME]%> /" -i $file_name + sed "s/^PUBLIC_IP.*$/PUBLIC_IP= <%=node[:PUBLIC_IP]%>/" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} 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 @@ +#Cinder related configuration functions +cinder-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name + sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +cinder-api_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name + sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name + sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + 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 @@ +#This file is used in the generation of config script +CONTROLLER_HOST="%CONTROLLER_HOST%" +COMPUTE_HOST="%COMPUTE_HOST%" +CONTROLLER_IP="%CONTROLLER_IP%" +COMPUTE_IP="%COMPUTE_IP%" + +DB_USER="%DB_USER%" +DB_PASSWORD="%DB_PASSWORD%" +ADMIN_USER="%ADMIN_USER%" +ADMIN_TENANT_NAME="%ADMIN_PASSWORD%" + +ADMIN_PASSWORD="%ADMIN_PASSWORD%" +SERVICE_PASSWORD="%SERVICE_PASSWORD%" +SERVICE_TENANT_NAME="%SERVICE_TENANT_NAME%" + +SERVICE_USER="%SERVICE_USER%" +SERVICE_TOKEN="%SERVICE_TOKEN%" +DEMO_USER="%DEMO_USER%" +DEMO_PASSWORD="%DEMO_PASSWORD%" + +OS_TENANT_NAME="%OS_TENANT_NAME%" +OS_USERNAME="%OS_USERNAME%" +OS_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 @@ +#Glance related configuration functions +glance_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name + sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name + sed "s/^swift_store_user =.*$/swift_store_user = <%=node[:SERVICE_TENANT_NAME]%>:glance/" -i $file_name + sed "s/^swift_store_key =.*$/swift_store_key = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name + + sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name + sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name + sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} 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 @@ +#Heat related configuration function(s) +heat-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name + sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name + sed "s/^auth_host =.*$/auth_host = <%=node[:CONTROLLER_IP]%> /" -i $file_name + sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name + sed "s/^admin_password =.*$/admin_password = <%=node[:ADMIN_PASSWORD]%> /" -i $file_name + sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + 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 @@ +#Hosts related configuration function(s) +hosts_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$CONTROLLER_IP.*$/<%=node[:CONTROLLER_IP]%> <%=node[:CONTROLLER_HOST]%>/" -i $file_name + sed "s/$COMPUTE_IP*$/<%=node[:COMPUTE_IP]%> <%=node[:COMPUTE_HOST]%>/" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + 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 @@ +#Keystone related configuration functions +keystone-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + #keystone.conf related + sed "s/^admin_token =.*$/admin_token=<%=node[:SERVICE_TOKEN]%> /" -i $file_name + sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name + sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +keystone-identity_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + #Identifyy related substitutions + sed "s/^export OS_SERVICE_TOKEN.*$/export OS_SERVICE_TOKEN=<%=node[:SERVICE_TOKEN]%>/" \ + -i $file_name + sed "s/$ADMIN_PASSWORD/<%=node[:ADMIN_PASSWORD]%>/" -i $file_name + sed "s/$SERVICE_TENANT_NAME/<%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name + sed "s/^KEYSTONE_HOST.*$/KEYSTONE_HOST=<%=node[:CONTROLLER_IP]%> /" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} 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 @@ +#Neutron chefsolo template generation related function(s) +neutron-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name + sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name + sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%>/" -i $file_name + sed "s/^admin_password =.*$/admin_password =<%=node[:SERVICE_PASSWORD]%>/g" -i $file_name + sed "s/^rabbit_host =.*$/rabbit_host = <%=node[:CONTROLLER_IP]%>/" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +neutron-plugins_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name + sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name + sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + 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 @@ +#Nova chefsolo template generation functions +openrc_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/^export OS_TENANT_NAME=.*$/export OS_TENANT_NAME=<%=node[:OS_TENANT_NAME]%> /" -i $file_name + sed "s/^export OS_USERNAME=.*$/export OS_USERNAME=<%=node[:OS_USERNAME]%> /" -i $file_name + sed "s/^export OS_PASSWORD=.*$/export OS_PASSWORD=<%=node[:OS_PASSWORD]%> /" -i $file_name + sed "s/^export SERVICE_TOKEN=.*$/export SERVICE_TOKEN=<%=node[:SERVICE_TOKEN]%> /" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +nova-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + sed "s/$COMPUTE_IP/<%=node[:COMPUTE_IP]%>/g" -i $file_name + sed "s/$DB_USER:/<%=node[:DB_USER]%>:/g" -i $file_name + sed "s/$DB_PASSWORD@/<%=node[:DB_PASSWORD]%>@/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +api-paste_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/auth_host =.*$/auth_host = <%=node[:CONTROLLER_IP]%> /" -i $file_name + sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name + sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name + sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +deploy-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name + sed "s/$CONTROLLER_HOST/<%=node[:CONTROLLER_HOST]%>/g" -i $file_name + sed "s/$COMPUTE_IP/<%=node[:COMPUTE_IP]%>/g" -i $file_name + sed "s/$COMPUTE_HOST/<%=node[:COMPUTE_HOST]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} 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 @@ +#Postgresql chefsolo template generation functions +postgresql_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$CONTROLLER_IP/<%=node[:CONTROLLER_IP]%>/g" -i $file_name + sed "s/$COMPUTE_IP/<%=node[:COMPUTE_IP]%>/g" -i $file_name + sed "s/^DB_USER=.*$/DB_USER=<%=node[:DB_USER]%>/" -i $file_name + sed "s/^DB_PASSWORD=.*$/DB_PASSWORD=<%=node[:DB_PASSWORD]%>/" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + 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 @@ +#Swift chefso template generation functions +dispersion-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/$SERVICE_TENANT_NAME/<%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name + sed "s/$SERVICE_USER/<%=node[:SERVICE_USER]%>/" -i $file_name + sed "s/$SERVICE_PASSWORD/<%=node[:SERVICE_PASSWORD]%>/" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +test-conf_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/^account =.*$/account = <%=node[:ADMIN_TENANT_NAME]%>/" -i $file_name + sed "s/^username =.*$/username = <%=node[:ADMIN_USER]%>/" -i $file_name + sed "s/^password =.*$/password = <%=node[:ADMIN_PASSWORD]%>/g" -i $file_name + + sed "s/^account2 =.*$/account = <%=node[:SERVICE_TENANT_NAME]%>/" -i $file_name + sed "s/^username2 =.*$/username = <%=node[:SERVICE_USER]%>/" -i $file_name + sed "s/^password2 =.*$/password = <%=node[:SERVICE_PASSWORD]%>/g" -i $file_name + + sed "s/^username3 =.*$/username = <%=node[:DEMO_USER]%>/" -i $file_name + sed "s/^password3 =.*$/password = <%=node[:DEMO_PASSWORD]%>/g" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} + +proxy-server_chefsolo_template() { + file_name=$1 + if [ -e $file_name ]; then + sed "s/^admin_tenant_name =.*$/admin_tenant_name = <%=node[:SERVICE_TENANT_NAME]%> /" -i $file_name + sed "s/^admin_user =.*$/admin_user = <%=node[:SERVICE_USER]%> /" -i $file_name + sed "s/^admin_password =.*$/admin_password = <%=node[:SERVICE_PASSWORD]%> /" -i $file_name + mv $file_name $file_name$SUFFIX + fi +} 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 @@ +#!/bin/bash +#Location of servics configuration files +D="%SYSCONFDIR%" +TEMPLATES="%DEPLOYCHEF_ROOT_DIR%/cookbooks/openstack/templates/default" +#Chefsolo template suffix +SUFFIX='.erb' +#List of services whose config files needs to be converted to templates +service_list="ceph swift nova heat cinder keystone glance neutron ceilometer init.d" +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/constants.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/nova-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/ceph-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/swift-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/neutron-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/ceilometer-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/glance-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/postgresql-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/keystone-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/cinder-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/heat-template.inc +source %DEPLOYCHEF_ROOT_DIR%/conf-templates/hosts-template.inc + +SRC="${D}/%POSTINSTS_DIR%/" +DST=${TEMPLATES} +#Copy postinstall scripts and make chefsolo templates +postinsts_make_templates(){ + for file in $(ls -h ${SRC}); do + dst_file=${DST}/$file$SUFFIX + install -m 0644 ${SRC}/$file $dst_file + sed 's|ADMIN_PASSWORD=.*$|ADMIN_PASSWORD=<%=node[:ADMIN_PASSWORD]%> \\|' -i $dst_file + sed 's|SERVICE_PASSWORD=.*$|SERVICE_PASSWORD=<%=node[:SERVICE_PASSWORD]%> \\|' -i $dst_file + sed 's|SERVICE_TENANT_NAME=.*$|SERVICE_TENANT_NAME=<%=node[:SERVICE_TENANT_NAME]%> \\|' -i $dst_file + sed "s|$CONTROLLER_IP|<%=node[:CONTROLLER_IP]%>|g" -i $dst_file + sed "s|$CONTROLLER_HOST|<%=node[:CONTROLLER_HOST]%>|g" -i $dst_file + done +} + +#These sets of make_*_templates() helper functions +#copy the respective configuration files if they +#exist and converts them to chefsolo templates +etc-hosts_make_templates(){ + #Creat template file for /etc/hosts + SRC=${D} + DST=${TEMPLATES} + file_name=hosts + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + hosts_chefsolo_template $file_name +} + +make_ceph_templates(){ + file_name=ceph.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + ceph-conf_chefsolo_template $file_name + fi + file_name=ceph-setup + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/../init.d/$file_name ${DST} + file_name="${DST}/$file_name" + ceph-setup_chefsolo_template $file_name + fi +} + +make_swift_templates(){ + file_name='test.conf' + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + test-conf_chefsolo_template $file_name + fi + + file_name='dispersion.conf' + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + dispersion-conf_chefsolo_template $file_name + fi + file_name='proxy-server.conf' + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + proxy-server_chefsolo_template $file_name + fi +} + +make_nova_templates(){ + file_name=nova.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + nova-conf_chefsolo_template $file_name + fi + file_name=openrc + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + openrc_chefsolo_template $file_name + fi + file_name=api-paste.ini + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + api-paste_chefsolo_template $file_name + fi + + file_name=deploy.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + deploy-conf_chefsolo_template $file_name + fi +} + +make_neutron_templates(){ + file_name=neutron.conf + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + neutron-conf_chefsolo_template $file_name + if [ -d ${SRC}/plugins/openvswitch ]; then + file_name=ovs_neutron_plugin.ini + install -m 0644 ${SRC}/plugins/openvswitch/$file_name ${DST} + file_name="${DST}/$file_name" + neutron-plugins_chefsolo_template $file_name + fi + + if [ -d ${SRC}/plugins/linuxbridge ]; then + file_name=linuxbridge_conf.ini + install -m 0644 ${SRC}/plugins/linuxbridge/$file_name ${DST} + file_name="${DST}/$file_name" + neutron-plugins_chefsolo_template $file_name + fi +} +make_heat_templates(){ + file_name=heat.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + heat-conf_chefsolo_template $file_name + fi +} + +make_cinder_templates(){ + file_name=api-paste.ini + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST}/${file_name}.cinder + file_name="${DST}/${file_name}.cinder" + cinder-api_chefsolo_template $file_name + fi + + file_name=cinder.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + cinder-conf_chefsolo_template $file_name + fi +} +make_keystone_templates(){ + file_name=keystone.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + keystone-conf_chefsolo_template $file_name + fi + file_name=identity.sh + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + keystone-identity_chefsolo_template $file_name + fi +} +make_glance_templates(){ + file_name=glance-api.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + glance_chefsolo_template $file_name + fi + + file_name=glance-cache.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + glance_chefsolo_template $file_name + fi + file_name=glance-registry.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + glance_chefsolo_template $file_name + fi +} + +make_ceilometer_templates(){ + + file_name=ceilometer.conf + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + ceilometer-conf_chefsolo_template $file_name + fi +} + +make_postgresql_templates(){ + + file_name=postgresql-init + if [ -f ${SRC}/$file_name ]; then + install -m 0644 ${SRC}/$file_name ${DST} + file_name="${DST}/$file_name" + postgresql_chefsolo_template $file_name + fi +} + + +#This function installs the config/script files of services +#and converts them into templates. +services-conf_make_templates(){ + for mod in ${service_list}; do + if [ -d ${D}/$mod ]; then + SRC=${D}/$mod + DST=${TEMPLATES} + case $mod in + ceph) + #Copy ceph configuration files and convert them to templates + make_ceph_templates + ;; + swift) + #Copy swift configuration files and convert them into + #chefsolo templates + make_swift_templates + + ;; + nova) + #Copy nova configuration files and convert them into + #chefsolo templates + make_nova_templates + ;; + neutron) + #Copy neutron configuration files and convert them into + #chefsolo templates + make_neutron_templates + ;; + heat) + make_heat_templates + ;; + cinder) + make_cinder_templates + ;; + keystone) + make_keystone_templates + ;; + glance) + #Copy glance configuration files and convert them into + #chefsolo templates + make_glance_templates + ;; + ceilometer) + make_ceilometer_templates + ;; + init.d) + make_postgresql_templates + ;; + *) + ;; + esac + echo "Service present in $mod" + fi + done +} + +install -d ${TEMPLATES} +postinsts_make_templates +etc-hosts_make_templates +services-conf_make_templates -- cgit v1.2.3-54-g00ecf