Add support to deploy placement
Depends-On: I7600f1750538335c1348e7d042e6bf450910e12c Depends-On: Id9bd94923e05b3911a9dfd4e10c43f4c0ab81b9b Depends-On: I1ee165b06fe6c6a840784565a7a661b11bf9ebff Depends-On: I4619d333187a0e96c1b60fe2f203df0838c12059 Change-Id: Iae04e60622d1ecde78676c105e35655541065d04
This commit is contained in:
parent
d1d3aeeca6
commit
8393ad3cbc
@ -168,6 +168,11 @@
|
|||||||
src: https://opendev.org/openstack/openstack-ansible-os_panko
|
src: https://opendev.org/openstack/openstack-ansible-os_panko
|
||||||
version: master
|
version: master
|
||||||
trackbranch: master
|
trackbranch: master
|
||||||
|
- name: os_placement
|
||||||
|
scm: git
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-os_placement
|
||||||
|
version: master
|
||||||
|
trackbranch: master
|
||||||
- name: os_rally
|
- name: os_rally
|
||||||
scm: git
|
scm: git
|
||||||
src: https://opendev.org/openstack/openstack-ansible-os_rally
|
src: https://opendev.org/openstack/openstack-ansible-os_rally
|
||||||
|
3
etc/openstack_deploy/conf.d/placement.yml.aio
Normal file
3
etc/openstack_deploy/conf.d/placement.yml.aio
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
placement-infra_hosts:
|
||||||
|
aio1:
|
||||||
|
ip: 172.29.236.100
|
8
etc/openstack_deploy/conf.d/placement.yml.example
Normal file
8
etc/openstack_deploy/conf.d/placement.yml.example
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# The infra nodes that will be running the placement services
|
||||||
|
placement-infra_hosts:
|
||||||
|
infra1:
|
||||||
|
ip: 172.20.236.111
|
||||||
|
infra2:
|
||||||
|
ip: 172.20.236.112
|
||||||
|
infra3:
|
||||||
|
ip: 172.20.236.113
|
@ -99,6 +99,9 @@ container_skel:
|
|||||||
panko_container:
|
panko_container:
|
||||||
properties:
|
properties:
|
||||||
is_metal: true
|
is_metal: true
|
||||||
|
placement_container:
|
||||||
|
properties:
|
||||||
|
is_metal: true
|
||||||
repo_container:
|
repo_container:
|
||||||
properties:
|
properties:
|
||||||
is_metal: true
|
is_metal: true
|
||||||
|
@ -285,3 +285,10 @@ manila_profiler_hmac_key:
|
|||||||
# your user variables.
|
# your user variables.
|
||||||
#manila_oslomsg_notify_password:
|
#manila_oslomsg_notify_password:
|
||||||
manila_service_password:
|
manila_service_password:
|
||||||
|
|
||||||
|
# Placement Options
|
||||||
|
# TODO(logan): Replace nova_placement_service_password with
|
||||||
|
# this var and add an upgrade playbook cleaning up the old
|
||||||
|
# var from user_secrets before releasing Train
|
||||||
|
# placement_service_password:
|
||||||
|
placement_galera_password:
|
||||||
|
36
inventory/env.d/placement.yml
Normal file
36
inventory/env.d/placement.yml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
# 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:
|
||||||
|
placement_api:
|
||||||
|
belongs_to:
|
||||||
|
- placement_all
|
||||||
|
|
||||||
|
container_skel:
|
||||||
|
placement_container:
|
||||||
|
belongs_to:
|
||||||
|
- os-infra_containers
|
||||||
|
- placement-infra_containers
|
||||||
|
contains:
|
||||||
|
- placement_api
|
||||||
|
|
||||||
|
physical_skel:
|
||||||
|
placement-infra_containers:
|
||||||
|
belongs_to:
|
||||||
|
- all_containers
|
||||||
|
placement-infra_hosts:
|
||||||
|
belongs_to:
|
||||||
|
- hosts
|
@ -160,18 +160,17 @@ haproxy_default_services:
|
|||||||
- "httpchk HEAD / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck"
|
- "httpchk HEAD / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck"
|
||||||
haproxy_service_enabled: "{{ groups['nova_api_os_compute'] is defined and groups['nova_api_os_compute'] | length > 0 }}"
|
haproxy_service_enabled: "{{ groups['nova_api_os_compute'] is defined and groups['nova_api_os_compute'] | length > 0 }}"
|
||||||
- service:
|
- service:
|
||||||
haproxy_service_name: nova_api_placement
|
haproxy_service_name: placement
|
||||||
haproxy_backend_nodes: "{{ groups['nova_api_placement'] | default([]) }}"
|
haproxy_backend_nodes: "{{ groups['placement_all'] | default([]) }}"
|
||||||
haproxy_ssl: False
|
haproxy_ssl: "{{ haproxy_ssl }}"
|
||||||
haproxy_bind: "{{ [internal_lb_vip_address] }}"
|
|
||||||
haproxy_port: 8780
|
haproxy_port: 8780
|
||||||
haproxy_balance_type: http
|
haproxy_balance_type: http
|
||||||
haproxy_backend_options:
|
haproxy_backend_options:
|
||||||
- "httpchk GET / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck"
|
- "httpchk GET / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck"
|
||||||
haproxy_backend_httpcheck_options:
|
haproxy_service_enabled: "{{ groups['placement_all'] is defined and groups['placement_all'] | length > 0 }}"
|
||||||
- "expect status 200"
|
- service:
|
||||||
haproxy_whitelist_networks: "{{ haproxy_nova_placement_whitelist_networks }}"
|
haproxy_service_name: nova_api_placement
|
||||||
haproxy_service_enabled: "{{ groups['nova_api_placement'] is defined and groups['nova_api_placement'] | length > 0 }}"
|
state: absent
|
||||||
- service:
|
- service:
|
||||||
haproxy_service_name: nova_console
|
haproxy_service_name: nova_console
|
||||||
haproxy_backend_nodes: "{{ groups['nova_console'] | default([]) }}"
|
haproxy_backend_nodes: "{{ groups['nova_console'] | default([]) }}"
|
||||||
|
@ -67,3 +67,7 @@ nova_reserved_host_disk_mb: 0
|
|||||||
neutron_designate_enabled: "{{ hostvars['localhost']['neutron_designate_enabled'] }}"
|
neutron_designate_enabled: "{{ hostvars['localhost']['neutron_designate_enabled'] }}"
|
||||||
# If there are any Ceilometer hosts in the environment, then enable its usage
|
# If there are any Ceilometer hosts in the environment, then enable its usage
|
||||||
neutron_ceilometer_enabled: "{{ hostvars['localhost']['neutron_ceilometer_enabled'] }}"
|
neutron_ceilometer_enabled: "{{ hostvars['localhost']['neutron_ceilometer_enabled'] }}"
|
||||||
|
|
||||||
|
# TODO(logan): Remove this once placement is removed from os_nova
|
||||||
|
# Placement is now implemented as a separate service
|
||||||
|
nova_placement_service_enabled: False
|
||||||
|
29
inventory/group_vars/placement_all.yml
Normal file
29
inventory/group_vars/placement_all.yml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
placement_service_port: 8780
|
||||||
|
placement_service_proto: http
|
||||||
|
placement_service_publicuri_proto: "{{ openstack_service_publicuri_proto | default(placement_service_proto) }}"
|
||||||
|
placement_service_publicurl: "{{ placement_service_publicuri_proto }}://{{ external_lb_vip_address }}:{{ placement_service_port }}"
|
||||||
|
placement_service_internaluri_proto: "{{ openstack_service_internaluri_proto | default(placement_service_proto) }}"
|
||||||
|
placement_service_internalurl: "{{ placement_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ placement_service_port }}"
|
||||||
|
placement_service_adminuri_proto: "{{ openstack_service_adminuri_proto | default(placement_service_proto) }}"
|
||||||
|
placement_service_adminurl: "{{ placement_service_adminuri_proto }}://{{ internal_lb_vip_address }}:{{ placement_service_port }}"
|
||||||
|
placement_service_region: "{{ service_region }}"
|
||||||
|
|
||||||
|
# TODO(logan): Remove this before releasing Train after adding
|
||||||
|
# placement_service_password to user_secrets and cleaning up the old
|
||||||
|
# secret in an upgrade playbook
|
||||||
|
placement_service_password: "{{ nova_placement_service_password }}"
|
@ -206,6 +206,9 @@ nova_scheduler
|
|||||||
[panko_all:children]
|
[panko_all:children]
|
||||||
panko_api
|
panko_api
|
||||||
|
|
||||||
|
[placement_all:children]
|
||||||
|
placement_api
|
||||||
|
|
||||||
[rsyslog_all]
|
[rsyslog_all]
|
||||||
|
|
||||||
[sahara_all:children]
|
[sahara_all:children]
|
||||||
|
@ -54,6 +54,7 @@ nova_bin: /usr/bin
|
|||||||
octavia_install_method: distro
|
octavia_install_method: distro
|
||||||
octavia_bin: /usr/bin
|
octavia_bin: /usr/bin
|
||||||
panko_install_method: distro
|
panko_install_method: distro
|
||||||
|
placement_install_method: distro
|
||||||
rally_install_method: distro
|
rally_install_method: distro
|
||||||
sahara_install_method: distro
|
sahara_install_method: distro
|
||||||
searchlight_install_method: distro
|
searchlight_install_method: distro
|
||||||
|
@ -301,6 +301,11 @@ panko_git_install_branch: 91f809625560d770f39299f782eff2b56ec84874 # HEAD as of
|
|||||||
panko_git_project_group: panko_all
|
panko_git_project_group: panko_all
|
||||||
panko_git_track_branch: master
|
panko_git_track_branch: master
|
||||||
|
|
||||||
|
## Placement service
|
||||||
|
placement_git_repo: https://git.openstack.org/openstack/placement
|
||||||
|
placement_git_install_branch: 8f2a400208d6abb96e7c6feec68fae4dc31095ec # HEAD as of 02.05.2019
|
||||||
|
placement_git_project_group: placement_all
|
||||||
|
placement_git_track_branch: master
|
||||||
|
|
||||||
## Tacker service
|
## Tacker service
|
||||||
tacker_git_repo: https://opendev.org/openstack/tacker
|
tacker_git_repo: https://opendev.org/openstack/tacker
|
||||||
|
55
playbooks/os-placement-install.yml
Normal file
55
playbooks/os-placement-install.yml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
# 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 placement components
|
||||||
|
hosts: placement_all
|
||||||
|
gather_facts: "{{ osa_gather_facts | default(True) }}"
|
||||||
|
environment: "{{ deployment_environment_variables | default({}) }}"
|
||||||
|
user: root
|
||||||
|
vars_files:
|
||||||
|
- "defaults/{{ install_method }}_install.yml"
|
||||||
|
tags:
|
||||||
|
- placement
|
||||||
|
pre_tasks:
|
||||||
|
- include_tasks: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml"
|
||||||
|
when: not is_metal
|
||||||
|
|
||||||
|
- name: Configure log directories (on metal)
|
||||||
|
include_tasks: common-tasks/os-log-dir-setup.yml
|
||||||
|
vars:
|
||||||
|
log_dirs:
|
||||||
|
- src: "/openstack/log/{{ inventory_hostname }}-placement"
|
||||||
|
dest: "/var/log/placement"
|
||||||
|
|
||||||
|
- 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_placement"
|
||||||
|
- role: "system_crontab_coordination"
|
||||||
|
tags:
|
||||||
|
- crontab
|
||||||
|
|
||||||
|
post_tasks:
|
||||||
|
- include_tasks: "common-tasks/rsyslog-client.yml"
|
||||||
|
vars:
|
||||||
|
rsyslog_client_log_rotate_file: placement_log_rotate
|
||||||
|
rsyslog_client_log_dir: "/var/log/placement"
|
||||||
|
rsyslog_client_config_name: "99-placement-rsyslog-client.conf"
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
- import_playbook: os-keystone-install.yml
|
- import_playbook: os-keystone-install.yml
|
||||||
- import_playbook: os-barbican-install.yml
|
- import_playbook: os-barbican-install.yml
|
||||||
|
- import_playbook: os-placement-install.yml
|
||||||
- import_playbook: os-glance-install.yml
|
- import_playbook: os-glance-install.yml
|
||||||
- import_playbook: os-cinder-install.yml
|
- import_playbook: os-cinder-install.yml
|
||||||
- import_playbook: os-nova-install.yml
|
- import_playbook: os-nova-install.yml
|
||||||
|
4
releasenotes/notes/add-placement-to-repo-adgsaa1233452
Normal file
4
releasenotes/notes/add-placement-to-repo-adgsaa1233452
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- A new playbook ``os-placement-install.yml`` has been added which will deploy the new placement
|
||||||
|
service to hosts assigned to the host group ``placement-infra_hosts``.
|
@ -33,7 +33,7 @@ bootstrap_host_services: >-
|
|||||||
{%- set _ = service_list.append('haproxy') %}
|
{%- set _ = service_list.append('haproxy') %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if 'aio' in scenario_list or 'translations' in scenario_list %}
|
{%- if 'aio' in scenario_list or 'translations' in scenario_list %}
|
||||||
{%- set _ = service_list.extend(['cinder', 'glance', 'neutron', 'nova']) %}
|
{%- set _ = service_list.extend(['cinder', 'glance', 'neutron', 'nova', 'placement']) %}
|
||||||
{%- if 'metal' not in scenario_list %}
|
{%- if 'metal' not in scenario_list %}
|
||||||
{%- set _ = service_list.append('horizon') %}
|
{%- set _ = service_list.append('horizon') %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
@ -327,6 +327,12 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase):
|
|||||||
'panko_all',
|
'panko_all',
|
||||||
'panko_api',
|
'panko_api',
|
||||||
'panko_container',
|
'panko_container',
|
||||||
|
'placement-infra_all',
|
||||||
|
'placement-infra_containers',
|
||||||
|
'placement-infra_hosts',
|
||||||
|
'placement_all',
|
||||||
|
'placement_container',
|
||||||
|
'placement_api',
|
||||||
'policy_all',
|
'policy_all',
|
||||||
'policy_containers',
|
'policy_containers',
|
||||||
'policy_hosts',
|
'policy_hosts',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user