heat_template_version: queens description: > Containerized logrotate with crond for containerized service logs rotation parameters: DockerCrondImage: description: image type: string DockerCrondConfigImage: description: The container image to use for the crond config_volume type: string 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 LogrotateMaxsize: description: Configures tme maxsize param for containerized logrotate. type: string default: '10M' LogrotateRotationInterval: description: Configures rotation interval for containerized logrotate. type: string default: 'daily' constraints: - allowed_values: [ 'daily', 'weekly', 'monthly' ] LogrotateRotate: description: Configures the rotate param for containerized logrotate. type: string default: '14' LogrotatePurgeAfterDays: description: Enforces life time (days) of rotated and compressed files. type: string default: '14' LogrotateDateExt: description: Enable/disable dateext parameter. type: boolean default: false LogrotateDateFormat: description: Configures dateformat strings for containerized logrotate. This is valid when LogrotateDateExt is true. The allowed specifiers are only %Y %m %d %H %M %S %V and %s. type: string default: '-%Y%m%d' constraints: - allowed_pattern: '-(%[YmdHMSVs])+$' LogrotateDateYesterday: description: Configures dateyesterday paramter for containerized logrotate. This is valid when LogrotateDateExt is true. type: boolean default: false conditions: logrotatedateext_is_enabled: {equals: [{get_param: LogrotateDateExt}, true]} resources: ContainersCommon: type: ./containers-common.yaml outputs: role_data: description: Role data for the crond role. value: service_name: logrotate_crond config_settings: map_merge: - tripleo::profile::base::logging::logrotate::maxsize: {get_param: LogrotateMaxsize} tripleo::profile::base::logging::logrotate::rotation: {get_param: LogrotateRotationInterval} tripleo::profile::base::logging::logrotate::rotate: {get_param: LogrotateRotate} tripleo::profile::base::logging::logrotate::purge_after_days: {get_param: LogrotatePurgeAfterDays} tripleo::profile::base::logging::logrotate::dateext: {get_param: LogrotateDateExt} - if: - logrotatedateext_is_enabled - tripleo::profile::base::logging::logrotate::dateformat: {get_param: LogrotateDateFormat} tripleo::profile::base::logging::logrotate::dateyesterday: {get_param: LogrotateDateYesterday} - {} host_prep_tasks: - name: allow logrotate to read inside containers seboolean: name: logrotate_read_inside_containers persistent: yes state: yes - name: configure tmpwatch on the host copy: dest: /etc/cron.daily/containers-tmpwatch owner: root group: root mode: 0755 content: | #!/bin/sh tmpwatch --nodirs --nosymlinks \ -X "/var/log/containers/*/*log" \ -X "/var/log/containers/*/*/*log" \ -X "/var/log/containers/*/*err" \ {{ LogrotatePurgeAfterDays|int +1 }}d \ /var/log/containers/ 2>&1 | logger -t container-tmpwatch vars: LogrotatePurgeAfterDays: {get_param: LogrotatePurgeAfterDays} # BEGIN DOCKER SETTINGS puppet_config: config_volume: crond step_config: 'include ::tripleo::profile::base::logging::logrotate' config_image: {get_param: DockerCrondConfigImage} kolla_config: /var/lib/kolla/config_files/logrotate-crond.json: command: /usr/sbin/crond -s -n config_files: - source: "/var/lib/kolla/config_files/src/*" dest: "/" merge: true preserve_properties: true docker_config: step_4: logrotate_crond: image: {get_param: DockerCrondImage} net: none pid: host privileged: true user: root restart: always volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} - - /var/lib/kolla/config_files/logrotate-crond.json:/var/lib/kolla/config_files/config.json:ro - /var/lib/config-data/puppet-generated/crond/:/var/lib/kolla/config_files/src:ro - /var/log/containers:/var/log/containers environment: - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS