Merge "Add pre-network hook and example showing config-then-reboot"
[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
75 parameter_groups:
76 - label: deprecated
77   description: |
78    The following parameters are deprecated and will be removed. They should not
79    be relied on for new deployments. If you have concerns regarding deprecated
80    parameters, please contact the TripleO development team on IRC or the
81    OpenStack mailing list.
82   parameters:
83   - NeutronL3HA
84
85 resources:
86
87   NeutronBase:
88     type: ./neutron-base.yaml
89     properties:
90       ServiceNetMap: {get_param: ServiceNetMap}
91       DefaultPasswords: {get_param: DefaultPasswords}
92       EndpointMap: {get_param: EndpointMap}
93
94 outputs:
95   role_data:
96     description: Role data for the Neutron Server agent service.
97     value:
98       service_name: neutron_api
99       monitoring_subscription: {get_param: MonitoringSubscriptionNeutronServer}
100       logging_source: {get_param: NeutronApiLoggingSource}
101       logging_groups:
102         - neutron
103       config_settings:
104         map_merge:
105           - get_attr: [NeutronBase, role_data, config_settings]
106           - neutron::server::database_connection:
107               list_join:
108                 - ''
109                 - - {get_param: [EndpointMap, MysqlInternal, protocol]}
110                   - '://neutron:'
111                   - {get_param: NeutronPassword}
112                   - '@'
113                   - {get_param: [EndpointMap, MysqlInternal, host]}
114                   - '/ovs_neutron'
115                   - '?bind_address='
116                   - "%{hiera('tripleo::profile::base::database::mysql::client_bind_address')}"
117             neutron::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
118             neutron::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix]}
119             neutron::server::api_workers: {get_param: NeutronWorkers}
120             neutron::server::rpc_workers: {get_param: NeutronWorkers}
121             neutron::server::allow_automatic_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
122             neutron::server::enable_proxy_headers_parsing: true
123             neutron::keystone::authtoken::password: {get_param: NeutronPassword}
124
125             neutron::server::notifications::nova_url: { get_param: [ EndpointMap, NovaInternal, uri ] }
126             neutron::server::notifications::auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
127             neutron::server::notifications::tenant_name: 'service'
128             neutron::server::notifications::project_name: 'service'
129             neutron::server::notifications::password: {get_param: NovaPassword}
130             neutron::keystone::authtoken::project_name: 'service'
131             neutron::server::sync_db: true
132             tripleo.neutron_api.firewall_rules:
133               '114 neutron api':
134                 dport:
135                   - 9696
136                   - 13696
137             neutron::server::router_distributed: {get_param: NeutronEnableDVR}
138             # NOTE: bind IP is found in Heat replacing the network name with the local node IP
139             # for the given network; replacement examples (eg. for internal_api):
140             # internal_api -> IP
141             # internal_api_uri -> [IP]
142             # internal_api_subnet - > IP/CIDR
143             neutron::bind_host: {get_param: [ServiceNetMap, NeutronApiNetwork]}
144             tripleo::profile::base::neutron::server::l3_ha_override: {get_param: NeutronL3HA}
145       step_config: |
146         include tripleo::profile::base::neutron::server
147       service_config_settings:
148         keystone:
149           neutron::keystone::auth::tenant: 'service'
150           neutron::keystone::auth::public_url: {get_param: [EndpointMap, NeutronPublic, uri]}
151           neutron::keystone::auth::internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
152           neutron::keystone::auth::admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
153           neutron::keystone::auth::password: {get_param: NeutronPassword}
154           neutron::keystone::auth::region: {get_param: KeystoneRegion}
155         mysql:
156           neutron::db::mysql::password: {get_param: NeutronPassword}
157           neutron::db::mysql::user: neutron
158           neutron::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
159           neutron::db::mysql::dbname: ovs_neutron
160           neutron::db::mysql::allowed_hosts:
161             - '%'
162             - "%{hiera('mysql_bind_host')}"