heat_template_version: rocky description: > OpenStack Octavia service configured with Puppet parameters: DockerOctaviaHousekeepingImage: description: image type: string DockerOctaviaConfigImage: description: The container image to use for the octavia config_volume type: string OctaviaHousekeepingLoggingSource: type: json default: tag: openstack.octavia.housekeeping path: /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: fluentd: tripleo_fluentd_groups_octavia_housekeeping: - octavia tripleo_fluentd_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: DockerOctaviaConfigImage} 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 --log-file /var/log/octavia/housekeeping.log --config-file /etc/octavia/post-deploy.conf --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: DockerOctaviaHousekeepingImage} 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_4: octavia_housekeeping: start_order: 2 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 }}" with_items: - { 'path': /var/log/containers/octavia, 'setype': svirt_sandbox_file_t } - { 'path': /var/log/octavia, 'setype': svirt_sandbox_file_t } - name: octavia logs readme copy: dest: /var/log/octavia/readme.txt content: | Log files from octavia containers can be found under /var/log/containers/octavia and /var/log/containers/httpd/octavia-api. ignore_errors: true upgrade_tasks: [] post_upgrade_tasks: - when: step|int == 1 import_role: name: tripleo-docker-rm vars: containers_to_rm: - octavia_housekeeping