Files
tripleo-quickstart-extras/roles/undercloud-deploy/templates/undercloud-deploy.sh.j2
Bogdan Dobrelya 54e54f043a Allow custom undercloud roles files for images prepare
Add custom_undercloud_roles_data. Defaults to t-h-t's
/roles_data_undercloud.yaml. Defines a custom undercloud roles
data file which should be taken into account when
preparing docker images for containerized undercloud services
deployment. The default can not be changed yet as it is hardcoded
in the tripleo client.

Related-bug: #1693448

Change-Id: I38bd7beefa59ef56f6f4df91715a808d4b8c228e
Signed-off-by: Bogdan Dobrelya <bdobreli@redhat.com>
2017-09-22 11:56:59 +02:00

143 lines
5.1 KiB
Django/Jinja

#!/bin/bash
set -eux
### --start_docs
## Deploying the undercloud
## ========================
## ::
## * Export the required environment variables.
## ::
{% for var in (undercloud_env_vars|default([])) %}
export {{ var }}
{% endfor %}
## * Create the parameters for the deployment.
## ::
cat > {{ working_dir }}/custom_undercloud_deploy.yaml << EOF_CAT
# custom undercloud deployment parameters from heat
# NOTE: many of these live in t-h-t in:
# extraconfig/post_deploy/undercloud_post.yaml
resource_registry:
OS::TripleO::Undercloud::Net::SoftwareConfig: {{overcloud_templates_path}}/net-config-noop.yaml
parameter_defaults:
UndercloudNetworkCidr: {{undercloud_network_cidr}}
UndercloudDhcpRangeStart: {{undercloud_dhcp_start|default(
undercloud_network_cidr|nthhost(5))}}
UndercloudDhcpRangeEnd: {{undercloud_dhcp_end|default(
undercloud_network_cidr|nthhost(30))}}
UndercloudNetworkGateway: {{undercloud_network_gateway|default(
undercloud_network_cidr|nthhost(1))}}
{% if undercloud_undercloud_nameservers is string %}
UndercloudNameserver: {{undercloud_undercloud_nameservers.split(',')[0]}}
{% elif undercloud_undercloud_nameservers is sequence %}
UndercloudNameserver: {{undercloud_undercloud_nameservers[-1]}}
{% endif %}
NeutronServicePlugins: ""
EOF_CAT
## * Update requested packages.
## ::
{% if undercloud_update_packages | default(false) %}
sudo yum update -y {{ undercloud_update_packages }}
{% endif %}
## * Start the required services.
## ::
sudo systemctl start openvswitch
sudo systemctl start docker #FIXME: do these in the installer?
## * Update the puppet modules or install custom modules.
## NOTE: breaks installed packages, is a pure hack in for dev envs only!
## ::
# Amend "foo/bar" and uncomment as needed:
#puppet module install foo/bar || puppet module upgrade foo/bar
#MODULE_PATH="{{ working_dir }}/.puppet/code/modules"
#rm -rf "${MODULE_PATH}/bar"
#mkdir -p "${MODULE_PATH}"
#cd "${MODULE_PATH}"
#git clone -b dev https://github.com/foo/puppet-bar bar
# Copy installed/cloned modules and make a symlink
#sudo rsync -avxH "${MODULE_PATH}" /usr/share/openstack-puppet/
sudo mkdir -p /etc/puppet/modules/
sudo ln -f -s /usr/share/openstack-puppet/modules/* /etc/puppet/modules/
## * Configure the undercloud containers default parameters
## ::
{% if undercloud_docker_registry_host is defined %}
openstack overcloud container image prepare \
--env-file {{ working_dir }}/undercloud-containers-default-parameters.yaml \
{% if containerized_undercloud|bool %}
-e {{overcloud_templates_path}}/environments/services-docker/ironic.yaml \
-e {{overcloud_templates_path}}/environments/services-docker/mistral.yaml \
-e {{overcloud_templates_path}}/environments/services-docker/zaqar.yaml \
-e {{overcloud_templates_path}}/environments/docker.yaml \
{% endif %}
-r {{undercloud_roles_data}} \
--namespace {{ undercloud_docker_registry_host }}:{{ undercloud_docker_registry_port }}/{{ undercloud_docker_registry_namespace }}
{% if undercloud_docker_registry_insecure|bool %}
echo " DockerInsecureRegistryAddress: {{ undercloud_docker_registry_host }}:{{ undercloud_docker_registry_port }}" >> \
{{ working_dir }}/undercloud-containers-default-parameters.yaml
{% endif %}
{% else %}
openstack overcloud container image prepare \
{% if containerized_undercloud|bool %}
-e {{overcloud_templates_path}}/environments/services-docker/ironic.yaml \
-e {{overcloud_templates_path}}/environments/services-docker/mistral.yaml \
-e {{overcloud_templates_path}}/environments/services-docker/zaqar.yaml \
-e {{overcloud_templates_path}}/environments/docker.yaml \
{% endif %}
-r {{undercloud_roles_data}} \
--env-file {{ working_dir }}/undercloud-containers-default-parameters.yaml
{% endif %}
echo "============================="
echo "Undercloud containers default parameters:"
cat {{ working_dir }}/undercloud-containers-default-parameters.yaml
echo "============================="
## * Set the local ip used for the undercloud install
## ::
undercloud_local_ip={{ hostvars['undercloud'].undercloud_ip }}
## * Deploy the undercloud
## ::
# TODO(bogdando) add '-r {{undercloud_roles_data}}' once the client
# starts supporting 'openstack undercloud deploy -r' option.
sudo openstack undercloud deploy \
--templates={{overcloud_templates_path}} \
--local-ip=$undercloud_local_ip \
-e {{ working_dir }}/custom_undercloud_deploy.yaml \
{% if containerized_undercloud|bool %}
-e {{overcloud_templates_path}}/environments/services-docker/ironic.yaml \
-e {{overcloud_templates_path}}/environments/services-docker/mistral.yaml \
-e {{overcloud_templates_path}}/environments/services-docker/zaqar.yaml \
-e {{overcloud_templates_path}}/environments/docker.yaml \
-e {{ working_dir }}/undercloud-containers-default-parameters.yaml \
{% endif %}
{{ undercloud_extra_args }} \
-e {{ working_dir }}/hieradata-overrides-t-h-t-undercloud.yaml
## * Copy the Openstack credentials file to the non root user.
## ::
sudo cp /root/stackrc {{ working_dir }}/stackrc
sudo chown {{ undercloud_user }}:{{ undercloud_user }} {{ working_dir }}/stackrc
### --stop_docs