Added Openstack Masakari role for the deployment

This commit adds experimental deployment of Masakari role.
It requires existing corosync/pacemaker cluster on compute nodes
for hostmonitors to operate correctly.
Corosync/pacemaker deployment stays out of OSA scope for now.

Depends-On: Ib33d7bc83f1428763f873e1155fd9e3eb4c937e4
Change-Id: Ie543885a52f013635b9f553982c3d6448e3cc3aa
This commit is contained in:
Dmitriy Rabotjagov 2019-03-21 16:02:17 +02:00 committed by Dmitriy Rabotjagov
parent b590c1d43d
commit 4f9e923ee6
16 changed files with 202 additions and 0 deletions

View File

@ -138,6 +138,11 @@
src: https://git.openstack.org/openstack/openstack-ansible-os_magnum
version: master
trackbranch: master
- name: os_masakari
scm: git
src: https://git.openstack.org/openstack/openstack-ansible-os_masakari
version: master
trackbranch: master
- name: os_mistral
scm: git
src: https://git.openstack.org/openstack/openstack-ansible-os_mistral

View File

@ -152,6 +152,8 @@ OpenStack service roles
- :role_docs:`os_magnum`
- :role_docs:`os_masakari`
- :role_docs:`os_neutron`
- :role_docs:`os_nova`

View File

@ -243,6 +243,15 @@
<td></td>
<td></td>
</tr>
<tr class="warning">
<td>os_masakari</td>
<td>Stein</td>
<td>Incubated</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="warning">
<td>os_molteniron</td>
<td>Pike</td>

View File

@ -0,0 +1,4 @@
---
masakari-infra_hosts:
aio1:
ip: 172.29.236.100

View File

@ -0,0 +1,9 @@
---
# The infra nodes that will be running the masakari services
masakari-infra_hosts:
infra1:
ip: 172.20.236.111
infra2:
ip: 172.20.236.112
infra3:
ip: 172.20.236.113

View File

@ -72,6 +72,9 @@ container_skel:
magnum_container:
properties:
is_metal: true
masakari_monitors_container:
properties:
is_metal: true
memcached_container:
properties:
is_metal: true

View File

@ -192,6 +192,11 @@ magnum_oslomsg_rpc_password:
#magnum_oslomsg_notify_password:
magnum_trustee_password:
## Masakari Options
masakari_service_password:
masakari_oslomsg_rpc_password:
masakari_container_mysql_password:
# Mistral Options
mistral_service_password:
mistral_galera_password:

View File

@ -0,0 +1,54 @@
---
# Copyright 2014, Rackspace US, 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:
masakari_engine:
belongs_to:
- masakari_all
masakari_api:
belongs_to:
- masakari_all
masakari_monitor:
belongs_to:
- masakari_all
container_skel:
masakari_api_container:
belongs_to:
- masakari-infra_containers
contains:
- masakari_engine
- masakari_api
masakari_monitors_container:
belongs_to:
- masakari-monitor_containers
contains:
- masakari_monitor
properties:
is_metal: true
physical_skel:
masakari-monitor_containers:
belongs_to:
- all_containers
masakari-monitor_hosts:
belongs_to:
- hosts
masakari-infra_containers:
belongs_to:
- all_containers
masakari-infra_hosts:
belongs_to:
- hosts

View File

@ -266,6 +266,15 @@ haproxy_default_services:
haproxy_backend_options:
- "httpchk GET / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck"
haproxy_service_enabled: "{{ groups['magnum_all'] is defined and groups['magnum_all'] | length > 0 }}"
- service:
haproxy_service_name: masakari_api
haproxy_backend_nodes: "{{ groups['masakari_api'] | default([]) }}"
haproxy_ssl: "{{ haproxy_ssl }}"
haproxy_port: 15868
haproxy_balance_type: http
haproxy_backend_options:
- "httpchk GET / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck"
haproxy_service_enabled: "{{ groups['masakari_api'] is defined and groups['masakari_api'] | length > 0 }}"
- service:
haproxy_service_name: mistral
haproxy_backend_nodes: "{{ groups['mistral_all'] | default([]) }}"

View File

