tripleo-heat-templates/deployment/octavia/octavia-housekeeping-container-puppet.yaml
Rabi Mishra cc38db4c99 Filter excluded nodes from ansible delegates
This would allow external_(deploy/update/upgrade)_tasks
to honor excluded nodes during deploy/update/upgrade.

Depends-On: https://review.opendev.org/c/openstack/tripleo-common/+/856407
Change-Id: Ia9d3c8d0a3098191b2d8b12fc24eee4517c6c521
2022-09-20 12:54:22 +09:00

187 lines
7.0 KiB
YAML

heat_template_version: wallaby
description: >
OpenStack Octavia service configured with Puppet
parameters:
ContainerOctaviaHousekeepingImage:
description: image
type: string
tags:
- role_specific
ContainerOctaviaConfigImage:
description: The container image to use for the octavia config_volume
type: string
tags:
- role_specific
OctaviaHousekeepingLoggingSource:
type: json
default:
tag: openstack.octavia.housekeeping
file: /var/log/containers/octavia/housekeeping.log
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
ServiceData:
default: {}
description: Dictionary packing service data
type: json
ServiceNetMap:
default: {}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry. Use
parameter_merge_strategies to merge it with the defaults.
type: json
RoleName:
default: ''
description: Role name on which the service is applied
type: string
RoleParameters:
default: {}
description: Parameters specific to the role
type: json
OctaviaAmphoraExpiryAge:
default: 0
description: The interval in seconds after which an unused Amphora will
be considered expired and cleaned up. If left to 0, the
configuration will not be set and the system will use
the service defaults.
type: number
MonitoringSubscriptionOctaviaHousekeeping:
default: 'overcloud-octavia-housekeeping'
type: string
conditions:
amphora_expiry_set:
not: {equals: [{get_param: OctaviaAmphoraExpiryAge}, 0]}
resources:
ContainersCommon:
type: ../containers-common.yaml
MySQLClient:
type: ../database/mysql-client.yaml
OctaviaBase:
type: ./octavia-base.yaml
properties:
EndpointMap: {get_param: EndpointMap}
ServiceData: {get_param: ServiceData}
ServiceNetMap: {get_param: ServiceNetMap}
RoleName: {get_param: RoleName}
RoleParameters: {get_param: RoleParameters}
RoleParametersValue:
type: OS::Heat::Value
properties:
type: json
value:
map_replace:
- map_replace:
- ContainerOctaviaHousekeepingImage: ContainerOctaviaHousekeepingImage
ContainerOctaviaConfigImage: ContainerOctaviaConfigImage
- values: {get_param: [RoleParameters]}
- values:
ContainerOctaviaHousekeepingImage: {get_param: ContainerOctaviaHousekeepingImage}
ContainerOctaviaConfigImage: {get_param: ContainerOctaviaConfigImage}
outputs:
role_data:
description: Role data for the Octavia housekeeping role.
value:
service_name: octavia_housekeeping
monitoring_subscription: {get_param: MonitoringSubscriptionOctaviaHousekeeping}
config_settings:
map_merge:
- get_attr: [OctaviaBase, role_data, config_settings]
- if:
- amphora_expiry_set
- octavia::housekeeping::amphora_expiry_age: {get_param: OctaviaAmphoraExpiryAge}
service_config_settings:
rsyslog:
tripleo_logging_sources_octavia_housekeeping:
- {get_param: OctaviaHousekeepingLoggingSource}
# BEGIN DOCKER SETTINGS #
puppet_config:
config_volume: octavia
puppet_tags: octavia_config
step_config:
list_join:
- "\n"
- - "include tripleo::profile::base::octavia::housekeeping"
- {get_attr: [MySQLClient, role_data, step_config]}
config_image: {get_attr: [RoleParametersValue, value, ContainerOctaviaConfigImage]}
kolla_config:
/var/lib/kolla/config_files/octavia_housekeeping.json:
command: /usr/bin/octavia-housekeeping --config-file /etc/octavia/octavia.conf --config-file /etc/octavia/post-deploy.conf --log-file /var/log/octavia/housekeeping.log --config-dir /etc/octavia/conf.d/octavia-housekeeping
config_files:
- source: "/var/lib/kolla/config_files/src/*"
dest: "/"
merge: true
preserve_properties: true
permissions:
- path: /var/log/octavia
owner: octavia:octavia
recurse: true
docker_config:
step_2:
octavia_housekeeping_init_dirs:
start_order: 0
image: &octavia_housekeeping_image {get_attr: [RoleParametersValue, value, ContainerOctaviaHousekeepingImage]}
user: root
net: none
volumes:
# NOTE(mandre) we need extra dir for the service in /etc/octavia/conf.d
# It is normally created as part of the RPM install, but it is
# missing here because we use the same config_volume for all
# octavia services, hence the same container image to generate
# configuration.
- /var/lib/config-data/puppet-generated/octavia/etc/octavia:/etc/octavia:z
command: ['/bin/bash', '-c', 'mkdir -p /etc/octavia/conf.d/octavia-housekeeping; chown -R octavia:octavia /etc/octavia/conf.d/octavia-housekeeping']
step_5:
octavia_housekeeping:
start_order: 2
stop_grace_period: 630
image: *octavia_housekeeping_image
net: host
privileged: false
restart: always
healthcheck:
test: /openstack/healthcheck
volumes:
list_concat:
- {get_attr: [ContainersCommon, volumes]}
- - /var/lib/kolla/config_files/octavia_housekeeping.json:/var/lib/kolla/config_files/config.json:ro
- /var/lib/config-data/puppet-generated/octavia:/var/lib/kolla/config_files/src:ro
- /var/log/containers/octavia:/var/log/octavia:z
environment:
KOLLA_CONFIG_STRATEGY: COPY_ALWAYS
update_tasks: {get_attr: [OctaviaBase, role_data, update_tasks]}
upgrade_tasks: {get_attr: [OctaviaBase, role_data, upgrade_tasks]}
host_prep_tasks:
- name: create persistent directories
file:
path: "{{ item.path }}"
state: directory
setype: "{{ item.setype }}"
mode: "{{ item.mode }}"
with_items:
- { 'path': /var/log/containers/octavia, 'setype': container_file_t, 'mode': '0750' }
external_upgrade_tasks:
- when:
- step|int == 1
tags:
- never
- system_upgrade_transfer_data
- system_upgrade_stop_services
block:
- name: Stop octavia housekeeping container
import_role:
name: tripleo_container_stop
vars:
tripleo_containers_to_stop:
- octavia_housekeeping
tripleo_delegate_to: "{{ groups['octavia_housekeeping'] | difference(groups['excluded_overcloud']) }}"