heat_template_version: rocky description: > OpenStack Octavia service configured with Puppet parameters: ContainerOctaviaHousekeepingImage: description: image type: string ContainerOctaviaConfigImage: description: The container image to use for the octavia config_volume type: string 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. This mapping overrides those in ServiceNetMapDefaults. type: json DefaultPasswords: default: {} 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_is_zero: {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} DefaultPasswords: {get_param: DefaultPasswords} RoleName: {get_param: RoleName} RoleParameters: {get_param: RoleParameters} 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_is_zero - {} - 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_param: ContainerOctaviaConfigImage} kolla_config: /var/lib/kolla/config_files/octavia_housekeeping.json: command: /usr/bin/octavia-housekeeping --config-file /usr/share/octavia/octavia-dist.conf --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_param: 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: 300 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 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' } upgrade_tasks: [] 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'] | default([]) }}"