Use a single configuration file for specifying docker containers.
[apex-tripleo-heat-templates.git] / docker / services / cinder-api.yaml
1 heat_template_version: pike
2
3 description: >
4   OpenStack containerized Cinder API service
5
6 parameters:
7   DockerCinderApiImage:
8     description: image
9     type: string
10   DockerCinderConfigImage:
11     description: The container image to use for the cinder config_volume
12     type: string
13   EndpointMap:
14     default: {}
15     description: Mapping of service endpoint -> protocol. Typically set
16                  via parameter_defaults in the resource registry.
17     type: json
18   ServiceNetMap:
19     default: {}
20     description: Mapping of service_name -> network name. Typically set
21                  via parameter_defaults in the resource registry.  This
22                  mapping overrides those in ServiceNetMapDefaults.
23     type: json
24   DefaultPasswords:
25     default: {}
26     type: json
27   RoleName:
28     default: ''
29     description: Role name on which the service is applied
30     type: string
31   RoleParameters:
32     default: {}
33     description: Parameters specific to the role
34     type: json
35   EnableInternalTLS:
36     type: boolean
37     default: false
38
39 conditions:
40
41   internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
42
43 resources:
44
45   ContainersCommon:
46     type: ./containers-common.yaml
47
48   CinderBase:
49     type: ../../puppet/services/cinder-api.yaml
50     properties:
51       EndpointMap: {get_param: EndpointMap}
52       ServiceNetMap: {get_param: ServiceNetMap}
53       DefaultPasswords: {get_param: DefaultPasswords}
54       RoleName: {get_param: RoleName}
55       RoleParameters: {get_param: RoleParameters}
56
57 outputs:
58   role_data:
59     description: Role data for the Cinder API role.
60     value:
61       service_name: {get_attr: [CinderBase, role_data, service_name]}
62       config_settings: {get_attr: [CinderBase, role_data, config_settings]}
63       step_config: &step_config
64         get_attr: [CinderBase, role_data, step_config]
65       service_config_settings: {get_attr: [CinderBase, role_data, service_config_settings]}
66       # BEGIN DOCKER SETTINGS
67       puppet_config:
68         config_volume: cinder
69         puppet_tags: cinder_config,file,concat,file_line
70         step_config: *step_config
71         config_image: {get_param: DockerCinderConfigImage}
72       kolla_config:
73         /var/lib/kolla/config_files/cinder_api.json:
74           command: /usr/sbin/httpd -DFOREGROUND
75           config_files:
76             - source: "/var/lib/kolla/config_files/src/*"
77               dest: "/"
78               merge: true
79               preserve_properties: true
80           permissions:
81             - path: /var/log/cinder
82               owner: cinder:cinder
83               recurse: true
84       docker_config:
85         step_2:
86           cinder_api_init_logs:
87             image: &cinder_api_image {get_param: DockerCinderApiImage}
88             privileged: false
89             user: root
90             volumes:
91               - /var/log/containers/cinder:/var/log/cinder
92             command: ['/bin/bash', '-c', 'chown -R cinder:cinder /var/log/cinder']
93         step_3:
94           cinder_api_db_sync:
95             image: *cinder_api_image
96             net: host
97             privileged: false
98             detach: false
99             user: root
100             volumes:
101               list_concat:
102                 - {get_attr: [ContainersCommon, volumes]}
103                 -
104                   - /var/lib/config-data/cinder/etc/cinder/:/etc/cinder/:ro
105                   - /var/log/containers/cinder:/var/log/cinder
106             command:
107               - '/usr/bin/bootstrap_host_exec'
108               - 'cinder_api'
109               - "su cinder -s /bin/bash -c 'cinder-manage db sync'"
110         step_4:
111           cinder_api:
112             image: *cinder_api_image
113             net: host
114             privileged: false
115             restart: always
116             # NOTE(mandre) kolla image changes the user to 'cinder', we need it
117             # to be root to run httpd
118             user: root
119             volumes:
120               list_concat:
121                 - {get_attr: [ContainersCommon, volumes]}
122                 -
123                   - /var/lib/kolla/config_files/cinder_api.json:/var/lib/kolla/config_files/config.json:ro
124                   - /var/lib/config-data/puppet-generated/cinder/:/var/lib/kolla/config_files/src:ro
125                   - /var/log/containers/cinder:/var/log/cinder
126                   -
127                     if:
128                       - internal_tls_enabled
129                       - /etc/pki/tls/certs/httpd:/etc/pki/tls/certs/httpd:ro
130                       - ''
131                   -
132                     if:
133                       - internal_tls_enabled
134                       - /etc/pki/tls/private/httpd:/etc/pki/tls/private/httpd:ro
135                       - ''
136             environment:
137               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
138       host_prep_tasks:
139         - name: create persistent logs directory
140           file:
141             path: /var/log/containers/cinder
142             state: directory
143       upgrade_tasks:
144         - name: Stop and disable cinder_api service
145           tags: step2
146           service: name=httpd state=stopped enabled=no