From 7a9676908fa9e6ec814f8cbe12f86162864ec436 Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Tue, 11 Jun 2019 10:38:42 +1200 Subject: [PATCH] Support direct provisioning of bare metal If `baremetal_provision` is `true`, deploy baremetal with "openstack overcloud node provision" and deployed-server, instead of with heat/nova. Change-Id: I57893a64f4c3224ffe8bd12330f12bd9d3cbbf89 Blueprint: nova-less-deploy --- roles/extras-common/README.md | 3 +++ roles/extras-common/defaults/main.yml | 6 ++++++ roles/overcloud-deploy/tasks/create-scripts.yml | 6 ++++++ roles/overcloud-deploy/tasks/pre-deploy.yml | 15 +++++++++++++++ .../templates/overcloud-deploy.sh.j2 | 6 ++++++ .../templates/overcloud_baremetal_deploy.yaml.j2 | 11 +++++++++++ roles/undercloud-deploy/README.md | 1 - roles/undercloud-deploy/defaults/main.yml | 1 - .../templates/undercloud-sanity-check.sh.j2 | 2 ++ 9 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 roles/overcloud-deploy/templates/overcloud_baremetal_deploy.yaml.j2 diff --git a/roles/extras-common/README.md b/roles/extras-common/README.md index 6a2faaf27..708a16c40 100644 --- a/roles/extras-common/README.md +++ b/roles/extras-common/README.md @@ -43,3 +43,6 @@ Role Variables - `composable_scenario`: <''> -- path to the composable scenarios used at deployment time - `upgrade_composable_scenario`: <''> -- path to the composable scenarios used at upgrade time - `undercloud_rpm_dependencies`: <'python-tripleoclient'> -- Dependency packages for undercloud deployments. +- `baremetal_provision`: Deploy baremetal with "openstack overcloud node provision" and deployed-server, instead of with heat/nova +- `undercloud_enable_nova`: -- sets up the 'enable_nova' + option in undercloud.conf. \ No newline at end of file diff --git a/roles/extras-common/defaults/main.yml b/roles/extras-common/defaults/main.yml index 2f2dfea62..ea4182f74 100644 --- a/roles/extras-common/defaults/main.yml +++ b/roles/extras-common/defaults/main.yml @@ -84,3 +84,9 @@ validate_performance: true # If `validate_services` is `true`, run the validate-services role validate_services: false + +# If `baremetal_provision` is `true`, deploy baremetal with "openstack overcloud node provision" and deployed-server, instead of with heat/nova +baremetal_provision: false + +# If `undercloud_enable_nova` is `true`, the undercloud will have running glance and nova services +undercloud_enable_nova: true diff --git a/roles/overcloud-deploy/tasks/create-scripts.yml b/roles/overcloud-deploy/tasks/create-scripts.yml index 4184de0ed..dd8d0f52a 100644 --- a/roles/overcloud-deploy/tasks/create-scripts.yml +++ b/roles/overcloud-deploy/tasks/create-scripts.yml @@ -59,6 +59,12 @@ dest: "{{ working_dir }}/overcloud-topology-config.yaml" when: topology_map is defined +- name: Create overcloud baremetal deploy yaml + template: + src: "overcloud_baremetal_deploy.yaml.j2" + dest: "{{ working_dir }}/overcloud_baremetal_deploy.yaml" + when: baremetal_provision|bool and topology_map is defined + - name: Cloud names heat environment when: release not in ['mitaka', 'liberty'] template: diff --git a/roles/overcloud-deploy/tasks/pre-deploy.yml b/roles/overcloud-deploy/tasks/pre-deploy.yml index 9bc889731..9b7b21a3e 100644 --- a/roles/overcloud-deploy/tasks/pre-deploy.yml +++ b/roles/overcloud-deploy/tasks/pre-deploy.yml @@ -244,8 +244,23 @@ -e {{ overcloud_templates_path }}/environments/deployed-server-bootstrap-environment-centos.yaml {% endif %} --overcloud-ssh-user {{ undercloud_user }} + {% if not undercloud_enable_nova|bool %} + --deployed-server + {% endif %} when: deploy_multinode|bool +- name: set the baremetal provision args + set_fact: + hypervisor_wait: false + multinode_args: >- + -e {{ overcloud_templates_path }}/environments/deployed-server-environment.yaml + {% if release not in ['mitaka', 'newton'] and overcloud_release|default('') not in ['newton', 'mitaka'] %} + -e {{ overcloud_templates_path }}/environments/deployed-server-bootstrap-environment-centos.yaml + {% endif %} + -e {{ working_dir }}/overcloud-baremetal-deployed.yaml + --deployed-server + when: baremetal_provision|bool + - name: set the OVN args set_fact: ovn_args: >- diff --git a/roles/overcloud-deploy/templates/overcloud-deploy.sh.j2 b/roles/overcloud-deploy/templates/overcloud-deploy.sh.j2 index 383de7acd..bf1fd58ef 100644 --- a/roles/overcloud-deploy/templates/overcloud-deploy.sh.j2 +++ b/roles/overcloud-deploy/templates/overcloud-deploy.sh.j2 @@ -28,6 +28,12 @@ done ### --start_docs +{% if baremetal_provision|bool %} +## * Provision the baremetal nodes +## :: +openstack overcloud node provision --stack overcloud --output {{ working_dir }}/overcloud-baremetal-deployed.yaml {{ working_dir }}/overcloud_baremetal_deploy.yaml +{% endif %} + ## * Deploy the overcloud! ## :: openstack overcloud deploy {% if release is not in ['newton', 'ocata', 'pike', 'queens'] %}--override-ansible-cfg {{ working_dir }}/custom_ansible.cfg{% endif %} \ diff --git a/roles/overcloud-deploy/templates/overcloud_baremetal_deploy.yaml.j2 b/roles/overcloud-deploy/templates/overcloud_baremetal_deploy.yaml.j2 new file mode 100644 index 000000000..e7dd80d01 --- /dev/null +++ b/roles/overcloud-deploy/templates/overcloud_baremetal_deploy.yaml.j2 @@ -0,0 +1,11 @@ +{% for role in topology_map %} +{% set role_count = topology_map[role].scale |default(0) %} +{% set role_profile = topology_map[role].flavor |default('') %} +{% if role_count %} +- name: {{ role }} + count: {{ role_count }} +{% if role_profile %} + profile: {{ role_profile }} +{% endif %} +{% endif %} +{% endfor %} \ No newline at end of file diff --git a/roles/undercloud-deploy/README.md b/roles/undercloud-deploy/README.md index e86105f99..4a7918922 100644 --- a/roles/undercloud-deploy/README.md +++ b/roles/undercloud-deploy/README.md @@ -56,7 +56,6 @@ https://docs.openstack.org/tripleo-quickstart/latest/accessing-libvirt.html - `undercloud_enable_novajoin`: <'false'> -- sets up the 'enable_novajoin' value from undercloud.conf. Note that using 'enable_tls_everywhere' will have the same effect. -- `undercloud_enable_nova`: <'true'> -- sets up the 'enable_nova' - `novajoin_connect_timeout`: <5> Sets vendordata_dynamic_connect_timeout when novajoin is enabled - `novajoin_read_timeout:` <20> Sets vendordata_dynamic_read_timeout when novajoin is enabled - `prepare_novajoin`: If set to true, it will install novajoin in the undercloud, diff --git a/roles/undercloud-deploy/defaults/main.yml b/roles/undercloud-deploy/defaults/main.yml index 7e796520d..d40c6bac6 100644 --- a/roles/undercloud-deploy/defaults/main.yml +++ b/roles/undercloud-deploy/defaults/main.yml @@ -64,7 +64,6 @@ undercloud_enable_validations: true undercloud_enable_zaqar: true undercloud_ipxe_deploy: true undercloud_enable_swift_encryption: false -undercloud_enable_nova: true undercloud_undercloud_debug: true diff --git a/roles/validate-undercloud/templates/undercloud-sanity-check.sh.j2 b/roles/validate-undercloud/templates/undercloud-sanity-check.sh.j2 index 09672c3e0..5501a3758 100644 --- a/roles/validate-undercloud/templates/undercloud-sanity-check.sh.j2 +++ b/roles/validate-undercloud/templates/undercloud-sanity-check.sh.j2 @@ -52,8 +52,10 @@ rm -f {{ working_dir }}/undercloud_sanity.subunit source {{ working_dir}}/stackrc citest openstack user list citest openstack catalog list +{% if undercloud_enable_nova|bool %} citest nova service-list citest glance image-list +{% endif %} citest neutron subnet-list citest neutron net-list citest neutron agent-list