Merge "Automatically backup and restore Swift rings from the undercloud"
[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
61   # DEPRECATED: the following options are deprecated and are currently maintained
62   # for backwards compatibility. They will be removed in the Ocata cycle.
63   NeutronL3HA:
64     default: ''
65     type: string
66     description: |
67       Whether to enable HA for virtual routers. When not set, L3 HA will be
68       automatically enabled if the number of nodes hosting controller
69       configurations and DVR is disabled. Valid values are 'true' or 'false'
70       This parameter is being deprecated in Newton and is scheduled to be
71       removed in Ocata.  Future releases will enable L3 HA by default if it is
72       appropriate for the deployment type. Alternate mechanisms will be
73       available to override.
74   EnableInternalTLS:
75     type: boolean
76     default: false
77
78 parameter_groups:
79 - label: deprecated
80   description: |
81    The following parameters are deprecated and will be removed. They should not
82    be relied on for new deployments. If you have concerns regarding deprecated
83    parameters, please contact the TripleO development team on IRC or the
84    OpenStack mailing list.
85   parameters:
86   - NeutronL3HA
87
88 conditions:
89   use_tls_proxy: {equals : [{get_param: EnableInternalTLS}, true]}
90
91 resources:
92
93   TLSProxyBase:
94     type: OS::TripleO::Services::TLSProxyBase
95     properties:
96       ServiceNetMap: {get_param: ServiceNetMap}
97       DefaultPasswords: {get_param: DefaultPasswords}
98       EndpointMap: {get_param: EndpointMap}
99       EnableInternalTLS: {get_param: EnableInternalTLS}
100
101   NeutronBase:
102     type: ./neutron-base.yaml
103     properties:
104       ServiceNetMap: {get_param: ServiceNetMap}
105       DefaultPasswords: {get_param: DefaultPasswords}
106       EndpointMap: {get_param: EndpointMap}
107
108 outputs:
109   role_data:
110     description: Role data for the Neutron Server agent service.
111     value:
112       service_name: neutron_api
113       monitoring_subscription: {get_param: MonitoringSubscriptionNeutronServer}
114       logging_source: {get_param: NeutronApiLoggingSource}
115       logging_groups:
116         - neutron
117       config_settings:
118         map_merge:
119           - get_attr: [NeutronBase, role_data, config_settings]
120           - get_attr: [TLSProxyBase, role_data, config_settings]
121           - neutron::server::database_connection:
122               list_join:
123                 - ''
124                 - - {get_param: [EndpointMap, MysqlInternal, protocol]}
125                   - '://neutron:'
126                   - {get_param: NeutronPassword}
127                   - '@'
128                   - {get_param: [EndpointMap, MysqlInternal, host]}
129                   - '/ovs_neutron'
130                   - '?bind_address='
131                   - "%{hiera('tripleo::profile::base::database::mysql::client_bind_address')}"
132             neutron::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
133             neutron::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
134             neutron::server::api_workers: {get_param: NeutronWorkers}
135             neutron::server::rpc_workers: {get_param: NeutronWorkers}
136             neutron::server::allow_automatic_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
137             neutron::server::enable_proxy_headers_parsing: true
138             neutron::keystone::authtoken::password: {get_param: NeutronPassword}
139             neutron::server::notifications::auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
140             neutron::server::notifications::tenant_name: 'service'
141             neutron::server::notifications::project_name: 'service'
142             neutron::server::notifications::password: {get_param: NovaPassword}
143             neutron::keystone::authtoken::project_name: 'service'
144             neutron::server::sync_db: true
145             tripleo.neutron_api.firewall_rules:
146               '114 neutron api':
147                 dport:
148                   - 9696
149                   - 13696
150             neutron::server::router_distributed: {get_param: NeutronEnableDVR}
151             # NOTE: bind IP is found in Heat replacing the network name with the local node IP
152             # for the given network; replacement examples (eg. for internal_api):
153             # internal_api -> IP
154             # internal_api_uri -> [IP]
155             # internal_api_subnet - > IP/CIDR
156             tripleo::profile::base::neutron::server::tls_proxy_bind_ip:
157               get_param: [ServiceNetMap, NeutronApiNetwork]
158             tripleo::profile::base::neutron::server::tls_proxy_fqdn:
159               str_replace:
160                 template:
161                   "%{hiera('fqdn_$NETWORK')}"
162                 params:
163                   $NETWORK: {get_param: [ServiceNetMap, NeutronApiNetwork]}
164             tripleo::profile::base::neutron::server::tls_proxy_port:
165               get_param: [EndpointMap, NeutronInternal, port]
166             # Bind to localhost if internal TLS is enabled, since we put a TLS
167             # proxy in front.
168             neutron::bind_host:
169               if:
170               - use_tls_proxy
171               - 'localhost'
172               - {get_param: [ServiceNetMap, NeutronApiNetwork]}
173             tripleo::profile::base::neutron::server::l3_ha_override: {get_param: NeutronL3HA}
174       step_config: |
175         include tripleo::profile::base::neutron::server
176       service_config_settings:
177         keystone:
178           neutron::keystone::auth::tenant: 'service'
179           neutron::keystone::auth::public_url: {get_param: [EndpointMap, NeutronPublic, uri]}
180           neutron::keystone::auth::internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
181           neutron::keystone::auth::admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
182           neutron::keystone::auth::password: {get_param: NeutronPassword}
183           neutron::keystone::auth::region: {get_param: KeystoneRegion}
184         mysql:
185           neutron::db::mysql::password: {get_param: NeutronPassword}
186           neutron::db::mysql::user: neutron
187           neutron::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
188           neutron::db::mysql::dbname: ovs_neutron
189           neutron::db::mysql::allowed_hosts:
190             - '%'
191             - "%{hiera('mysql_bind_host')}"
192       upgrade_tasks:
193         - name: "PreUpgrade step0,validation: Check service neutron-server is running"
194           shell: /usr/bin/systemctl show 'neutron-server' --property ActiveState | grep '\bactive\b'
195           tags: step0,validation
196         - name: Stop neutron_api service
197           tags: step2
198           service: name=neutron-server state=stopped