@ -19,6 +19,7 @@ horizon_enable_cinder_backup: "{{ hostvars['localhost']['cinder_service_backup_p
horizon_enable_heat_ui: "{{ (groups['heat_all'] is defined) and (groups['heat_all'] | length > 0) }}"
horizon_enable_ironic_ui: "{{ (groups['ironic_all'] is defined) and (groups['ironic_all'] | length > 0) }}"
horizon_enable_magnum_ui: "{{ (groups['magnum_all'] is defined) and (groups['magnum_all'] | length > 0) }}"
horizon_enable_masakari_ui: "{{ (groups['masakari_all'] is defined) and (groups['masakari_all'] | length > 0) }}"
horizon_enable_designate_ui: "{{ (groups['designate_all'] is defined) and (groups['designate_all'] | length > 0) }}"
horizon_enable_octavia_ui: "{{ (groups['octavia-infra_all'] is defined) and (groups['octavia-infra_all'] | length > 0) }}"
# NOTE(mhayden): neutron-lbaas is a separate plugin and requires the full

View File

@ -135,6 +135,14 @@ ironic_server
[magnum_all]
[masakari_all:children]
masakari_api
masakari_engine
masakari_monitor
[masakari_api]
[masakari_engine]
[masakari_monitor]
[mistral_all:children]
mistral_api
mistral_engine

View File

@ -256,6 +256,12 @@ magnum_git_install_branch: f1f96e58358aaf56adf4d299665501141c798fa4 # HEAD as of
magnum_git_project_group: magnum_all
magnum_git_track_branch: master
## Masakari service
masakari_git_repo: https://git.openstack.org/openstack/masakari
masakari_git_install_branch: d73a88a9c42fd3e70b291913cec0a61fa5654117 # HEAD as of 23.03.2019
masakari_git_project_group: masakari_all
masakari_git_track_branch: master
## Mistral service
mistral_git_repo: https://git.openstack.org/openstack/mistral
mistral_git_install_branch: 3e42cffd6c9494ffab13a2504ee6370232a0ef4d # HEAD as of 23.03.2019

View File

@ -0,0 +1,70 @@
---
# Copyright 2014, Rackspace US, 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 the masakari components
hosts: masakari_all
gather_facts: "{{ osa_gather_facts | default(True) }}"
user: root
vars_files:
- "defaults/repo_packages/openstack_services.yml"
- "defaults/{{ install_method }}_install.yml"
pre_tasks:
# In order to ensure that any container, software or
# config file changes which causes a container/service
# restart do not cause an unexpected outage, we drain
# the load balancer back end for this container.
- include_tasks: common-tasks/haproxy-endpoint-manage.yml
vars:
haproxy_backend: masakari_api-back
haproxy_state: disabled
when:
- "'masakari_api' in group_names"
- "groups['masakari_api'] | length > 1"
- include_tasks: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml"
when: not is_metal
- include_tasks: common-tasks/os-log-dir-setup.yml
vars:
log_dirs:
- src: "/openstack/log/{{ inventory_hostname }}-masakari"
dest: "/var/log/masakari"
- include_tasks: common-tasks/unbound-clients.yml
when:
- hostvars['localhost']['resolvconf_enabled'] | bool
roles:
- role: "os_masakari"
post_tasks:
- include_tasks: "common-tasks/rsyslog-client.yml"
vars:
rsyslog_client_log_rotate_file: masakari_log_rotate
rsyslog_client_log_dir: "/var/log/masakari"
rsyslog_client_config_name: "99-masakari-rsyslog-client.conf"
# Now that container changes are done, we can set
# the load balancer back end for this container
# to available again.
- include_tasks: common-tasks/haproxy-endpoint-manage.yml
vars:
haproxy_backend: masakari_api-back
haproxy_state: enabled
when:
- "'masakari_api' in group_names"
- "groups['masakari_api'] | length > 1"
environment: "{{ deployment_environment_variables | default({}) }}"
tags:
- masakari

View File

@ -33,6 +33,7 @@
- import_playbook: os-octavia-install.yml
- import_playbook: os-tacker-install.yml
- import_playbook: os-blazar-install.yml
- import_playbook: os-masakari-install.yml
# This is not an OpenStack service, but integrates with Keystone and must be
# deployed afterward.

View File

@ -0,0 +1,5 @@
---
features:
- Experimental support has been added to allow the deployment of the
OpenStack Masakari service when hosts are present in the host group
``masakari-infra_hosts``.

View File

@ -275,6 +275,17 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase):
'magnum-infra_hosts',
'magnum_all',
'magnum_container',
'masakari_all',
'masakari_api',
'masakari_api_container',
'masakari_engine',
'masakari-infra_all',
'masakari-infra_containers',
'masakari-infra_hosts',
'masakari_monitor',
'masakari-monitor_containers',
'masakari_monitors_container',
'masakari-monitor_hosts',
'mistral-infra_all',
'mistral-infra_containers',
'mistral-infra_hosts',