diff --git a/ansible-role-requirements.yml b/ansible-role-requirements.yml index c4024da4fa..a40ad070a0 100644 --- a/ansible-role-requirements.yml +++ b/ansible-role-requirements.yml @@ -148,6 +148,11 @@ src: https://opendev.org/openstack/openstack-ansible-os_mistral version: fd002ac32bf989f90d1614dfb93b4848d4ff001d trackbranch: stable/train +- name: os_murano + scm: git + src: https://opendev.org/openstack/openstack-ansible-os_murano + version: bb67a1c8c77aa4b8c609f0a02ba480e9cf101e32 + trackbranch: stable/train - name: os_neutron scm: git src: https://opendev.org/openstack/openstack-ansible-os_neutron diff --git a/etc/openstack_deploy/conf.d/murano.yml.aio b/etc/openstack_deploy/conf.d/murano.yml.aio new file mode 100644 index 0000000000..15098977dc --- /dev/null +++ b/etc/openstack_deploy/conf.d/murano.yml.aio @@ -0,0 +1,3 @@ +murano-infra_hosts: + aio1: + ip: 172.29.236.100 diff --git a/etc/openstack_deploy/conf.d/murano.yml.example b/etc/openstack_deploy/conf.d/murano.yml.example new file mode 100644 index 0000000000..3f2be53d51 --- /dev/null +++ b/etc/openstack_deploy/conf.d/murano.yml.example @@ -0,0 +1,8 @@ +# The infra nodes that will be running the murano services +murano-infra_hosts: + infra1: + ip: 172.20.236.111 + infra2: + ip: 172.20.236.112 + infra3: + ip: 172.20.236.113 diff --git a/etc/openstack_deploy/env.d/aio_metal.yml.example b/etc/openstack_deploy/env.d/aio_metal.yml.example index ea9c8ceb03..bc4f46f8cc 100644 --- a/etc/openstack_deploy/env.d/aio_metal.yml.example +++ b/etc/openstack_deploy/env.d/aio_metal.yml.example @@ -87,6 +87,9 @@ container_skel: mistral_container: properties: is_metal: true + murano_container: + properties: + is_metal: true neutron_agents_container: properties: is_metal: true diff --git a/etc/openstack_deploy/user_secrets.yml b/etc/openstack_deploy/user_secrets.yml index 0013d0acd4..beb6f062c4 100644 --- a/etc/openstack_deploy/user_secrets.yml +++ b/etc/openstack_deploy/user_secrets.yml @@ -197,6 +197,11 @@ mistral_service_password: mistral_galera_password: mistral_oslomsg_rpc_password: +# Murano Options +murano_service_password: +murano_galera_password: +murano_oslomsg_rpc_password: + ## Rally Options: rally_galera_password: diff --git a/inventory/env.d/murano.yml b/inventory/env.d/murano.yml new file mode 100644 index 0000000000..5ed647e36a --- /dev/null +++ b/inventory/env.d/murano.yml @@ -0,0 +1,39 @@ +--- +# Copyright 2019, VEXXHOST, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +component_skel: + murano_api: + belongs_to: + - murano_all + murano_engine: + belongs_to: + - murano_all + +container_skel: + murano_container: + belongs_to: + - os-infra_containers + - murano-infra_containers + contains: + - murano_api + - murano_engine + +physical_skel: + murano-infra_containers: + belongs_to: + - all_containers + murano-infra_hosts: + belongs_to: + - hosts diff --git a/inventory/group_vars/haproxy/haproxy.yml b/inventory/group_vars/haproxy/haproxy.yml index c83b2c8e03..590654fadb 100644 --- a/inventory/group_vars/haproxy/haproxy.yml +++ b/inventory/group_vars/haproxy/haproxy.yml @@ -291,6 +291,17 @@ haproxy_default_services: haproxy_backend_options: - "httpchk GET / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck" haproxy_service_enabled: "{{ groups['mistral_all'] is defined and groups['mistral_all'] | length > 0 }}" + - service: + haproxy_service_name: murano + haproxy_backend_nodes: "{{ groups['murano_all'] | default([]) }}" + haproxy_ssl: "{{ haproxy_ssl }}" + haproxy_port: 8082 + haproxy_balance_type: http + haproxy_backend_options: + - "httpchk GET /v1 HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck" + haproxy_backend_httpcheck_options: + - "expect status 401" + haproxy_service_enabled: "{{ groups['murano_all'] is defined and groups['murano_all'] | length > 0 }}" - service: haproxy_service_name: trove haproxy_backend_nodes: "{{ groups['trove_api'] | default([]) }}" diff --git a/inventory/group_vars/murano_all.yml b/inventory/group_vars/murano_all.yml new file mode 100644 index 0000000000..9579fca6ed --- /dev/null +++ b/inventory/group_vars/murano_all.yml @@ -0,0 +1,26 @@ +--- +# Copyright 2019, VEXXHOST, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +murano_service_port: 8082 +murano_service_proto: http +murano_service_publicuri_proto: "{{ openstack_service_publicuri_proto | default(murano_service_proto) }}" +murano_service_publicurl: "{{ murano_service_publicuri_proto }}://{{ external_lb_vip_address }}:{{ murano_service_port }}" +murano_service_internaluri_proto: "{{ openstack_service_internaluri_proto | default(murano_service_proto) }}" +murano_service_internalurl: "{{ murano_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ murano_service_port }}" +murano_service_adminuri_proto: "{{ openstack_service_adminuri_proto | default(murano_service_proto) }}" +murano_service_adminurl: "{{ murano_service_adminuri_proto }}://{{ internal_lb_vip_address }}:{{ murano_service_port }}" +murano_service_region: "{{ service_region }}" + + diff --git a/inventory/inventory.ini b/inventory/inventory.ini index 4160029848..0ef7114a14 100644 --- a/inventory/inventory.ini +++ b/inventory/inventory.ini @@ -163,6 +163,11 @@ mistral_notifier [mistral_executor] [mistral_notifier] +[murano_all:children] +murano_api +murano_engine +[murano_api] +[murano_engine] [neutron_all:children] neutron_agent diff --git a/playbooks/defaults/distro_install.yml b/playbooks/defaults/distro_install.yml index 570966e341..a8d1491def 100644 --- a/playbooks/defaults/distro_install.yml +++ b/playbooks/defaults/distro_install.yml @@ -44,6 +44,7 @@ keystone_install_method: distro keystone_bin: /usr/bin magnum_install_method: distro masakari_install_method: distro +murano_install_method: distro monasca_install_method: distro monasca-agent_install_method: distro monasca-ui_install_method: distro diff --git a/playbooks/defaults/repo_packages/openstack_services.yml b/playbooks/defaults/repo_packages/openstack_services.yml index d9d7556f02..80f6aa459a 100644 --- a/playbooks/defaults/repo_packages/openstack_services.yml +++ b/playbooks/defaults/repo_packages/openstack_services.yml @@ -250,6 +250,12 @@ mistral_git_install_branch: 5d387db6c2a53e3c28d46ffd7da45cf1f52a3d8b # HEAD as mistral_git_project_group: mistral_all mistral_git_track_branch: stable/train +## Murano service +murano_git_repo: https://opendev.org/openstack/murano +murano_git_install_branch: f278aac4a836d20a7b8d01e290b5cf402a65ed3a # HEAD as of 22.08.2019 +murano_git_project_group: murano_all +murano_git_track_branch: master + ## Trove service trove_git_repo: https://opendev.org/openstack/trove trove_git_install_branch: 09e3a53737e4b97ce1d617315419d690bbc1e8d8 # HEAD as of 17.10.2019 diff --git a/playbooks/os-murano-install.yml b/playbooks/os-murano-install.yml new file mode 100644 index 0000000000..00deab40f5 --- /dev/null +++ b/playbooks/os-murano-install.yml @@ -0,0 +1,41 @@ +--- +# Copyright 2019, VEXXHOST, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- name: Install murano components + hosts: murano_all + gather_facts: "{{ osa_gather_facts | default(True) }}" + environment: "{{ deployment_environment_variables | default({}) }}" + user: root + vars_files: + - "defaults/{{ install_method }}_install.yml" + tags: + - murano + pre_tasks: + - include_tasks: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml" + when: not is_metal + + - include_tasks: common-tasks/unbound-clients.yml + when: + - hostvars['localhost']['resolvconf_enabled'] | bool + + - name: Configure package proxy cache + include_tasks: common-tasks/package-cache-proxy.yml + when: install_method == "source" + + roles: + - role: "os_murano" + - role: "system_crontab_coordination" + tags: + - crontab diff --git a/playbooks/setup-openstack.yml b/playbooks/setup-openstack.yml index 84b977df0f..f054a4d847 100644 --- a/playbooks/setup-openstack.yml +++ b/playbooks/setup-openstack.yml @@ -38,6 +38,7 @@ - import_playbook: os-masakari-install.yml - import_playbook: os-manila-install.yml - import_playbook: os-mistral-install.yml +- import_playbook: os-murano-install.yml # This is not an OpenStack service, but integrates with Keystone and must be # deployed afterward. diff --git a/releasenotes/notes/add-murano-to-repo-ffsdgsdhgb332 b/releasenotes/notes/add-murano-to-repo-ffsdgsdhgb332 new file mode 100644 index 0000000000..9eff892262 --- /dev/null +++ b/releasenotes/notes/add-murano-to-repo-ffsdgsdhgb332 @@ -0,0 +1,4 @@ +--- +features: + - A new playbook ``os-murano-install.yml`` has been added which will deploy the new murano + service to hosts assigned to the host group ``murano-infra_hosts``. diff --git a/tests/roles/bootstrap-host/tasks/prepare_aio_config.yml b/tests/roles/bootstrap-host/tasks/prepare_aio_config.yml index 251a0e2573..8007b81150 100644 --- a/tests/roles/bootstrap-host/tasks/prepare_aio_config.yml +++ b/tests/roles/bootstrap-host/tasks/prepare_aio_config.yml @@ -179,6 +179,9 @@ - src: user_variables_manila.yml.j2 dest: user_variables_manila.yml condition: "{{ 'manila' in bootstrap_host_scenarios_expanded }}" + - src: user_variables_murano.yml.j2 + dest: user_variables_murano.yml + condition: "{{ 'murano' in bootstrap_host_scenarios_expanded }}" - src: user_variables_calico.yml.j2 dest: user_variables_calico.yml condition: "{{ 'calico' in bootstrap_host_scenarios_expanded }}" diff --git a/tests/roles/bootstrap-host/templates/user_variables_murano.yml.j2 b/tests/roles/bootstrap-host/templates/user_variables_murano.yml.j2 new file mode 100644 index 0000000000..64542a3d43 --- /dev/null +++ b/tests/roles/bootstrap-host/templates/user_variables_murano.yml.j2 @@ -0,0 +1,30 @@ +--- +# Copyright 2019, VEXXHOST, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +tempest_test_whitelist: + - murano_tempest_tests.tests.api.application_catalog + +tempest_tempest_conf_overrides: + application_catalog: + deployment_tests: True + endpoint_type: internalURL + linux_image: cirros + +tempest_flavors: + - name: m1.tiny + id: 203 + ram: 256 + disk: 5 + vcpus: 1 diff --git a/tests/roles/bootstrap-host/vars/main.yml b/tests/roles/bootstrap-host/vars/main.yml index 44d6fba0cf..7e6d653dd8 100644 --- a/tests/roles/bootstrap-host/vars/main.yml +++ b/tests/roles/bootstrap-host/vars/main.yml @@ -38,6 +38,9 @@ bootstrap_host_scenarios_expanded: |- {% if 'ironic' in bootstrap_host_scenarios %} {% set _ = scenario_list.extend(['swift']) %} {% endif %} + {% if 'murano' in bootstrap_host_scenarios %} + {% set _ = scenario_list.extend(['heat']) %} + {% endif %} {% if 'telemetry' in bootstrap_host_scenarios %} {% set _ = scenario_list.extend(['aodh', 'ceilometer', 'gnocchi', 'panko']) %} {% endif %} diff --git a/tests/test_inventory.py b/tests/test_inventory.py index adf8367114..a17c336486 100644 --- a/tests/test_inventory.py +++ b/tests/test_inventory.py @@ -309,6 +309,13 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase): 'mistral_engine', 'mistral_executor', 'mistral_notifier', + 'murano-infra_all', + 'murano-infra_containers', + 'murano-infra_hosts', + 'murano_all', + 'murano_container', + 'murano_api', + 'murano_engine', 'mano_all', 'mano_containers', 'mano_hosts',