tripleo-quickstart-extras/roles/undercloud-deploy/templates/undercloud-deploy.sh.j2

138 lines
4.9 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 %}
--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 %}
--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
## ::
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