3edd9049e23c282a3919399d3859a610c32fa4a4
[apex-tripleo-heat-templates.git] / docker / services / panko-api.yaml
1 heat_template_version: pike
2
3 description: >
4   OpenStack Panko service configured with docker.
5   Note, this service is deprecated in Pike release and
6   will be disabled in future releases.
7
8 parameters:
9   DockerPankoApiImage:
10     description: image
11     type: string
12   DockerPankoConfigImage:
13     description: The container image to use for the panko config_volume
14     type: string
15   EndpointMap:
16     default: {}
17     description: Mapping of service endpoint -> protocol. Typically set
18                  via parameter_defaults in the resource registry.
19     type: json
20   ServiceData:
21     default: {}
22     description: Dictionary packing service data
23     type: json
24   ServiceNetMap:
25     default: {}
26     description: Mapping of service_name -> network name. Typically set
27                  via parameter_defaults in the resource registry.  This
28                  mapping overrides those in ServiceNetMapDefaults.
29     type: json
30   DefaultPasswords:
31     default: {}
32     type: json
33   RoleName:
34     default: ''
35     description: Role name on which the service is applied
36     type: string
37   RoleParameters:
38     default: {}
39     description: Parameters specific to the role
40     type: json
41   EnableInternalTLS:
42     type: boolean
43     default: false
44
45 conditions:
46
47   internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
48
49 resources:
50
51   ContainersCommon:
52     type: ./containers-common.yaml
53
54   MySQLClient:
55     type: ../../puppet/services/database/mysql-client.yaml
56
57   PankoApiPuppetBase:
58     type: ../../puppet/services/panko-api.yaml
59     properties:
60       EndpointMap: {get_param: EndpointMap}
61       ServiceData: {get_param: ServiceData}
62       ServiceNetMap: {get_param: ServiceNetMap}
63       DefaultPasswords: {get_param: DefaultPasswords}
64       RoleName: {get_param: RoleName}
65       RoleParameters: {get_param: RoleParameters}
66
67 outputs:
68   role_data:
69     description: Role data for the Panko API role.
70     value:
71       service_name: {get_attr: [PankoApiPuppetBase, role_data, service_name]}
72       config_settings:
73         map_merge:
74           - get_attr: [PankoApiPuppetBase, role_data, config_settings]
75           - apache::default_vhost: false
76       step_config: &step_config
77         list_join:
78           - "\n"
79           - - {get_attr: [PankoApiPuppetBase, role_data, step_config]}
80             - {get_attr: [MySQLClient, role_data, step_config]}
81       service_config_settings: {get_attr: [PankoApiPuppetBase, role_data, service_config_settings]}
82       # BEGIN DOCKER SETTINGS #
83       puppet_config:
84         config_volume: panko
85         puppet_tags: panko_api_paste_ini,panko_config
86         step_config: *step_config
87         config_image: {get_param: DockerPankoConfigImage}
88       kolla_config:
89         /var/lib/kolla/config_files/panko_api.json:
90           command: /usr/sbin/httpd -DFOREGROUND
91           config_files:
92             - source: "/var/lib/kolla/config_files/src/*"
93               dest: "/"
94               merge: true
95               preserve_properties: true
96           permissions:
97             - path: /var/log/panko
98               owner: panko:panko
99               recurse: true
100       docker_config:
101         step_2:
102           panko_init_log:
103             image: &panko_api_image {get_param: DockerPankoApiImage}
104             user: root
105             volumes:
106               - /var/log/containers/panko:/var/log/panko
107               - /var/log/containers/httpd/panko-api:/var/log/httpd
108             command: ['/bin/bash', '-c', 'chown -R panko:panko /var/log/panko']
109         step_3:
110           panko_db_sync:
111             image: *panko_api_image
112             net: host
113             detach: false
114             privileged: false
115             user: root
116             volumes:
117               list_concat:
118                 - {get_attr: [ContainersCommon, volumes]}
119                 -
120                   - /var/lib/config-data/panko/etc/my.cnf.d/tripleo.cnf:/etc/my.cnf.d/tripleo.cnf:ro
121                   - /var/lib/config-data/panko/etc/panko:/etc/panko:ro
122                   - /var/log/containers/panko:/var/log/panko
123                   - /var/log/containers/httpd/panko-api:/var/log/httpd
124             command: "/usr/bin/bootstrap_host_exec panko_api su panko -s /bin/bash -c '/usr/bin/panko-dbsync'"
125         step_4:
126           panko_api:
127             start_order: 2
128             image: *panko_api_image
129             net: host
130             privileged: false
131             restart: always
132             volumes:
133               list_concat:
134                 - {get_attr: [ContainersCommon, volumes]}
135                 -
136                   - /var/lib/kolla/config_files/panko_api.json:/var/lib/kolla/config_files/config.json:ro
137                   - /var/lib/config-data/puppet-generated/panko/:/var/lib/kolla/config_files/src:ro
138                   - /var/log/containers/panko:/var/log/panko
139                   - /var/log/containers/httpd/panko-api:/var/log/httpd
140                   -
141                     if:
142                       - internal_tls_enabled
143                       - /etc/pki/tls/certs/httpd:/etc/pki/tls/certs/httpd:ro
144                       - ''
145                   -
146                     if:
147                       - internal_tls_enabled
148                       - /etc/pki/tls/private/httpd:/etc/pki/tls/private/httpd:ro
149                       - ''
150             environment:
151               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
152       host_prep_tasks:
153         - name: create persistent logs directory
154           file:
155             path: "{{ item }}"
156             state: directory
157           with_items:
158             - /var/log/containers/panko
159             - /var/log/containers/httpd/panko-api
160       metadata_settings:
161         get_attr: [PankoApiPuppetBase, role_data, metadata_settings]