Merge "Run cluster check on nodes configured in wsrep_cluster_address."
[apex-tripleo-heat-templates.git] / puppet / services / neutron-api.yaml
1 heat_template_version: ocata
2
3 description: >
4   OpenStack Neutron Server configured with Puppet
5
6 parameters:
7   ServiceNetMap:
8     default: {}
9     description: Mapping of service_name -> network name. Typically set
10                  via parameter_defaults in the resource registry.  This
11                  mapping overrides those in ServiceNetMapDefaults.
12     type: json
13   DefaultPasswords:
14     default: {}
15     type: json
16   EndpointMap:
17     default: {}
18     description: Mapping of service endpoint -> protocol. Typically set
19                  via parameter_defaults in the resource registry.
20     type: json
21   NeutronWorkers:
22     default: ''
23     description: |
24       Sets the number of API and RPC workers for the Neutron service. The
25       default value results in the configuration being left unset and a
26       system-dependent default will be chosen (usually the number of
27       processors). Please note that this can result in a large number of
28       processes and memory consumption on systems with a large core count. On
29       such systems it is recommended that a non-default value be selected that
30       matches the load requirements.
31     type: string
32   NeutronPassword:
33     description: The password for the neutron service and db account, used by neutron agents.
34     type: string
35     hidden: true
36   NeutronAllowL3AgentFailover:
37     default: 'True'
38     description: Allow automatic l3-agent failover
39     type: string
40   NovaPassword:
41     description: The password for the nova service and db account, used by nova-api.
42     type: string
43     hidden: true
44   NeutronEnableDVR:
45     description: Enable Neutron DVR.
46     default: false
47     type: boolean
48   KeystoneRegion:
49     type: string
50     default: 'regionOne'
51     description: Keystone region for endpoint
52   MonitoringSubscriptionNeutronServer:
53     default: 'overcloud-neutron-server'
54     type: string
55   NeutronApiLoggingSource:
56     type: json
57     default:
58       tag: openstack.neutron.api
59       path: /var/log/neutron/server.log
60   EnableInternalTLS:
61     type: boolean
62     default: false
63   NeutronApiPolicies:
64     description: |
65       A hash of policies to configure for Neutron API.
66       e.g. { neutron-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
67     default: {}
68     type: json
69
70   # DEPRECATED: the following options are deprecated and are currently maintained
71   # for backwards compatibility. They will be removed in the Ocata cycle.
72   NeutronL3HA:
73     default: ''
74     type: string
75     description: |
76       Whether to enable HA for virtual routers. When not set, L3 HA will be
77       automatically enabled if the number of nodes hosting controller
78       configurations and DVR is disabled. Valid values are 'true' or 'false'
79       This parameter is being deprecated in Newton and is scheduled to be
80       removed in Ocata.  Future releases will enable L3 HA by default if it is
81       appropriate for the deployment type. Alternate mechanisms will be
82       available to override.
83 parameter_groups:
84 - label: deprecated
85   description: |
86    The following parameters are deprecated and will be removed. They should not
87    be relied on for new deployments. If you have concerns regarding deprecated
88    parameters, please contact the TripleO development team on IRC or the
89    OpenStack mailing list.
90   parameters:
91   - NeutronL3HA
92
93 conditions:
94   use_tls_proxy: {equals : [{get_param: EnableInternalTLS}, true]}
95
96 resources:
97
98   TLSProxyBase:
99     type: OS::TripleO::Services::TLSProxyBase
100     properties:
101       ServiceNetMap: {get_param: ServiceNetMap}
102       DefaultPasswords: {get_param: DefaultPasswords}
103       EndpointMap: {get_param: EndpointMap}
104       EnableInternalTLS: {get_param: EnableInternalTLS}
105
106   NeutronBase:
107     type: ./neutron-base.yaml
108     properties:
109       ServiceNetMap: {get_param: ServiceNetMap}
110       DefaultPasswords: {get_param: DefaultPasswords}
111       EndpointMap: {get_param: EndpointMap}
112
113 outputs:
114   role_data:
115     description: Role data for the Neutron Server agent service.
116     value:
117       service_name: neutron_api
118       monitoring_subscription: {get_param: MonitoringSubscriptionNeutronServer}
119       logging_source: {get_param: NeutronApiLoggingSource}
120       logging_groups:
121         - neutron
122       config_settings:
123         map_merge:
124           - get_attr: [NeutronBase, role_data, config_settings]
125           - get_attr: [TLSProxyBase, role_data, config_settings]
126           - neutron::server::database_connection:
127               list_join:
128                 - ''
129                 - - {get_param: [EndpointMap, MysqlInternal, protocol]}
130                   - '://neutron:'
131                   - {get_param: NeutronPassword}
132                   - '@'
133                   - {get_param: [EndpointMap, MysqlInternal, host]}
134                   - '/ovs_neutron'
135                   - '?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo'
136             neutron::policy::policies: {get_param: NeutronApiPolicies}
137             neutron::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] }
138             neutron::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
139             neutron::server::api_workers: {get_param: NeutronWorkers}
140             neutron::server::rpc_workers: {get_param: NeutronWorkers}
141             neutron::server::allow_automatic_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
142             neutron::server::enable_proxy_headers_parsing: true
143             neutron::keystone::authtoken::password: {get_param: NeutronPassword}
144             neutron::server::notifications::auth_url: { get_param: [ EndpointMap, KeystoneInternal, uri_no_suffix ] }
145             neutron::server::notifications::tenant_name: 'service'
146             neutron::server::notifications::project_name: 'service'
147             neutron::server::notifications::password: {get_param: NovaPassword}
148             neutron::keystone::authtoken::project_name: 'service'
149             neutron::keystone::authtoken::user_domain_name: 'Default'
150             neutron::keystone::authtoken::project_domain_name: 'Default'
151             neutron::server::sync_db: true
152             tripleo.neutron_api.firewall_rules:
153               '114 neutron api':
154                 dport:
155                   - 9696
156                   - 13696
157             neutron::server::router_distributed: {get_param: NeutronEnableDVR}
158             # NOTE: bind IP is found in Heat replacing the network name with the local node IP
159             # for the given network; replacement examples (eg. for internal_api):
160             # internal_api -> IP
161             # internal_api_uri -> [IP]
162             # internal_api_subnet - > IP/CIDR
163             tripleo::profile::base::neutron::server::tls_proxy_bind_ip:
164               get_param: [ServiceNetMap, NeutronApiNetwork]
165             tripleo::profile::base::neutron::server::tls_proxy_fqdn:
166               str_replace:
167                 template:
168                   "%{hiera('fqdn_$NETWORK')}"
169                 params:
170                   $NETWORK: {get_param: [ServiceNetMap, NeutronApiNetwork]}
171             tripleo::profile::base::neutron::server::tls_proxy_port:
172               get_param: [EndpointMap, NeutronInternal, port]
173             # Bind to localhost if internal TLS is enabled, since we put a TLS
174             # proxy in front.
175             neutron::bind_host:
176               if:
177               - use_tls_proxy
178               - 'localhost'
179               - {get_param: [ServiceNetMap, NeutronApiNetwork]}
180             tripleo::profile::base::neutron::server::l3_ha_override: {get_param: NeutronL3HA}
181       step_config: |
182         include tripleo::profile::base::neutron::server
183       service_config_settings:
184         keystone:
185           neutron::keystone::auth::tenant: 'service'
186           neutron::keystone::auth::public_url: {get_param: [EndpointMap, NeutronPublic, uri]}
187           neutron::keystone::auth::internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
188           neutron::keystone::auth::admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
189           neutron::keystone::auth::password: {get_param: NeutronPassword}
190           neutron::keystone::auth::region: {get_param: KeystoneRegion}
191         mysql:
192           neutron::db::mysql::password: {get_param: NeutronPassword}
193           neutron::db::mysql::user: neutron
194           neutron::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
195           neutron::db::mysql::dbname: ovs_neutron
196           neutron::db::mysql::allowed_hosts:
197             - '%'
198             - "%{hiera('mysql_bind_host')}"
199       upgrade_tasks:
200         - name: Check if neutron_server is deployed
201           command: systemctl is-enabled neutron-server
202           tags: common
203           ignore_errors: True
204           register: neutron_server_enabled
205         - name: "PreUpgrade step0,validation: Check service neutron-server is running"
206           shell: /usr/bin/systemctl show 'neutron-server' --property ActiveState | grep '\bactive\b'
207           when: neutron_server_enabled.rc == 0
208           tags: step0,validation
209         - name: Stop neutron_api service
210           tags: step1
211           when: neutron_server_enabled.rc == 0
212           service: name=neutron-server state=stopped
213       metadata_settings:
214         get_attr: [TLSProxyBase, role_data, metadata_settings]