Merge "Enable Cinder as a backend for Glance" into stable/pike
[apex-tripleo-heat-templates.git] / docker / services / neutron-api.yaml
1 heat_template_version: pike
2
3 description: >
4   OpenStack containerized Neutron API service
5
6 parameters:
7   DockerNeutronApiImage:
8     description: image
9     type: string
10   DockerNeutronConfigImage:
11     description: The container image to use for the neutron 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   ServiceData:
19     default: {}
20     description: Dictionary packing service data
21     type: json
22   ServiceNetMap:
23     default: {}
24     description: Mapping of service_name -> network name. Typically set
25                  via parameter_defaults in the resource registry.  This
26                  mapping overrides those in ServiceNetMapDefaults.
27     type: json
28   DefaultPasswords:
29     default: {}
30     type: json
31   RoleName:
32     default: ''
33     description: Role name on which the service is applied
34     type: string
35   RoleParameters:
36     default: {}
37     description: Parameters specific to the role
38     type: json
39   EnableInternalTLS:
40     type: boolean
41     default: false
42   UpgradeRemoveUnusedPackages:
43     default: false
44     description: Remove package if the service is being disabled during upgrade
45     type: boolean
46
47 conditions:
48
49   internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
50
51 resources:
52
53   ContainersCommon:
54     type: ./containers-common.yaml
55
56   MySQLClient:
57     type: ../../puppet/services/database/mysql-client.yaml
58
59   NeutronBase:
60     type: ../../puppet/services/neutron-api.yaml
61     properties:
62       EndpointMap: {get_param: EndpointMap}
63       ServiceData: {get_param: ServiceData}
64       ServiceNetMap: {get_param: ServiceNetMap}
65       DefaultPasswords: {get_param: DefaultPasswords}
66       RoleName: {get_param: RoleName}
67       RoleParameters: {get_param: RoleParameters}
68
69 outputs:
70   role_data:
71     description: Role data for the Neutron API role.
72     value:
73       service_name: {get_attr: [NeutronBase, role_data, service_name]}
74       logging_source: {get_attr: [NeutronBase, role_data, logging_source]}
75       logging_groups: {get_attr: [NeutronBase, role_data, logging_groups]}
76       config_settings:
77         map_merge:
78           - get_attr: [NeutronBase, role_data, config_settings]
79       step_config: &step_config
80         list_join:
81           - "\n"
82           - - {get_attr: [NeutronBase, role_data, step_config]}
83             - {get_attr: [MySQLClient, role_data, step_config]}
84       service_config_settings: {get_attr: [NeutronBase, role_data, service_config_settings]}
85       # BEGIN DOCKER SETTINGS
86       puppet_config:
87         config_volume: neutron
88         puppet_tags: neutron_config,neutron_api_config
89         step_config: *step_config
90         config_image: {get_param: DockerNeutronConfigImage}
91       kolla_config:
92         /var/lib/kolla/config_files/neutron_api.json:
93           command: /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/common --config-dir /etc/neutron/conf.d/neutron-server
94           config_files:
95             - source: "/var/lib/kolla/config_files/src/*"
96               dest: "/"
97               merge: true
98               preserve_properties: true
99           permissions:
100             - path: /var/log/neutron
101               owner: neutron:neutron
102               recurse: true
103         /var/lib/kolla/config_files/neutron_server_tls_proxy.json:
104           command: /usr/sbin/httpd -DFOREGROUND
105           config_files:
106             - source: "/var/lib/kolla/config_files/src/*"
107               dest: "/"
108               merge: true
109               preserve_properties: true
110       docker_config:
111         # db sync runs before permissions set by kolla_config
112         step_2:
113           neutron_init_logs:
114             image: &neutron_api_image {get_param: DockerNeutronApiImage}
115             privileged: false
116             user: root
117             volumes:
118               - /var/log/containers/neutron:/var/log/neutron
119               - /var/log/containers/httpd/neutron-api:/var/log/httpd
120             command: ['/bin/bash', '-c', 'chown -R neutron:neutron /var/log/neutron']
121         step_3:
122           neutron_db_sync:
123             image: *neutron_api_image
124             net: host
125             privileged: false
126             detach: false
127             user: root
128             volumes:
129               list_concat:
130                 - {get_attr: [ContainersCommon, volumes]}
131                 -
132                   - /var/lib/config-data/neutron/etc/my.cnf.d/tripleo.cnf:/etc/my.cnf.d/tripleo.cnf:ro
133                   - /var/lib/config-data/neutron/etc/neutron:/etc/neutron:ro
134                   - /var/lib/config-data/neutron/usr/share/neutron:/usr/share/neutron:ro
135                   - /var/log/containers/neutron:/var/log/neutron
136                   - /var/log/containers/httpd/neutron-api:/var/log/httpd
137             command: ['/usr/bin/bootstrap_host_exec', 'neutron_api', 'neutron-db-manage', 'upgrade', 'heads']
138             # FIXME: we should make config file permissions right
139             # and run as neutron user
140             #command: "/usr/bin/bootstrap_host_exec neutron_api su neutron -s /bin/bash -c 'neutron-db-manage upgrade heads'"
141         step_4:
142           map_merge:
143             - neutron_api:
144                 image: *neutron_api_image
145                 net: host
146                 privileged: false
147                 restart: always
148                 volumes:
149                   list_concat:
150                     - {get_attr: [ContainersCommon, volumes]}
151                     -
152                       - /var/lib/kolla/config_files/neutron_api.json:/var/lib/kolla/config_files/config.json:ro
153                       - /var/lib/config-data/puppet-generated/neutron/:/var/lib/kolla/config_files/src:ro
154                       - /var/log/containers/neutron:/var/log/neutron
155                       - /var/log/containers/httpd/neutron-api:/var/log/httpd
156                 environment:
157                   - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
158             - if:
159                 - internal_tls_enabled
160                 - neutron_server_tls_proxy:
161                     image: *neutron_api_image
162                     net: host
163                     user: root
164                     restart: always
165                     volumes:
166                       list_concat:
167                         - {get_attr: [ContainersCommon, volumes]}
168                         -
169                           - /var/lib/kolla/config_files/neutron_server_tls_proxy.json:/var/lib/kolla/config_files/config.json:ro
170                           - /var/lib/config-data/puppet-generated/neutron/:/var/lib/kolla/config_files/src:ro
171                           - /etc/pki/tls/certs/httpd:/etc/pki/tls/certs/httpd:ro
172                           - /etc/pki/tls/private/httpd:/etc/pki/tls/private/httpd:ro
173                     environment:
174                       - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
175                 - {}
176       host_prep_tasks:
177         - name: create persistent logs directory
178           file:
179             path: "{{ item }}"
180             state: directory
181           with_items:
182             - /var/log/containers/neutron
183             - /var/log/containers/httpd/neutron-api
184       upgrade_tasks:
185         - name: Check if neutron_server is deployed
186           command: systemctl is-enabled neutron-server
187           tags: common
188           ignore_errors: True
189           register: neutron_server_enabled
190         - name: "PreUpgrade step0,validation: Check service neutron-server is running"
191           shell: /usr/bin/systemctl show 'neutron-server' --property ActiveState | grep '\bactive\b'
192           when: neutron_server_enabled.rc == 0
193           tags: step0,validation
194         - name: Stop and disable neutron_api service
195           tags: step2
196           when: neutron_server_enabled.rc == 0
197           service: name=neutron-server state=stopped enabled=no
198         - name: Remove openstack-neutron package if operator requests it
199           yum: name=openstack-neutron state=removed
200           tags: step2
201           ignore_errors: True
202           when: {get_param: UpgradeRemoveUnusedPackages}
203       metadata_settings:
204         get_attr: [NeutronBase, role_data, metadata_settings]