Retire project
Change-Id: I8fad0377029402e1930d29654e5a6122fb65d04b
This commit is contained in:
parent
4b45ad654f
commit
55d1b13170
|
@ -1,4 +0,0 @@
|
||||||
tests/build/
|
|
||||||
*.swp
|
|
||||||
*.pyc
|
|
||||||
.ropeproject
|
|
|
@ -1,4 +0,0 @@
|
||||||
[gerrit]
|
|
||||||
host=review.openstack.org
|
|
||||||
port=29418
|
|
||||||
project=openstack/salt-formula-heat.git
|
|
|
@ -1,10 +0,0 @@
|
||||||
heat formula
|
|
||||||
============
|
|
||||||
|
|
||||||
2016.4.1 (2016-04-15)
|
|
||||||
|
|
||||||
- second release
|
|
||||||
|
|
||||||
0.0.1 (2015-08-03)
|
|
||||||
|
|
||||||
- Initial formula setup
|
|
8
FORMULA
8
FORMULA
|
@ -1,8 +0,0 @@
|
||||||
name: heat
|
|
||||||
os: Debian, RedHat
|
|
||||||
os_family: Debian, RedHat
|
|
||||||
version: 201606
|
|
||||||
release: 1
|
|
||||||
summary: Formula for installing and configuring heat
|
|
||||||
description: Formula for installing and configuring heat
|
|
||||||
top_level_dir: heat
|
|
201
LICENSE
201
LICENSE
|
@ -1,201 +0,0 @@
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
26
Makefile
26
Makefile
|
@ -1,26 +0,0 @@
|
||||||
DESTDIR=/
|
|
||||||
SALTENVDIR=/usr/share/salt-formulas/env
|
|
||||||
RECLASSDIR=/usr/share/salt-formulas/reclass
|
|
||||||
FORMULANAME=$(shell grep name: metadata.yml|head -1|cut -d : -f 2|grep -Eo '[a-z0-9\-]*')
|
|
||||||
|
|
||||||
all:
|
|
||||||
@echo "make install - Install into DESTDIR"
|
|
||||||
@echo "make test - Run tests"
|
|
||||||
@echo "make clean - Cleanup after tests run"
|
|
||||||
|
|
||||||
install:
|
|
||||||
# Formula
|
|
||||||
[ -d $(DESTDIR)/$(SALTENVDIR) ] || mkdir -p $(DESTDIR)/$(SALTENVDIR)
|
|
||||||
cp -a $(FORMULANAME) $(DESTDIR)/$(SALTENVDIR)/
|
|
||||||
[ ! -d _modules ] || cp -a _modules $(DESTDIR)/$(SALTENVDIR)/
|
|
||||||
[ ! -d _states ] || cp -a _states $(DESTDIR)/$(SALTENVDIR)/ || true
|
|
||||||
# Metadata
|
|
||||||
[ -d $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME) ] || mkdir -p $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
|
|
||||||
cp -a metadata/service/* $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
|
|
||||||
|
|
||||||
test:
|
|
||||||
[ ! -d tests ] || (cd tests; ./run_tests.sh)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
[ ! -d tests/build ] || rm -rf tests/build
|
|
||||||
[ ! -d build ] || rm -rf build
|
|
169
README.rst
169
README.rst
|
@ -1,164 +1,9 @@
|
||||||
|
Project moved
|
||||||
|
=============
|
||||||
|
|
||||||
====
|
This repository as a part of openstack-salt project was moved to join rest of
|
||||||
Heat
|
salt-formulas ecosystem.
|
||||||
====
|
|
||||||
|
|
||||||
Heat is the main project in the OpenStack Orchestration program. It implements
|
Github: https://github.com/salt-formulas
|
||||||
an orchestration engine to launch multiple composite cloud applications based
|
Launchpad https://launchpad.net/salt-formulas
|
||||||
on templates in the form of text files that can be treated like code. A native
|
IRC: #salt-formulas @ irc.freenode.net
|
||||||
Heat template format is evolving, but Heat also endeavours to provide
|
|
||||||
compatibility with the AWS CloudFormation template format, so that many
|
|
||||||
existing CloudFormation templates can be launched on OpenStack. Heat provides
|
|
||||||
both an OpenStack-native ReST API and a CloudFormation-compatible Query API.
|
|
||||||
|
|
||||||
Sample pillars
|
|
||||||
==============
|
|
||||||
|
|
||||||
Single Heat services on the controller node
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
enabled: true
|
|
||||||
version: icehouse
|
|
||||||
region: RegionOne
|
|
||||||
bind:
|
|
||||||
metadata:
|
|
||||||
address: 10.0.106.10
|
|
||||||
port: 8000
|
|
||||||
waitcondition:
|
|
||||||
address: 10.0.106.10
|
|
||||||
port: 8000
|
|
||||||
watch:
|
|
||||||
address: 10.0.106.10
|
|
||||||
port: 8003
|
|
||||||
cloudwatch:
|
|
||||||
host: 10.0.106.20
|
|
||||||
api:
|
|
||||||
host: 10.0.106.20
|
|
||||||
api_cfn:
|
|
||||||
host: 10.0.106.20
|
|
||||||
database:
|
|
||||||
engine: mysql
|
|
||||||
host: 10.0.106.20
|
|
||||||
port: 3306
|
|
||||||
name: heat
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
identity:
|
|
||||||
engine: keystone
|
|
||||||
host: 10.0.106.20
|
|
||||||
port: 35357
|
|
||||||
tenant: service
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
host: 10.0.106.20
|
|
||||||
port: 5672
|
|
||||||
user: openstack
|
|
||||||
password: password
|
|
||||||
virtual_host: '/openstack'
|
|
||||||
ha_queues: True
|
|
||||||
|
|
||||||
Heat client with specified git templates
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
heat:
|
|
||||||
client:
|
|
||||||
enabled: true
|
|
||||||
source:
|
|
||||||
engine: git
|
|
||||||
address: git@repo.domain.com/heat-templates.git
|
|
||||||
revision: master
|
|
||||||
|
|
||||||
Heat system definition of several stacks/systems
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
heat:
|
|
||||||
control:
|
|
||||||
enabled: true
|
|
||||||
system:
|
|
||||||
web_production:
|
|
||||||
format: hot
|
|
||||||
template_file: /srv/heat/template/web_cluster.hot
|
|
||||||
environment: /srv/heat/env/web_cluster/prd.env
|
|
||||||
web_staging:
|
|
||||||
format: hot
|
|
||||||
template_file: /srv/heat/template/web_cluster.hot
|
|
||||||
environment: /srv/heat/env/web_cluster/stg.env
|
|
||||||
|
|
||||||
Ceilometer notification
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
enabled: true
|
|
||||||
version: icehouse
|
|
||||||
notification: true
|
|
||||||
|
|
||||||
|
|
||||||
Client-side RabbitMQ HA setup
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
....
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
members:
|
|
||||||
- host: 10.0.16.1
|
|
||||||
- host: 10.0.16.2
|
|
||||||
- host: 10.0.16.3
|
|
||||||
user: openstack
|
|
||||||
password: pwd
|
|
||||||
virtual_host: '/openstack'
|
|
||||||
....
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
=====
|
|
||||||
|
|
||||||
Install Contrail Heat plugin for additional resources
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
pip install git+https://github.com/Juniper/contrail-heat.git@R1.30
|
|
||||||
|
|
||||||
Things to improve
|
|
||||||
=================
|
|
||||||
|
|
||||||
* IBM UrbanCode Deploy - has resources for AWS and VMWare
|
|
||||||
http://www.ibm.com/developerworks/rational/library/multi-platform-application-deployment-urbancode-deploy/
|
|
||||||
|
|
||||||
Documentation and Bugs
|
|
||||||
============================
|
|
||||||
|
|
||||||
To learn how to deploy OpenStack Salt, consult the documentation available
|
|
||||||
online at:
|
|
||||||
|
|
||||||
https://wiki.openstack.org/wiki/OpenStackSalt
|
|
||||||
|
|
||||||
In the unfortunate event that bugs are discovered, they should be reported to
|
|
||||||
the appropriate bug tracker. If you obtained the software from a 3rd party
|
|
||||||
operating system vendor, it is often wise to use their own bug tracker for
|
|
||||||
reporting problems. In all other cases use the master OpenStack bug tracker,
|
|
||||||
available at:
|
|
||||||
|
|
||||||
http://bugs.launchpad.net/openstack-salt
|
|
||||||
|
|
||||||
Developers wishing to work on the OpenStack Salt project should always base
|
|
||||||
their work on the latest formulas code, available from the master GIT
|
|
||||||
repository at:
|
|
||||||
|
|
||||||
https://git.openstack.org/cgit/openstack/salt-formula-heat
|
|
||||||
|
|
||||||
Developers should also join the discussion on the IRC list, at:
|
|
||||||
|
|
||||||
https://wiki.openstack.org/wiki/Meetings/openstack-salt
|
|
||||||
|
|
257
_modules/heat.py
257
_modules/heat.py
|
@ -1,257 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
'''
|
|
||||||
Module for handling Heat stacks.
|
|
||||||
|
|
||||||
:depends: - python-heatclient>=0.2.3 Python module
|
|
||||||
:configuration: This module is not usable until the following are specified
|
|
||||||
either in a pillar or in the minion's config file::
|
|
||||||
|
|
||||||
keystone.user: admin
|
|
||||||
keystone.password: verybadpass
|
|
||||||
keystone.tenant: admin
|
|
||||||
keystone.tenant_id: f80919baedab48ec8931f200c65a50df
|
|
||||||
keystone.insecure: False #(optional)
|
|
||||||
keystone.auth_url: 'http://127.0.0.1:5000/v2.0/'
|
|
||||||
|
|
||||||
If configuration for multiple openstack accounts is required, they can be
|
|
||||||
set up as different configuration profiles:
|
|
||||||
For example::
|
|
||||||
|
|
||||||
openstack1:
|
|
||||||
keystone.user: admin
|
|
||||||
keystone.password: verybadpass
|
|
||||||
keystone.tenant: admin
|
|
||||||
keystone.tenant_id: f80919baedab48ec8931f200c65a50df
|
|
||||||
keystone.auth_url: 'http://127.0.0.1:5000/v2.0/'
|
|
||||||
|
|
||||||
openstack2:
|
|
||||||
keystone.user: admin
|
|
||||||
keystone.password: verybadpass
|
|
||||||
keystone.tenant: admin
|
|
||||||
keystone.tenant_id: f80919baedab48ec8931f200c65a50df
|
|
||||||
keystone.auth_url: 'http://127.0.0.2:5000/v2.0/'
|
|
||||||
|
|
||||||
With this configuration in place, any of the heat functions can make
|
|
||||||
use of a configuration profile by declaring it explicitly.
|
|
||||||
For example::
|
|
||||||
|
|
||||||
salt '*' heat.stack_list profile=openstack1
|
|
||||||
|
|
||||||
'''
|
|
||||||
|
|
||||||
from __future__ import absolute_import
|
|
||||||
import logging
|
|
||||||
LOG = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
# Import third party libs
|
|
||||||
HAS_HEAT = False
|
|
||||||
try:
|
|
||||||
from heatclient.v1 import client
|
|
||||||
HAS_HEAT = True
|
|
||||||
except Exception, e:
|
|
||||||
LOG.trace("heatclient or keystone is not installed %s" % e)
|
|
||||||
|
|
||||||
import json
|
|
||||||
import glob
|
|
||||||
from os.path import basename
|
|
||||||
from yaml import load, dump
|
|
||||||
|
|
||||||
HEAT_ROOT = "/srv/heat/env"
|
|
||||||
|
|
||||||
TEMPLATE_PATH = "template"
|
|
||||||
ENV_PATH ="env"
|
|
||||||
|
|
||||||
HOT = ".hot"
|
|
||||||
ENV = ".env"
|
|
||||||
|
|
||||||
HOT_MASK = "*%s" % HOT
|
|
||||||
ENV_MASK = "*%s" % ENV
|
|
||||||
|
|
||||||
|
|
||||||
def _autheticate(func_name):
|
|
||||||
'''
|
|
||||||
Authenticate requests with the salt keystone module and format return data
|
|
||||||
'''
|
|
||||||
@wraps(func_name)
|
|
||||||
def decorator_method(*args, **kwargs):
|
|
||||||
'''
|
|
||||||
Authenticate request and format return data
|
|
||||||
'''
|
|
||||||
connection_args = {'profile': kwargs.get('profile', None)}
|
|
||||||
nkwargs = {}
|
|
||||||
for kwarg in kwargs:
|
|
||||||
if 'connection_' in kwarg:
|
|
||||||
connection_args.update({kwarg: kwargs[kwarg]})
|
|
||||||
elif '__' not in kwarg:
|
|
||||||
nkwargs.update({kwarg: kwargs[kwarg]})
|
|
||||||
kstone = __salt__['keystone.auth'](**connection_args)
|
|
||||||
token = kstone.auth_token
|
|
||||||
endpoint = kstone.service_catalog.url_for(
|
|
||||||
service_type='orchestration',
|
|
||||||
endpoint_type='publicURL')
|
|
||||||
heat_interface = client.Client(
|
|
||||||
endpoint_url=endpoint, token=token)
|
|
||||||
return_data = func_name(heat_interface, *args, **nkwargs)
|
|
||||||
if isinstance(return_data, list):
|
|
||||||
# format list as a dict for rendering
|
|
||||||
return {data.get('name', None) or data['id']: data
|
|
||||||
for data in return_data}
|
|
||||||
return return_data
|
|
||||||
return decorator_method
|
|
||||||
|
|
||||||
|
|
||||||
def _filename(path):
|
|
||||||
"""
|
|
||||||
helper
|
|
||||||
return filename without extension
|
|
||||||
"""
|
|
||||||
return basename(path).split(".")[0]
|
|
||||||
|
|
||||||
|
|
||||||
def _get_templates(choices=True):
|
|
||||||
"""
|
|
||||||
if choices is False return array of full path
|
|
||||||
"""
|
|
||||||
|
|
||||||
path = "/".join([HEAT_ROOT, TEMPLATE_PATH])
|
|
||||||
|
|
||||||
templates = []
|
|
||||||
|
|
||||||
for path in glob.glob("/".join([path, HOT_MASK])):
|
|
||||||
name = filename(path)
|
|
||||||
templates.append((name, name.replace("_", " ").capitalize()))
|
|
||||||
|
|
||||||
return sorted(templates)
|
|
||||||
|
|
||||||
|
|
||||||
def _get_environments(template_name=None):
|
|
||||||
"""return environments choices
|
|
||||||
"""
|
|
||||||
path = "/".join([HEAT_ROOT, ENV_PATH])
|
|
||||||
|
|
||||||
environments = []
|
|
||||||
|
|
||||||
if template_name:
|
|
||||||
join = [path, template_name, ENV_MASK]
|
|
||||||
else:
|
|
||||||
join = [path, ENV_MASK]
|
|
||||||
|
|
||||||
for path in glob.glob("/".join(join)):
|
|
||||||
name = filename(path)
|
|
||||||
environments.append((name, name.replace("_", " ").capitalize()))
|
|
||||||
|
|
||||||
return sorted(environments)
|
|
||||||
|
|
||||||
|
|
||||||
def _get_template_data(name):
|
|
||||||
"""
|
|
||||||
load and return template data
|
|
||||||
"""
|
|
||||||
|
|
||||||
path = "/".join([
|
|
||||||
HEAT_ROOT,
|
|
||||||
TEMPLATE_PATH,
|
|
||||||
"".join([name, HOT])
|
|
||||||
])
|
|
||||||
|
|
||||||
try:
|
|
||||||
f = open(path, 'r')
|
|
||||||
data = load(f)
|
|
||||||
except Exception, e:
|
|
||||||
raise e
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
||||||
|
|
||||||
def _get_environment_data(template_name, name):
|
|
||||||
"""
|
|
||||||
load and return parameters data
|
|
||||||
"""
|
|
||||||
|
|
||||||
path = "/".join([
|
|
||||||
HEAT_ROOT,
|
|
||||||
ENV_PATH,
|
|
||||||
template_name,
|
|
||||||
"".join([name, ENV])
|
|
||||||
])
|
|
||||||
|
|
||||||
try:
|
|
||||||
f = open(path, 'r')
|
|
||||||
data = load(f)
|
|
||||||
except Exception, e:
|
|
||||||
raise e
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
||||||
|
|
||||||
def __virtual__():
|
|
||||||
'''
|
|
||||||
Only load this module if Heat
|
|
||||||
is installed on this minion.
|
|
||||||
'''
|
|
||||||
if HAS_HEAT:
|
|
||||||
return 'heat'
|
|
||||||
return False
|
|
||||||
|
|
||||||
__opts__ = {}
|
|
||||||
|
|
||||||
|
|
||||||
def stack_list(tenant=None, **kwargs):
|
|
||||||
|
|
||||||
heat = heatclient()
|
|
||||||
|
|
||||||
ret = {}
|
|
||||||
ret["result"] = heat.stacks.list()
|
|
||||||
|
|
||||||
return ret
|
|
||||||
|
|
||||||
|
|
||||||
def stack_create(template, environment=None, name=None, parameters=None, timeout_mins=5,
|
|
||||||
enable_rollback=True, **kwargs):
|
|
||||||
'''
|
|
||||||
Return a specific endpoint (gitlab endpoint-get)
|
|
||||||
|
|
||||||
:params template: template name
|
|
||||||
:params name: if not provided template will be used
|
|
||||||
|
|
||||||
CLI Example:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
salt '*' heat.stack_create template_name
|
|
||||||
'''
|
|
||||||
|
|
||||||
heat = heatclient()
|
|
||||||
|
|
||||||
# get template
|
|
||||||
|
|
||||||
template_data = get_template_data(template)
|
|
||||||
|
|
||||||
# Validate the template and get back the params.
|
|
||||||
kwargs = {}
|
|
||||||
kwargs['template'] = str(json.dumps(template_data, cls=CustomEncoder))
|
|
||||||
|
|
||||||
try:
|
|
||||||
validated = heat.stacks.validate(**kwargs)
|
|
||||||
except Exception as e:
|
|
||||||
LOG.error("Template not valid %s" % e)
|
|
||||||
|
|
||||||
fields = {
|
|
||||||
'stack_name': name,
|
|
||||||
'template': json.dumps(template_data, cls=CustomEncoder),
|
|
||||||
'environment': parameters,
|
|
||||||
'parameters': parameters,
|
|
||||||
'timeout_mins': timeout_mins,
|
|
||||||
'disable_rollback': enable_rollback,
|
|
||||||
}
|
|
||||||
#LOG.debug(dir(heat))
|
|
||||||
|
|
||||||
heat.stacks.create(**fields)
|
|
||||||
|
|
||||||
return {'status': result}
|
|
||||||
|
|
||||||
|
|
||||||
def stack_delete(template, name=None, parameters=None, **kwargs):
|
|
||||||
|
|
||||||
return {'Error': 'Could not delete stack.'}
|
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
'''
|
|
||||||
Management of Heat stacks
|
|
||||||
==============================
|
|
||||||
|
|
||||||
:depends: - python-heatclient>=0.2.3 Python module
|
|
||||||
:configuration: See :py:mod:`salt.modules.heat` for setup instructions.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
heat.keystone_endpoint: 'http://icehouse.cloudlab.cz:5000/v2.0'
|
|
||||||
heat.url: 'http://10.0.106.19:8004/v1/fc015a00cda344e9b66e3d99e0a0591a'
|
|
||||||
heat.username: 'admin'
|
|
||||||
heat.tenant_id: 'fc015a00cda344e9b66e3d99e0a0591a'
|
|
||||||
heat.password: 'cloudlab'
|
|
||||||
|
|
||||||
'''
|
|
||||||
|
|
||||||
def __virtual__():
|
|
||||||
'''
|
|
||||||
Only load if the gitlab module is in __salt__
|
|
||||||
'''
|
|
||||||
return 'heat' if 'python-heatclient' in __salt__ else False
|
|
||||||
|
|
||||||
|
|
||||||
def stack_absent(name):
|
|
||||||
|
|
||||||
pass
|
|
||||||
|
|
||||||
def stack_present(name, template_file=None, environment_file=None):
|
|
||||||
''''
|
|
||||||
Enforces stack
|
|
||||||
|
|
||||||
:param:name: The name of the stack to create
|
|
||||||
:param:template_file: Template file
|
|
||||||
'''
|
|
||||||
|
|
||||||
ret = {'name': name,
|
|
||||||
'changes': {},
|
|
||||||
'result': True,
|
|
||||||
'comment': 'Stack "{0}" already exists'.format(name)}
|
|
||||||
|
|
||||||
# Create project
|
|
||||||
__salt__['gitlab.project_create'](name, description, enabled,
|
|
||||||
profile=profile,
|
|
||||||
**connection_args)
|
|
||||||
ret['comment'] = 'Tenant "{0}" has been added'.format(name)
|
|
||||||
ret['changes']['Tenant'] = 'Created'
|
|
||||||
|
|
||||||
return ret
|
|
|
@ -1 +0,0 @@
|
||||||
python-yaml
|
|
|
@ -1,73 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
# implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path.insert(0, os.path.abspath('../..'))
|
|
||||||
# -- General configuration ----------------------------------------------------
|
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be
|
|
||||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
|
||||||
extensions = [
|
|
||||||
'sphinx.ext.autodoc',
|
|
||||||
]
|
|
||||||
|
|
||||||
# autodoc generation is a bit aggressive and a nuisance when doing heavy
|
|
||||||
# text edit cycles.
|
|
||||||
# execute "export SPHINX_DEBUG=1" in your terminal to disable
|
|
||||||
|
|
||||||
# The suffix of source filenames.
|
|
||||||
source_suffix = '.rst'
|
|
||||||
|
|
||||||
# The master toctree document.
|
|
||||||
master_doc = 'index'
|
|
||||||
|
|
||||||
# General information about the project.
|
|
||||||
project = u'salt-formula-heat'
|
|
||||||
copyright = u'2015, OpenStack Foundation'
|
|
||||||
|
|
||||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
|
||||||
add_function_parentheses = True
|
|
||||||
|
|
||||||
# If true, the current module name will be prepended to all description
|
|
||||||
# unit titles (such as .. function::).
|
|
||||||
add_module_names = True
|
|
||||||
|
|
||||||
# The name of the Pygments (syntax highlighting) style to use.
|
|
||||||
pygments_style = 'sphinx'
|
|
||||||
|
|
||||||
# -- Options for HTML output --------------------------------------------------
|
|
||||||
|
|
||||||
# The theme to use for HTML and HTML Help pages. Major themes that come with
|
|
||||||
# Sphinx are currently 'default' and 'sphinxdoc'.
|
|
||||||
# html_theme_path = ["."]
|
|
||||||
# html_theme = '_theme'
|
|
||||||
# html_static_path = ['static']
|
|
||||||
|
|
||||||
# Output file base name for HTML help builder.
|
|
||||||
htmlhelp_basename = '%sdoc' % project
|
|
||||||
|
|
||||||
# Grouping the document tree into LaTeX files. List of tuples
|
|
||||||
# (source start file, target name, title, author, documentclass
|
|
||||||
# [howto/manual]).
|
|
||||||
latex_documents = [
|
|
||||||
('index',
|
|
||||||
'%s.tex' % project,
|
|
||||||
u'%s Documentation' % project,
|
|
||||||
u'OpenStack Foundation', 'manual'),
|
|
||||||
]
|
|
||||||
|
|
||||||
# Example configuration for intersphinx: refer to the Python standard library.
|
|
||||||
# intersphinx_mapping = {'http://docs.python.org/': None}
|
|
|
@ -1 +0,0 @@
|
||||||
.. include:: ../../README.rst
|
|
|
@ -1,27 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import client with context %}
|
|
||||||
{%- if client.enabled %}
|
|
||||||
|
|
||||||
include:
|
|
||||||
- git
|
|
||||||
|
|
||||||
heat_client_packages:
|
|
||||||
pkg.installed:
|
|
||||||
- names: {{ client.pkgs }}
|
|
||||||
|
|
||||||
heat_client_home:
|
|
||||||
file.directory:
|
|
||||||
- name: /srv/heat
|
|
||||||
|
|
||||||
{%- if client.source.engine == 'git' %}
|
|
||||||
|
|
||||||
{{ client.source.address }}:
|
|
||||||
git.latest:
|
|
||||||
- target: /srv/heat/env
|
|
||||||
- rev: {{ client.source.revision }}
|
|
||||||
- require:
|
|
||||||
- pkg: git_packages
|
|
||||||
- file: /srv/heat
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import control with context %}
|
|
||||||
{%- for system_name, system in control.system.iteritems() %}
|
|
||||||
|
|
||||||
heat_stack_{{ system_name }}:
|
|
||||||
heat.stack_present:
|
|
||||||
- name: {{ system_name }}
|
|
||||||
{%- if system.template_file is defined %}
|
|
||||||
- template_file: {{ system.template_file }}
|
|
||||||
{%- endif %}
|
|
||||||
{%- if system.environment_file is defined %}
|
|
||||||
- environment_file: {{ system.environment_file }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- endfor %}
|
|
|
@ -1,31 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import server with context -%}
|
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
cat /srv/salt/pillar/heat-server.sls | envsubst > /tmp/heat-server.sls
|
|
||||||
mv /tmp/heat-server.sls /srv/salt/pillar/heat-server.sls
|
|
||||||
|
|
||||||
salt-call --local --retcode-passthrough state.highstate
|
|
||||||
|
|
||||||
{% for service in server.services %}
|
|
||||||
service {{ service }} stop || true
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
if [ "$1" == "api" ]; then
|
|
||||||
echo "starting heat-api"
|
|
||||||
su heat --shell=/bin/sh -c '/usr/bin/python /usr/bin/heat-api --config-file=/etc/heat/heat.conf'
|
|
||||||
elif [ "$1" == "api-cfn" ]; then
|
|
||||||
echo "starting heat-api-cfn"
|
|
||||||
su heat --shell=/bin/sh -c '/usr/bin/python /usr/bin/heat-api-cfn --config-file=/etc/heat/heat.conf'
|
|
||||||
elif [ "$1" == "engine" ]; then
|
|
||||||
echo "starting heat-engine"
|
|
||||||
su heat --shell=/bin/sh -c '/usr/bin/python /usr/bin/heat-engine --config-file=/etc/heat/heat.conf'
|
|
||||||
elif [ "$1" == "api-cloudwatch" ]; then
|
|
||||||
echo "starting heat-api-cloudwatch"
|
|
||||||
su heat --shell=/bin/sh -c '/usr/bin/python /usr/bin/heat-api-cloudwatch --config-file=/etc/heat/heat.conf'
|
|
||||||
else
|
|
||||||
echo "No parameter submitted, don't know what to start" 1>&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
{#-
|
|
||||||
vim: syntax=jinja
|
|
||||||
-#}
|
|
|
@ -1,937 +0,0 @@
|
||||||
{
|
|
||||||
"annotations": {
|
|
||||||
"enable": true,
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"datasource": "lma",
|
|
||||||
"enable": true,
|
|
||||||
"iconColor": "#C0C6BE",
|
|
||||||
"iconSize": 13,
|
|
||||||
"lineColor": "rgba(255, 96, 96, 0.592157)",
|
|
||||||
"name": "Status",
|
|
||||||
"query": "select title,tags,text from annotations where $timeFilter and cluster = 'heat'",
|
|
||||||
"showLine": true,
|
|
||||||
"tagsColumn": "tags",
|
|
||||||
"textColumn": "text",
|
|
||||||
"titleColumn": "title"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"editable": true,
|
|
||||||
"gnetId": null,
|
|
||||||
"hideControls": false,
|
|
||||||
"id": null,
|
|
||||||
"links": [],
|
|
||||||
"refresh": "1m",
|
|
||||||
"rows": [
|
|
||||||
{
|
|
||||||
"collapse": false,
|
|
||||||
"editable": true,
|
|
||||||
"height": "250px",
|
|
||||||
"panels": [
|
|
||||||
{
|
|
||||||
"cacheTimeout": null,
|
|
||||||
"colorBackground": true,
|
|
||||||
"colorValue": false,
|
|
||||||
"colors": [
|
|
||||||
"rgba(71, 212, 59, 0.4)",
|
|
||||||
"rgba(241, 181, 37, 0.73)",
|
|
||||||
"rgba(225, 40, 40, 0.59)"
|
|
||||||
],
|
|
||||||
"datasource": null,
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"format": "none",
|
|
||||||
"gauge": {
|
|
||||||
"maxValue": 100,
|
|
||||||
"minValue": 0,
|
|
||||||
"show": false,
|
|
||||||
"thresholdLabels": false,
|
|
||||||
"thresholdMarkers": true
|
|
||||||
},
|
|
||||||
"id": 6,
|
|
||||||
"interval": "> 60s",
|
|
||||||
"links": [],
|
|
||||||
"mappingType": 1,
|
|
||||||
"mappingTypes": [
|
|
||||||
{
|
|
||||||
"name": "value to text",
|
|
||||||
"value": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "range to text",
|
|
||||||
"value": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"maxDataPoints": 100,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"nullText": null,
|
|
||||||
"postfix": "",
|
|
||||||
"postfixFontSize": "50%",
|
|
||||||
"prefix": "",
|
|
||||||
"prefixFontSize": "50%",
|
|
||||||
"rangeMaps": [
|
|
||||||
{
|
|
||||||
"from": "null",
|
|
||||||
"text": "N/A",
|
|
||||||
"to": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"span": 2,
|
|
||||||
"sparkline": {
|
|
||||||
"fillColor": "rgba(31, 118, 189, 0.18)",
|
|
||||||
"full": false,
|
|
||||||
"lineColor": "rgb(31, 120, 193)",
|
|
||||||
"show": false
|
|
||||||
},
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"column": "value",
|
|
||||||
"condition": "",
|
|
||||||
"dsType": "influxdb",
|
|
||||||
"fill": "",
|
|
||||||
"function": "last",
|
|
||||||
"groupBy": [
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"$interval"
|
|
||||||
],
|
|
||||||
"type": "time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"null"
|
|
||||||
],
|
|
||||||
"type": "fill"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"groupByTags": [],
|
|
||||||
"groupby_field": "",
|
|
||||||
"interval": "",
|
|
||||||
"measurement": "cluster_status",
|
|
||||||
"policy": "default",
|
|
||||||
"query": "SELECT last(\"value\") FROM \"cluster_status\" WHERE \"environment_label\" =~ /^$environment$/ AND \"cluster_name\" = 'heat' AND $timeFilter GROUP BY time($interval) fill(null)",
|
|
||||||
"rawQuery": false,
|
|
||||||
"refId": "A",
|
|
||||||
"resultFormat": "time_series",
|
|
||||||
"select": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"value"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [],
|
|
||||||
"type": "last"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
{
|
|
||||||
"key": "environment_label",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "$environment"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "cluster_name",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "heat"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": "1,3",
|
|
||||||
"title": "",
|
|
||||||
"type": "singlestat",
|
|
||||||
"valueFontSize": "80%",
|
|
||||||
"valueMaps": [
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "no data",
|
|
||||||
"value": "null"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "OKAY",
|
|
||||||
"value": "0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "WARN",
|
|
||||||
"value": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "UNKW",
|
|
||||||
"value": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "CRIT",
|
|
||||||
"value": "3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "DOWN",
|
|
||||||
"value": "4"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"valueName": "current"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"aliasColors": {},
|
|
||||||
"bars": false,
|
|
||||||
"datasource": null,
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"fill": 1,
|
|
||||||
"grid": {
|
|
||||||
"threshold1": null,
|
|
||||||
"threshold1Color": "rgba(216, 200, 27, 0.27)",
|
|
||||||
"threshold2": null,
|
|
||||||
"threshold2Color": "rgba(234, 112, 112, 0.22)",
|
|
||||||
"thresholdLine": false
|
|
||||||
},
|
|
||||||
"id": 9,
|
|
||||||
"interval": "> 60s",
|
|
||||||
"legend": {
|
|
||||||
"avg": false,
|
|
||||||
"current": false,
|
|
||||||
"max": false,
|
|
||||||
"min": false,
|
|
||||||
"show": false,
|
|
||||||
"total": false,
|
|
||||||
"values": false
|
|
||||||
},
|
|
||||||
"lines": true,
|
|
||||||
"linewidth": 2,
|
|
||||||
"links": [],
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"percentage": false,
|
|
||||||
"pointradius": 5,
|
|
||||||
"points": false,
|
|
||||||
"renderer": "flot",
|
|
||||||
"seriesOverrides": [],
|
|
||||||
"span": 10,
|
|
||||||
"stack": false,
|
|
||||||
"steppedLine": true,
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"alias": "healthy",
|
|
||||||
"column": "value",
|
|
||||||
"dsType": "influxdb",
|
|
||||||
"function": "last",
|
|
||||||
"groupBy": [
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"$interval"
|
|
||||||
],
|
|
||||||
"type": "time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"type": "fill"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"groupByTags": [],
|
|
||||||
"measurement": "openstack_check_api",
|
|
||||||
"policy": "default",
|
|
||||||
"query": "SELECT last(\"value\") FROM \"openstack_check_api\" WHERE \"environment_label\" =~ /^$environment$/ AND \"service\" = 'heat-api' AND $timeFilter GROUP BY time($interval) fill(0)",
|
|
||||||
"rawQuery": false,
|
|
||||||
"refId": "A",
|
|
||||||
"resultFormat": "time_series",
|
|
||||||
"select": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"value"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [],
|
|
||||||
"type": "last"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
{
|
|
||||||
"key": "environment_label",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "$environment"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "service",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "heat-api"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"timeFrom": null,
|
|
||||||
"timeShift": null,
|
|
||||||
"title": "API Availability",
|
|
||||||
"tooltip": {
|
|
||||||
"msResolution": false,
|
|
||||||
"shared": false,
|
|
||||||
"sort": 0,
|
|
||||||
"value_type": "cumulative"
|
|
||||||
},
|
|
||||||
"type": "graph",
|
|
||||||
"xaxis": {
|
|
||||||
"show": true
|
|
||||||
},
|
|
||||||
"yaxes": [
|
|
||||||
{
|
|
||||||
"format": "none",
|
|
||||||
"label": "",
|
|
||||||
"logBase": 1,
|
|
||||||
"max": 1,
|
|
||||||
"min": 0,
|
|
||||||
"show": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"format": "short",
|
|
||||||
"logBase": 1,
|
|
||||||
"max": null,
|
|
||||||
"min": null,
|
|
||||||
"show": false
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"showTitle": true,
|
|
||||||
"title": "Service Status"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"collapse": false,
|
|
||||||
"editable": true,
|
|
||||||
"height": "100px",
|
|
||||||
"panels": [
|
|
||||||
{
|
|
||||||
"content": "<br />\n<h3 align=\"center\"> Up </h3>\n",
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"id": 57,
|
|
||||||
"links": [],
|
|
||||||
"mode": "html",
|
|
||||||
"span": 2,
|
|
||||||
"style": {},
|
|
||||||
"title": "",
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cacheTimeout": null,
|
|
||||||
"colorBackground": false,
|
|
||||||
"colorValue": false,
|
|
||||||
"colors": [
|
|
||||||
"rgba(71, 212, 59, 0.4)",
|
|
||||||
"rgba(245, 150, 40, 0.73)",
|
|
||||||
"rgba(225, 40, 40, 0.59)"
|
|
||||||
],
|
|
||||||
"datasource": null,
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"format": "none",
|
|
||||||
"gauge": {
|
|
||||||
"maxValue": 100,
|
|
||||||
"minValue": 0,
|
|
||||||
"show": false,
|
|
||||||
"thresholdLabels": false,
|
|
||||||
"thresholdMarkers": true
|
|
||||||
},
|
|
||||||
"id": 52,
|
|
||||||
"interval": "> 60s",
|
|
||||||
"links": [],
|
|
||||||
"mappingType": 1,
|
|
||||||
"mappingTypes": [
|
|
||||||
{
|
|
||||||
"name": "value to text",
|
|
||||||
"value": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "range to text",
|
|
||||||
"value": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"maxDataPoints": 100,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"nullText": null,
|
|
||||||
"postfix": "",
|
|
||||||
"postfixFontSize": "50%",
|
|
||||||
"prefix": "",
|
|
||||||
"prefixFontSize": "50%",
|
|
||||||
"rangeMaps": [
|
|
||||||
{
|
|
||||||
"from": "null",
|
|
||||||
"text": "N/A",
|
|
||||||
"to": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"span": 2,
|
|
||||||
"sparkline": {
|
|
||||||
"fillColor": "rgba(31, 118, 189, 0.18)",
|
|
||||||
"full": false,
|
|
||||||
"lineColor": "rgb(31, 120, 193)",
|
|
||||||
"show": false
|
|
||||||
},
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"column": "value",
|
|
||||||
"dsType": "influxdb",
|
|
||||||
"fill": "",
|
|
||||||
"function": "last",
|
|
||||||
"groupBy": [
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"$interval"
|
|
||||||
],
|
|
||||||
"type": "time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"null"
|
|
||||||
],
|
|
||||||
"type": "fill"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"groupByTags": [],
|
|
||||||
"measurement": "haproxy_backend_servers",
|
|
||||||
"policy": "default",
|
|
||||||
"query": "SELECT last(\"value\") FROM \"haproxy_backend_servers\" WHERE \"environment_label\" =~ /^$environment$/ AND \"backend\" = 'heat_api' AND \"state\" = 'up' AND $timeFilter GROUP BY time($interval) fill(null)",
|
|
||||||
"rawQuery": false,
|
|
||||||
"refId": "A",
|
|
||||||
"resultFormat": "time_series",
|
|
||||||
"select": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"value"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [],
|
|
||||||
"type": "last"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
{
|
|
||||||
"key": "environment_label",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "$environment"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "backend",
|
|
||||||
"value": "heat_api"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"condition": "AND",
|
|
||||||
"key": "state",
|
|
||||||
"value": "up"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": "1,1",
|
|
||||||
"title": "OpenStack",
|
|
||||||
"type": "singlestat",
|
|
||||||
"valueFontSize": "80%",
|
|
||||||
"valueMaps": [
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "N/A",
|
|
||||||
"value": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"valueName": "current"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cacheTimeout": null,
|
|
||||||
"colorBackground": false,
|
|
||||||
"colorValue": false,
|
|
||||||
"colors": [
|
|
||||||
"rgba(71, 212, 59, 0.4)",
|
|
||||||
"rgba(245, 150, 40, 0.73)",
|
|
||||||
"rgba(225, 40, 40, 0.59)"
|
|
||||||
],
|
|
||||||
"datasource": null,
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"format": "none",
|
|
||||||
"gauge": {
|
|
||||||
"maxValue": 100,
|
|
||||||
"minValue": 0,
|
|
||||||
"show": false,
|
|
||||||
"thresholdLabels": false,
|
|
||||||
"thresholdMarkers": true
|
|
||||||
},
|
|
||||||
"id": 53,
|
|
||||||
"interval": "> 60s",
|
|
||||||
"links": [],
|
|
||||||
"mappingType": 1,
|
|
||||||
"mappingTypes": [
|
|
||||||
{
|
|
||||||
"name": "value to text",
|
|
||||||
"value": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "range to text",
|
|
||||||
"value": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"maxDataPoints": 100,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"nullText": null,
|
|
||||||
"postfix": "",
|
|
||||||
"postfixFontSize": "50%",
|
|
||||||
"prefix": "",
|
|
||||||
"prefixFontSize": "50%",
|
|
||||||
"rangeMaps": [
|
|
||||||
{
|
|
||||||
"from": "null",
|
|
||||||
"text": "N/A",
|
|
||||||
"to": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"span": 2,
|
|
||||||
"sparkline": {
|
|
||||||
"fillColor": "rgba(31, 118, 189, 0.18)",
|
|
||||||
"full": false,
|
|
||||||
"lineColor": "rgb(31, 120, 193)",
|
|
||||||
"show": false
|
|
||||||
},
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"column": "value",
|
|
||||||
"dsType": "influxdb",
|
|
||||||
"fill": "",
|
|
||||||
"function": "last",
|
|
||||||
"groupBy": [
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"$interval"
|
|
||||||
],
|
|
||||||
"type": "time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"null"
|
|
||||||
],
|
|
||||||
"type": "fill"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"groupByTags": [],
|
|
||||||
"measurement": "haproxy_backend_servers",
|
|
||||||
"policy": "default",
|
|
||||||
"query": "SELECT last(\"value\") FROM \"haproxy_backend_servers\" WHERE \"environment_label\" =~ /^$environment$/ AND \"backend\" = 'heat_cfn_api' AND \"state\" = 'up' AND $timeFilter GROUP BY time($interval) fill(null)",
|
|
||||||
"rawQuery": false,
|
|
||||||
"refId": "A",
|
|
||||||
"resultFormat": "time_series",
|
|
||||||
"select": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"value"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [],
|
|
||||||
"type": "last"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
{
|
|
||||||
"key": "environment_label",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "$environment"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "backend",
|
|
||||||
"value": "heat_cfn_api"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"condition": "AND",
|
|
||||||
"key": "state",
|
|
||||||
"value": "up"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": "1,1",
|
|
||||||
"title": "CloudFormation",
|
|
||||||
"type": "singlestat",
|
|
||||||
"valueFontSize": "80%",
|
|
||||||
"valueMaps": [
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "N/A",
|
|
||||||
"value": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"valueName": "current"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"content": "<br />\n<h3 align=\"center\"> </h3>",
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"id": 56,
|
|
||||||
"links": [],
|
|
||||||
"mode": "html",
|
|
||||||
"span": 6,
|
|
||||||
"style": {},
|
|
||||||
"title": "",
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"content": "<br />\n<h3 align=\"center\"> Down </h3>\n",
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"id": 58,
|
|
||||||
"links": [],
|
|
||||||
"mode": "html",
|
|
||||||
"span": 2,
|
|
||||||
"style": {},
|
|
||||||
"title": "",
|
|
||||||
"type": "text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cacheTimeout": null,
|
|
||||||
"colorBackground": false,
|
|
||||||
"colorValue": true,
|
|
||||||
"colors": [
|
|
||||||
"rgba(255, 255, 255, 0.97)",
|
|
||||||
"rgba(237, 129, 40, 0.89)",
|
|
||||||
"rgba(245, 54, 54, 0.9)"
|
|
||||||
],
|
|
||||||
"datasource": null,
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"format": "none",
|
|
||||||
"gauge": {
|
|
||||||
"maxValue": 100,
|
|
||||||
"minValue": 0,
|
|
||||||
"show": false,
|
|
||||||
"thresholdLabels": false,
|
|
||||||
"thresholdMarkers": true
|
|
||||||
},
|
|
||||||
"id": 59,
|
|
||||||
"interval": "> 60s",
|
|
||||||
"links": [],
|
|
||||||
"mappingType": 1,
|
|
||||||
"mappingTypes": [
|
|
||||||
{
|
|
||||||
"name": "value to text",
|
|
||||||
"value": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "range to text",
|
|
||||||
"value": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"maxDataPoints": 100,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"nullText": null,
|
|
||||||
"postfix": "",
|
|
||||||
"postfixFontSize": "50%",
|
|
||||||
"prefix": "",
|
|
||||||
"prefixFontSize": "50%",
|
|
||||||
"rangeMaps": [
|
|
||||||
{
|
|
||||||
"from": "null",
|
|
||||||
"text": "N/A",
|
|
||||||
"to": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"span": 2,
|
|
||||||
"sparkline": {
|
|
||||||
"fillColor": "rgba(31, 118, 189, 0.18)",
|
|
||||||
"full": false,
|
|
||||||
"lineColor": "rgb(31, 120, 193)",
|
|
||||||
"show": false
|
|
||||||
},
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"column": "value",
|
|
||||||
"dsType": "influxdb",
|
|
||||||
"fill": "",
|
|
||||||
"function": "last",
|
|
||||||
"groupBy": [
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"$interval"
|
|
||||||
],
|
|
||||||
"type": "time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"null"
|
|
||||||
],
|
|
||||||
"type": "fill"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"groupByTags": [],
|
|
||||||
"measurement": "haproxy_backend_servers",
|
|
||||||
"policy": "default",
|
|
||||||
"query": "SELECT last(\"value\") FROM \"haproxy_backend_servers\" WHERE \"environment_label\" =~ /^$environment$/ AND \"backend\" = 'heat_api' AND \"state\" = 'down' AND $timeFilter GROUP BY time($interval) fill(null)",
|
|
||||||
"rawQuery": false,
|
|
||||||
"refId": "A",
|
|
||||||
"resultFormat": "time_series",
|
|
||||||
"select": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"value"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [],
|
|
||||||
"type": "last"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
{
|
|
||||||
"key": "environment_label",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "$environment"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "backend",
|
|
||||||
"value": "heat_api"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"condition": "AND",
|
|
||||||
"key": "state",
|
|
||||||
"value": "down"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": "1,1",
|
|
||||||
"title": "",
|
|
||||||
"type": "singlestat",
|
|
||||||
"valueFontSize": "80%",
|
|
||||||
"valueMaps": [
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "N/A",
|
|
||||||
"value": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"valueName": "current"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cacheTimeout": null,
|
|
||||||
"colorBackground": false,
|
|
||||||
"colorValue": true,
|
|
||||||
"colors": [
|
|
||||||
"rgba(255, 255, 255, 0.97)",
|
|
||||||
"rgba(237, 129, 40, 0.89)",
|
|
||||||
"rgba(245, 54, 54, 0.9)"
|
|
||||||
],
|
|
||||||
"datasource": null,
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"format": "none",
|
|
||||||
"gauge": {
|
|
||||||
"maxValue": 100,
|
|
||||||
"minValue": 0,
|
|
||||||
"show": false,
|
|
||||||
"thresholdLabels": false,
|
|
||||||
"thresholdMarkers": true
|
|
||||||
},
|
|
||||||
"id": 60,
|
|
||||||
"interval": "> 60s",
|
|
||||||
"links": [],
|
|
||||||
"mappingType": 1,
|
|
||||||
"mappingTypes": [
|
|
||||||
{
|
|
||||||
"name": "value to text",
|
|
||||||
"value": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "range to text",
|
|
||||||
"value": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"maxDataPoints": 100,
|
|
||||||
"nullPointMode": "connected",
|
|
||||||
"nullText": null,
|
|
||||||
"postfix": "",
|
|
||||||
"postfixFontSize": "50%",
|
|
||||||
"prefix": "",
|
|
||||||
"prefixFontSize": "50%",
|
|
||||||
"rangeMaps": [
|
|
||||||
{
|
|
||||||
"from": "null",
|
|
||||||
"text": "N/A",
|
|
||||||
"to": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"span": 2,
|
|
||||||
"sparkline": {
|
|
||||||
"fillColor": "rgba(31, 118, 189, 0.18)",
|
|
||||||
"full": false,
|
|
||||||
"lineColor": "rgb(31, 120, 193)",
|
|
||||||
"show": false
|
|
||||||
},
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"column": "value",
|
|
||||||
"dsType": "influxdb",
|
|
||||||
"fill": "",
|
|
||||||
"function": "last",
|
|
||||||
"groupBy": [
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"$interval"
|
|
||||||
],
|
|
||||||
"type": "time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"null"
|
|
||||||
],
|
|
||||||
"type": "fill"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"groupByTags": [],
|
|
||||||
"measurement": "haproxy_backend_servers",
|
|
||||||
"policy": "default",
|
|
||||||
"query": "SELECT last(\"value\") FROM \"haproxy_backend_servers\" WHERE \"environment_label\" =~ /^$environment$/ AND \"backend\" = 'heat_cfn_api' AND \"state\" = 'down' AND $timeFilter GROUP BY time($interval) fill(null)",
|
|
||||||
"rawQuery": false,
|
|
||||||
"refId": "A",
|
|
||||||
"resultFormat": "time_series",
|
|
||||||
"select": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"params": [
|
|
||||||
"value"
|
|
||||||
],
|
|
||||||
"type": "field"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"params": [],
|
|
||||||
"type": "last"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"tags": [
|
|
||||||
{
|
|
||||||
"key": "environment_label",
|
|
||||||
"operator": "=",
|
|
||||||
"value": "$environment"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "backend",
|
|
||||||
"value": "heat_cfn_api"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"condition": "AND",
|
|
||||||
"key": "state",
|
|
||||||
"value": "down"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"thresholds": "1,1",
|
|
||||||
"title": "",
|
|
||||||
"type": "singlestat",
|
|
||||||
"valueFontSize": "80%",
|
|
||||||
"valueMaps": [
|
|
||||||
{
|
|
||||||
"op": "=",
|
|
||||||
"text": "N/A",
|
|
||||||
"value": "null"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"valueName": "current"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"content": "<br />\n<h3 align=\"center\"> </h3>",
|
|
||||||
"editable": true,
|
|
||||||
"error": false,
|
|
||||||
"id": 63,
|
|
||||||
"links": [],
|
|
||||||
"mode": "html",
|
|
||||||
"span": 6,
|
|
||||||
"style": {},
|
|
||||||
"title": "",
|
|
||||||
"type": "text"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"showTitle": true,
|
|
||||||
"title": "Heat API"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"schemaVersion": 12,
|
|
||||||
"sharedCrosshair": true,
|
|
||||||
"style": "dark",
|
|
||||||
"tags": [],
|
|
||||||
"templating": {
|
|
||||||
"enable": true,
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"allFormat": "regex values",
|
|
||||||
"current": {},
|
|
||||||
"datasource": null,
|
|
||||||
"hide": 0,
|
|
||||||
"includeAll": false,
|
|
||||||
"name": "environment",
|
|
||||||
"options": [],
|
|
||||||
"query": "show tag values from cpu_idle with key = environment_label",
|
|
||||||
"refresh": 1,
|
|
||||||
"refresh_on_load": true,
|
|
||||||
"regex": "",
|
|
||||||
"type": "query"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"time": {
|
|
||||||
"from": "now-1h",
|
|
||||||
"to": "now"
|
|
||||||
},
|
|
||||||
"timepicker": {
|
|
||||||
"collapse": false,
|
|
||||||
"enable": true,
|
|
||||||
"notice": false,
|
|
||||||
"now": true,
|
|
||||||
"refresh_intervals": [
|
|
||||||
"5s",
|
|
||||||
"10s",
|
|
||||||
"30s",
|
|
||||||
"1m",
|
|
||||||
"5m",
|
|
||||||
"15m",
|
|
||||||
"30m",
|
|
||||||
"1h",
|
|
||||||
"2h",
|
|
||||||
"1d"
|
|
||||||
],
|
|
||||||
"status": "Stable",
|
|
||||||
"time_options": [
|
|
||||||
"5m",
|
|
||||||
"15m",
|
|
||||||
"1h",
|
|
||||||
"6h",
|
|
||||||
"12h",
|
|
||||||
"24h",
|
|
||||||
"2d",
|
|
||||||
"7d",
|
|
||||||
"30d"
|
|
||||||
],
|
|
||||||
"type": "timepicker"
|
|
||||||
},
|
|
||||||
"timezone": "browser",
|
|
||||||
"title": "Heat",
|
|
||||||
"version": 3
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
[logstreamer_heat]
|
|
||||||
type = "LogstreamerInput"
|
|
||||||
log_directory = "/var/log/heat"
|
|
||||||
file_match = '(?P<Service>.+)\.log\.?(?P<Index>\d*)?(.gz)?'
|
|
||||||
differentiator = ["'heat','_','Service'"]
|
|
||||||
priority = ["^Index"]
|
|
||||||
decoder = "openstack"
|
|
||||||
oldest_duration = "168h"
|
|
||||||
|
|
||||||
[openstack]
|
|
||||||
type = "SandboxDecoder"
|
|
||||||
filename = "lua_modules/decoders/openstack.lua"
|
|
||||||
module_directory = "/usr/share/heka/lua_modules;/usr/share/heka/lua_modules/common"
|
|
|
@ -1,98 +0,0 @@
|
||||||
# heat-api pipeline
|
|
||||||
[pipeline:heat-api]
|
|
||||||
pipeline = request_id faultwrap ssl versionnegotiation authurl authtoken context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for standalone heat
|
|
||||||
# ie. uses alternative auth backend that authenticates users against keystone
|
|
||||||
# using username and password instead of validating token (which requires
|
|
||||||
# an admin/service token).
|
|
||||||
# To enable, in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = standalone
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-standalone]
|
|
||||||
pipeline = request_id faultwrap ssl versionnegotiation authurl authpassword context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for custom cloud backends
|
|
||||||
# i.e. in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = custombackend
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-custombackend]
|
|
||||||
pipeline = request_id faultwrap versionnegotiation context custombackendauth apiv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline
|
|
||||||
[pipeline:heat-api-cfn]
|
|
||||||
pipeline = cfnversionnegotiation ec2authtoken authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cfn-standalone]
|
|
||||||
pipeline = cfnversionnegotiation ec2authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline
|
|
||||||
[pipeline:heat-api-cloudwatch]
|
|
||||||
pipeline = versionnegotiation ec2authtoken authtoken context apicwapp
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cloudwatch-standalone]
|
|
||||||
pipeline = versionnegotiation ec2authtoken context apicwapp
|
|
||||||
|
|
||||||
[app:apiv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.openstack.v1:API
|
|
||||||
|
|
||||||
[app:apicfnv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cfn.v1:API
|
|
||||||
|
|
||||||
[app:apicwapp]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cloudwatch:API
|
|
||||||
|
|
||||||
[filter:versionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:faultwrap]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:faultwrap_filter
|
|
||||||
|
|
||||||
[filter:cfnversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cfn:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:cwversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cloudwatch:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:context]
|
|
||||||
paste.filter_factory = heat.common.context:ContextMiddleware_filter_factory
|
|
||||||
|
|
||||||
[filter:ec2authtoken]
|
|
||||||
paste.filter_factory = heat.api.aws.ec2token:EC2Token_filter_factory
|
|
||||||
|
|
||||||
[filter:ssl]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:sslmiddleware_filter
|
|
||||||
|
|
||||||
# Middleware to set auth_url header appropriately
|
|
||||||
[filter:authurl]
|
|
||||||
paste.filter_factory = heat.common.auth_url:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates token against keystone
|
|
||||||
[filter:authtoken]
|
|
||||||
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates username/password against keystone
|
|
||||||
[filter:authpassword]
|
|
||||||
paste.filter_factory = heat.common.auth_password:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates against custom backend
|
|
||||||
[filter:custombackendauth]
|
|
||||||
paste.filter_factory = heat.common.custom_backend_auth:filter_factory
|
|
||||||
|
|
||||||
# Middleware to set x-openstack-request-id in http response header
|
|
||||||
[filter:request_id]
|
|
||||||
paste.filter_factory = heat.openstack.common.middleware.request_id:RequestIdMiddleware.factory
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +0,0 @@
|
||||||
heat.conf.Debian
|
|
|
@ -1,9 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import server with context -%}
|
|
||||||
export OS_IDENTITY_API_VERSION=3
|
|
||||||
export OS_AUTH_URL=http://{{ server.identity.host }}:{{ server.identity.port }}/v3
|
|
||||||
export OS_PROJECT_DOMAIN_NAME=default
|
|
||||||
export OS_USER_DOMAIN_NAME=default
|
|
||||||
export OS_PROJECT_NAME={{ server.identity.admin_tenant }}
|
|
||||||
export OS_TENANT_NAME={{ server.identity.admin_tenant }}
|
|
||||||
export OS_USERNAME={{ server.identity.admin_user }}
|
|
||||||
export OS_PASSWORD={{ server.identity.admin_password }}
|
|
|
@ -1,104 +0,0 @@
|
||||||
|
|
||||||
# heat-api pipeline
|
|
||||||
[pipeline:heat-api]
|
|
||||||
pipeline = request_id faultwrap ssl versionnegotiation osprofiler authurl authtoken context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for standalone heat
|
|
||||||
# ie. uses alternative auth backend that authenticates users against keystone
|
|
||||||
# using username and password instead of validating token (which requires
|
|
||||||
# an admin/service token).
|
|
||||||
# To enable, in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = standalone
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-standalone]
|
|
||||||
pipeline = request_id faultwrap ssl versionnegotiation authurl authpassword context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for custom cloud backends
|
|
||||||
# i.e. in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = custombackend
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-custombackend]
|
|
||||||
pipeline = request_id faultwrap versionnegotiation context custombackendauth apiv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline
|
|
||||||
[pipeline:heat-api-cfn]
|
|
||||||
pipeline = cfnversionnegotiation osprofiler ec2authtoken authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cfn-standalone]
|
|
||||||
pipeline = cfnversionnegotiation ec2authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline
|
|
||||||
[pipeline:heat-api-cloudwatch]
|
|
||||||
pipeline = versionnegotiation osprofiler ec2authtoken authtoken context apicwapp
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cloudwatch-standalone]
|
|
||||||
pipeline = versionnegotiation ec2authtoken context apicwapp
|
|
||||||
|
|
||||||
[app:apiv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.openstack.v1:API
|
|
||||||
|
|
||||||
[app:apicfnv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cfn.v1:API
|
|
||||||
|
|
||||||
[app:apicwapp]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cloudwatch:API
|
|
||||||
|
|
||||||
[filter:versionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:faultwrap]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:faultwrap_filter
|
|
||||||
|
|
||||||
[filter:cfnversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cfn:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:cwversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cloudwatch:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:context]
|
|
||||||
paste.filter_factory = heat.common.context:ContextMiddleware_filter_factory
|
|
||||||
|
|
||||||
[filter:ec2authtoken]
|
|
||||||
paste.filter_factory = heat.api.aws.ec2token:EC2Token_filter_factory
|
|
||||||
|
|
||||||
[filter:ssl]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:sslmiddleware_filter
|
|
||||||
|
|
||||||
# Middleware to set auth_url header appropriately
|
|
||||||
[filter:authurl]
|
|
||||||
paste.filter_factory = heat.common.auth_url:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates token against keystone
|
|
||||||
[filter:authtoken]
|
|
||||||
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates username/password against keystone
|
|
||||||
[filter:authpassword]
|
|
||||||
paste.filter_factory = heat.common.auth_password:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates against custom backend
|
|
||||||
[filter:custombackendauth]
|
|
||||||
paste.filter_factory = heat.common.custom_backend_auth:filter_factory
|
|
||||||
|
|
||||||
# Middleware to set x-openstack-request-id in http response header
|
|
||||||
[filter:request_id]
|
|
||||||
paste.filter_factory = oslo.middleware.request_id:RequestId.factory
|
|
||||||
|
|
||||||
[filter:osprofiler]
|
|
||||||
paste.filter_factory = osprofiler.web:WsgiMiddleware.factory
|
|
||||||
hmac_keys = SECRET_KEY
|
|
||||||
enabled = yes
|
|
|
@ -1,923 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
[DEFAULT]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.log
|
|
||||||
#
|
|
||||||
|
|
||||||
region_name_for_services={{ server.region }}
|
|
||||||
|
|
||||||
# Print debugging output (set logging level to DEBUG instead of default WARNING
|
|
||||||
# level). (boolean value)
|
|
||||||
#debug = false
|
|
||||||
|
|
||||||
# Print more verbose output (set logging level to INFO instead of default
|
|
||||||
# WARNING level). (boolean value)
|
|
||||||
#verbose = false
|
|
||||||
verbose = true
|
|
||||||
|
|
||||||
# The name of a logging configuration file. This file is appended to any
|
|
||||||
# existing logging configuration files. For details about logging configuration
|
|
||||||
# files, see the Python logging module documentation. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/log_config
|
|
||||||
#log_config_append = <None>
|
|
||||||
|
|
||||||
# DEPRECATED. A logging.Formatter log message format string which may use any
|
|
||||||
# of the available logging.LogRecord attributes. This option is deprecated.
|
|
||||||
# Please use logging_context_format_string and logging_default_format_string
|
|
||||||
# instead. (string value)
|
|
||||||
#log_format = <None>
|
|
||||||
|
|
||||||
# List of directories to search for plug-ins. (list value)
|
|
||||||
{%- if server.get('dir', {}).plugins is defined %}
|
|
||||||
plugin_dirs={{ server.dir.plugins|join(",") }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
heat_metadata_server_url=http://{{ server.metadata.host }}:{{ server.metadata.port }}
|
|
||||||
|
|
||||||
# URL of the Heat waitcondition server. (string value)
|
|
||||||
heat_waitcondition_server_url=http://{{ server.waitcondition.host }}:{{ server.waitcondition.port }}/v1/waitcondition
|
|
||||||
|
|
||||||
# URL of the Heat CloudWatch server. (string value)
|
|
||||||
heat_watch_server_url=http://{{ server.watch.host }}:{{ server.watch.port }}
|
|
||||||
# Format string for %%(asctime)s in log records. Default: %(default)s . (string
|
|
||||||
# value)
|
|
||||||
#log_date_format = %Y-%m-%d %H:%M:%S
|
|
||||||
|
|
||||||
# (Optional) Name of log file to output to. If no default is set, logging will
|
|
||||||
# go to stdout. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logfile
|
|
||||||
#log_file = <None>
|
|
||||||
log_file=/var/log/heat/heat.log
|
|
||||||
|
|
||||||
# (Optional) The base directory used for relative --log-file paths. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logdir
|
|
||||||
#log_dir = <None>
|
|
||||||
|
|
||||||
# Use syslog for logging. Existing syslog format is DEPRECATED during I, and
|
|
||||||
# will change in J to honor RFC5424. (boolean value)
|
|
||||||
#use_syslog = false
|
|
||||||
|
|
||||||
workers=4
|
|
||||||
|
|
||||||
{%- if server.stack_domain_admin is defined %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
stack_domain_admin = heat_domain_admin
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
stack_domain_admin_password={{ server.stack_domain_admin.password }}
|
|
||||||
|
|
||||||
stack_user_domain_name = heat_user_domain
|
|
||||||
|
|
||||||
{%- else %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
#stack_domain_admin=<None>
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
#stack_domain_admin_password=<None>
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
# (Optional) Enables or disables syslog rfc5424 format for logging. If enabled,
|
|
||||||
# prefixes the MSG part of the syslog message with APP-NAME (RFC5424). The
|
|
||||||
# format without the APP-NAME is deprecated in I, and will be removed in J.
|
|
||||||
# (boolean value)
|
|
||||||
#use_syslog_rfc_format = false
|
|
||||||
|
|
||||||
# Syslog facility to receive log lines. (string value)
|
|
||||||
#syslog_log_facility = LOG_USER
|
|
||||||
|
|
||||||
# Log output to standard error. (boolean value)
|
|
||||||
#use_stderr = true
|
|
||||||
|
|
||||||
# Format string to use for log messages with context. (string value)
|
|
||||||
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Format string to use for log messages without context. (string value)
|
|
||||||
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Data to append to log format when level is DEBUG. (string value)
|
|
||||||
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
|
|
||||||
|
|
||||||
# Prefix each line of exception output with this format. (string value)
|
|
||||||
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
|
|
||||||
|
|
||||||
# List of logger=LEVEL pairs. (list value)
|
|
||||||
#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
|
|
||||||
|
|
||||||
# Enables or disables publication of error events. (boolean value)
|
|
||||||
#publish_errors = false
|
|
||||||
|
|
||||||
# Enables or disables fatal status of deprecations. (boolean value)
|
|
||||||
#fatal_deprecations = false
|
|
||||||
|
|
||||||
# The format for an instance that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
# The format for an instance UUID that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_uuid_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Size of RPC connection pool. (integer value)
|
|
||||||
#rpc_conn_pool_size = 30
|
|
||||||
|
|
||||||
# ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP.
|
|
||||||
# The "host" option should point or resolve to this address. (string value)
|
|
||||||
#rpc_zmq_bind_address = *
|
|
||||||
|
|
||||||
# MatchMaker driver. (string value)
|
|
||||||
#rpc_zmq_matchmaker = local
|
|
||||||
|
|
||||||
# ZeroMQ receiver listening port. (integer value)
|
|
||||||
#rpc_zmq_port = 9501
|
|
||||||
|
|
||||||
# Number of ZeroMQ contexts, defaults to 1. (integer value)
|
|
||||||
#rpc_zmq_contexts = 1
|
|
||||||
|
|
||||||
# Maximum number of ingress messages to locally buffer per topic. Default is
|
|
||||||
# unlimited. (integer value)
|
|
||||||
#rpc_zmq_topic_backlog = <None>
|
|
||||||
|
|
||||||
# Directory for holding IPC sockets. (string value)
|
|
||||||
#rpc_zmq_ipc_dir = /var/run/openstack
|
|
||||||
|
|
||||||
# Name of this node. Must be a valid hostname, FQDN, or IP address. Must match
|
|
||||||
# "host" option, if running Nova. (string value)
|
|
||||||
#rpc_zmq_host = localhost
|
|
||||||
|
|
||||||
# Seconds to wait before a cast expires (TTL). Only supported by impl_zmq.
|
|
||||||
# (integer value)
|
|
||||||
#rpc_cast_timeout = 30
|
|
||||||
|
|
||||||
# Heartbeat frequency. (integer value)
|
|
||||||
#matchmaker_heartbeat_freq = 300
|
|
||||||
|
|
||||||
# Heartbeat time-to-live. (integer value)
|
|
||||||
#matchmaker_heartbeat_ttl = 600
|
|
||||||
|
|
||||||
# Size of RPC thread pool. (integer value)
|
|
||||||
#rpc_thread_pool_size = 64
|
|
||||||
|
|
||||||
# Driver or drivers to handle sending notifications. (multi valued)
|
|
||||||
#notification_driver =
|
|
||||||
notification_driver = oslo.messaging.notifier.Notifier
|
|
||||||
|
|
||||||
# AMQP topic used for OpenStack notifications. (list value)
|
|
||||||
# Deprecated group/name - [rpc_notifier2]/topics
|
|
||||||
#notification_topics = notifications
|
|
||||||
|
|
||||||
# Seconds to wait for a response from a call. (integer value)
|
|
||||||
#rpc_response_timeout = 60
|
|
||||||
|
|
||||||
# A URL representing the messaging driver to use and its full configuration. If
|
|
||||||
# not set, we fall back to the rpc_backend option and driver specific
|
|
||||||
# configuration. (string value)
|
|
||||||
#transport_url = <None>
|
|
||||||
|
|
||||||
# The messaging driver to use, defaults to rabbit. Other drivers include qpid
|
|
||||||
# and zmq. (string value)
|
|
||||||
#rpc_backend = rabbit
|
|
||||||
rpc_backend = rabbit
|
|
||||||
|
|
||||||
# The default exchange under which topics are scoped. May be overridden by an
|
|
||||||
# exchange name specified in the transport_url option. (string value)
|
|
||||||
#control_exchange = openstack
|
|
||||||
|
|
||||||
[heat_api]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8004
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cfn]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api_cfn.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8000
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cloudwatch]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api_cloudwatch.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8003
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs.) (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[database]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.db
|
|
||||||
#
|
|
||||||
|
|
||||||
# The file name to use with SQLite. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_db
|
|
||||||
#sqlite_db = oslo.sqlite
|
|
||||||
|
|
||||||
# If True, SQLite uses synchronous mode. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_synchronous
|
|
||||||
#sqlite_synchronous = true
|
|
||||||
|
|
||||||
# The back end to use for the database. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/db_backend
|
|
||||||
#backend = sqlalchemy
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the database. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_connection
|
|
||||||
# Deprecated group/name - [sql]/connection
|
|
||||||
#connection = <None>
|
|
||||||
connection = {{ server.database.engine }}://{{ server.database.user }}:{{ server.database.password }}@{{ server.database.host }}/{{ server.database.name }}
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the slave database.
|
|
||||||
# (string value)
|
|
||||||
#slave_connection = <None>
|
|
||||||
|
|
||||||
# The SQL mode to be used for MySQL sessions. This option, including the
|
|
||||||
# default, overrides any server-set SQL mode. To use whatever SQL mode is set
|
|
||||||
# by the server configuration, set this to no value. Example: mysql_sql_mode=
|
|
||||||
# (string value)
|
|
||||||
#mysql_sql_mode = TRADITIONAL
|
|
||||||
|
|
||||||
# Timeout before idle SQL connections are reaped. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [sql]/idle_timeout
|
|
||||||
#idle_timeout = 3600
|
|
||||||
|
|
||||||
# Minimum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_min_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_min_pool_size
|
|
||||||
#min_pool_size = 1
|
|
||||||
|
|
||||||
# Maximum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_pool_size
|
|
||||||
#max_pool_size = <None>
|
|
||||||
|
|
||||||
# Maximum number of database connection retries during startup. Set to -1 to
|
|
||||||
# specify an infinite retry count. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_retries
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_retries
|
|
||||||
#max_retries = 10
|
|
||||||
|
|
||||||
# Interval between retries of opening a SQL connection. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_retry_interval
|
|
||||||
# Deprecated group/name - [DATABASE]/reconnect_interval
|
|
||||||
#retry_interval = 10
|
|
||||||
|
|
||||||
# If set, use this value for max_overflow with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_overflow
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
|
|
||||||
#max_overflow = <None>
|
|
||||||
|
|
||||||
# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_debug
|
|
||||||
#connection_debug = 0
|
|
||||||
|
|
||||||
# Add Python stack traces to SQL as comment strings. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_trace
|
|
||||||
#connection_trace = false
|
|
||||||
|
|
||||||
# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
|
|
||||||
#pool_timeout = <None>
|
|
||||||
|
|
||||||
# Enable the experimental use of database reconnect on connection lost.
|
|
||||||
# (boolean value)
|
|
||||||
#use_db_reconnect = false
|
|
||||||
|
|
||||||
# Seconds between retries of a database transaction. (integer value)
|
|
||||||
#db_retry_interval = 1
|
|
||||||
|
|
||||||
# If True, increases the interval between retries of a database operation up to
|
|
||||||
# db_max_retry_interval. (boolean value)
|
|
||||||
#db_inc_retry_interval = true
|
|
||||||
|
|
||||||
# If db_inc_retry_interval is set, the maximum seconds between retries of a
|
|
||||||
# database operation. (integer value)
|
|
||||||
#db_max_retry_interval = 10
|
|
||||||
|
|
||||||
# Maximum retries in case of connection error or deadlock error before error is
|
|
||||||
# raised. Set to -1 to specify an infinite retry count. (integer value)
|
|
||||||
#db_max_retries = 20
|
|
||||||
|
|
||||||
|
|
||||||
[keystone_authtoken]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From keystonemiddleware.auth_token
|
|
||||||
#
|
|
||||||
auth_host = {{ server.identity.host }}
|
|
||||||
|
|
||||||
# Port of the admin Identity API endpoint. Deprecated, use
|
|
||||||
# identity_uri. (integer value)
|
|
||||||
auth_port = 35357
|
|
||||||
|
|
||||||
# Protocol of the admin Identity API endpoint (http or https).
|
|
||||||
# Deprecated, use identity_uri. (string value)
|
|
||||||
auth_protocol=http
|
|
||||||
|
|
||||||
# Complete public Identity API endpoint (string value)
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v3
|
|
||||||
|
|
||||||
# Complete admin Identity API endpoint. This should specify
|
|
||||||
# the unversioned root endpoint e.g. https://localhost:35357/
|
|
||||||
# (string value)
|
|
||||||
identity_uri=http://{{ server.identity.host }}:35357/
|
|
||||||
|
|
||||||
# API version of the admin Identity API endpoint (string
|
|
||||||
# value)
|
|
||||||
#auth_version=<None>
|
|
||||||
auth_version=v3.0
|
|
||||||
|
|
||||||
# Do not handle authorization requests within the middleware,
|
|
||||||
# but delegate the authorization decision to downstream WSGI
|
|
||||||
# components (boolean value)
|
|
||||||
#delay_auth_decision=false
|
|
||||||
|
|
||||||
# Request timeout value for communicating with Identity API
|
|
||||||
# server. (boolean value)
|
|
||||||
#http_connect_timeout=<None>
|
|
||||||
|
|
||||||
# How many times are we trying to reconnect when communicating
|
|
||||||
# with Identity API Server. (integer value)
|
|
||||||
#http_request_max_retries=3
|
|
||||||
|
|
||||||
# This option is deprecated and may be removed in a future
|
|
||||||
# release. Single shared secret with the Keystone
|
|
||||||
# configuration used for bootstrapping a Keystone
|
|
||||||
# installation, or otherwise bypassing the normal
|
|
||||||
# authentication process. This option should not be used, use
|
|
||||||
# `admin_user` and `admin_password` instead. (string value)
|
|
||||||
#admin_token=<None>
|
|
||||||
|
|
||||||
# Keystone account username (string value)
|
|
||||||
admin_user = {{ server.identity.user }}
|
|
||||||
|
|
||||||
# Keystone account password (string value)
|
|
||||||
admin_password = {{ server.identity.password }}
|
|
||||||
|
|
||||||
# Keystone service account tenant name to validate user tokens
|
|
||||||
# (string value)
|
|
||||||
admin_tenant_name = {{ server.identity.tenant }}
|
|
||||||
# Complete public Identity API endpoint. (string value)
|
|
||||||
#auth_uri = <None>
|
|
||||||
|
|
||||||
# API version of the admin Identity API endpoint. (string value)
|
|
||||||
#auth_version = <None>
|
|
||||||
|
|
||||||
# Do not handle authorization requests within the middleware, but delegate the
|
|
||||||
# authorization decision to downstream WSGI components. (boolean value)
|
|
||||||
#delay_auth_decision = false
|
|
||||||
|
|
||||||
# Request timeout value for communicating with Identity API server. (integer
|
|
||||||
# value)
|
|
||||||
#http_connect_timeout = <None>
|
|
||||||
|
|
||||||
# How many times are we trying to reconnect when communicating with Identity
|
|
||||||
# API Server. (integer value)
|
|
||||||
#http_request_max_retries = 3
|
|
||||||
|
|
||||||
# Env key for the swift cache. (string value)
|
|
||||||
#cache = <None>
|
|
||||||
|
|
||||||
# Required if identity server requires client certificate (string value)
|
|
||||||
#certfile = <None>
|
|
||||||
|
|
||||||
# Required if identity server requires client certificate (string value)
|
|
||||||
#keyfile = <None>
|
|
||||||
|
|
||||||
# A PEM encoded Certificate Authority to use when verifying HTTPs connections.
|
|
||||||
# Defaults to system CAs. (string value)
|
|
||||||
#cafile = <None>
|
|
||||||
|
|
||||||
# Verify HTTPS connections. (boolean value)
|
|
||||||
#insecure = false
|
|
||||||
|
|
||||||
# Directory used to cache files related to PKI tokens. (string value)
|
|
||||||
#signing_dir = <None>
|
|
||||||
|
|
||||||
# Optionally specify a list of memcached server(s) to use for caching. If left
|
|
||||||
# undefined, tokens will instead be cached in-process. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/memcache_servers
|
|
||||||
#memcached_servers = <None>
|
|
||||||
|
|
||||||
# In order to prevent excessive effort spent validating tokens, the middleware
|
|
||||||
# caches previously-seen tokens for a configurable duration (in seconds). Set
|
|
||||||
# to -1 to disable caching completely. (integer value)
|
|
||||||
#token_cache_time = 300
|
|
||||||
|
|
||||||
# Determines the frequency at which the list of revoked tokens is retrieved
|
|
||||||
# from the Identity service (in seconds). A high number of revocation events
|
|
||||||
# combined with a low cache duration may significantly reduce performance.
|
|
||||||
# (integer value)
|
|
||||||
#revocation_cache_time = 10
|
|
||||||
|
|
||||||
# (Optional) If defined, indicate whether token data should be authenticated or
|
|
||||||
# authenticated and encrypted. Acceptable values are MAC or ENCRYPT. If MAC,
|
|
||||||
# token data is authenticated (with HMAC) in the cache. If ENCRYPT, token data
|
|
||||||
# is encrypted and authenticated in the cache. If the value is not one of these
|
|
||||||
# options or empty, auth_token will raise an exception on initialization.
|
|
||||||
# (string value)
|
|
||||||
#memcache_security_strategy = <None>
|
|
||||||
|
|
||||||
# (Optional, mandatory if memcache_security_strategy is defined) This string is
|
|
||||||
# used for key derivation. (string value)
|
|
||||||
#memcache_secret_key = <None>
|
|
||||||
|
|
||||||
# (Optional) Number of seconds memcached server is considered dead before it is
|
|
||||||
# tried again. (integer value)
|
|
||||||
#memcache_pool_dead_retry = 300
|
|
||||||
|
|
||||||
# (Optional) Maximum total number of open connections to every memcached
|
|
||||||
# server. (integer value)
|
|
||||||
#memcache_pool_maxsize = 10
|
|
||||||
|
|
||||||
# (Optional) Socket timeout in seconds for communicating with a memcache
|
|
||||||
# server. (integer value)
|
|
||||||
#memcache_pool_socket_timeout = 3
|
|
||||||
|
|
||||||
# (Optional) Number of seconds a connection to memcached is held unused in the
|
|
||||||
# pool before it is closed. (integer value)
|
|
||||||
#memcache_pool_unused_timeout = 60
|
|
||||||
|
|
||||||
# (Optional) Number of seconds that an operation will wait to get a memcache
|
|
||||||
# client connection from the pool. (integer value)
|
|
||||||
#memcache_pool_conn_get_timeout = 10
|
|
||||||
|
|
||||||
# (Optional) Use the advanced (eventlet safe) memcache client pool. The
|
|
||||||
# advanced pool will only work under python 2.x. (boolean value)
|
|
||||||
#memcache_use_advanced_pool = false
|
|
||||||
|
|
||||||
# (Optional) Indicate whether to set the X-Service-Catalog header. If False,
|
|
||||||
# middleware will not ask for service catalog on token validation and will not
|
|
||||||
# set the X-Service-Catalog header. (boolean value)
|
|
||||||
#include_service_catalog = true
|
|
||||||
|
|
||||||
# Used to control the use and type of token binding. Can be set to: "disabled"
|
|
||||||
# to not check token binding. "permissive" (default) to validate binding
|
|
||||||
# information if the bind type is of a form known to the server and ignore it
|
|
||||||
# if not. "strict" like "permissive" but if the bind type is unknown the token
|
|
||||||
# will be rejected. "required" any form of token binding is needed to be
|
|
||||||
# allowed. Finally the name of a binding method that must be present in tokens.
|
|
||||||
# (string value)
|
|
||||||
#enforce_token_bind = permissive
|
|
||||||
|
|
||||||
# If true, the revocation list will be checked for cached tokens. This requires
|
|
||||||
# that PKI tokens are configured on the identity server. (boolean value)
|
|
||||||
#check_revocations_for_cached = false
|
|
||||||
|
|
||||||
# Hash algorithms to use for hashing PKI tokens. This may be a single algorithm
|
|
||||||
# or multiple. The algorithms are those supported by Python standard
|
|
||||||
# hashlib.new(). The hashes will be tried in the order given, so put the
|
|
||||||
# preferred one first for performance. The result of the first hash will be
|
|
||||||
# stored in the cache. This will typically be set to multiple values only while
|
|
||||||
# migrating from a less secure algorithm to a more secure one. Once all the old
|
|
||||||
# tokens are expired this option should be set to a single value for better
|
|
||||||
# performance. (list value)
|
|
||||||
#hash_algorithms = md5
|
|
||||||
|
|
||||||
# Prefix to prepend at the beginning of the path. Deprecated, use identity_uri.
|
|
||||||
# (string value)
|
|
||||||
#auth_admin_prefix =
|
|
||||||
|
|
||||||
# Host providing the admin Identity API endpoint. Deprecated, use identity_uri.
|
|
||||||
# (string value)
|
|
||||||
#auth_host = 127.0.0.1
|
|
||||||
|
|
||||||
# Port of the admin Identity API endpoint. Deprecated, use identity_uri.
|
|
||||||
# (integer value)
|
|
||||||
#auth_port = 35357
|
|
||||||
|
|
||||||
# Protocol of the admin Identity API endpoint (http or https). Deprecated, use
|
|
||||||
# identity_uri. (string value)
|
|
||||||
#auth_protocol = https
|
|
||||||
|
|
||||||
# Complete admin Identity API endpoint. This should specify the unversioned
|
|
||||||
# root endpoint e.g. https://localhost:35357/ (string value)
|
|
||||||
#identity_uri = <None>
|
|
||||||
|
|
||||||
# This option is deprecated and may be removed in a future release. Single
|
|
||||||
# shared secret with the Keystone configuration used for bootstrapping a
|
|
||||||
# Keystone installation, or otherwise bypassing the normal authentication
|
|
||||||
# process. This option should not be used, use `admin_user` and
|
|
||||||
# `admin_password` instead. (string value)
|
|
||||||
#admin_token = <None>
|
|
||||||
|
|
||||||
# Service username. (string value)
|
|
||||||
#admin_user = <None>
|
|
||||||
|
|
||||||
# Service user password. (string value)
|
|
||||||
#admin_password = <None>
|
|
||||||
|
|
||||||
# Service tenant name. (string value)
|
|
||||||
#admin_tenant_name = admin
|
|
||||||
|
|
||||||
|
|
||||||
[matchmaker_redis]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Host to locate redis. (string value)
|
|
||||||
#host = 127.0.0.1
|
|
||||||
|
|
||||||
# Use this port to connect to redis host. (integer value)
|
|
||||||
#port = 6379
|
|
||||||
|
|
||||||
# Password for Redis server (optional). (string value)
|
|
||||||
#password = <None>
|
|
||||||
|
|
||||||
|
|
||||||
[matchmaker_ring]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Matchmaker ring file (JSON). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/matchmaker_ringfile
|
|
||||||
#ringfile = /etc/oslo/matchmaker_ring.json
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_amqp]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# address prefix used when sending to a specific server (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/server_request_prefix
|
|
||||||
#server_request_prefix = exclusive
|
|
||||||
|
|
||||||
# address prefix used when broadcasting to all servers (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/broadcast_prefix
|
|
||||||
#broadcast_prefix = broadcast
|
|
||||||
|
|
||||||
# address prefix when sending to any server in group (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/group_request_prefix
|
|
||||||
#group_request_prefix = unicast
|
|
||||||
|
|
||||||
# Name for the AMQP container (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/container_name
|
|
||||||
#container_name = <None>
|
|
||||||
|
|
||||||
# Timeout for inactive connections (in seconds) (integer value)
|
|
||||||
# Deprecated group/name - [amqp1]/idle_timeout
|
|
||||||
#idle_timeout = 0
|
|
||||||
|
|
||||||
# Debug: dump AMQP frames to stdout (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/trace
|
|
||||||
#trace = false
|
|
||||||
|
|
||||||
# CA certificate PEM file for verifing server certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_ca_file
|
|
||||||
#ssl_ca_file =
|
|
||||||
|
|
||||||
# Identifying certificate PEM file to present to clients (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_cert_file
|
|
||||||
#ssl_cert_file =
|
|
||||||
|
|
||||||
# Private key PEM file used to sign cert_file certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_file
|
|
||||||
#ssl_key_file =
|
|
||||||
|
|
||||||
# Password for decrypting ssl_key_file (if encrypted) (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_password
|
|
||||||
#ssl_key_password = <None>
|
|
||||||
|
|
||||||
# Accept clients using either SSL or plain TCP (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/allow_insecure_clients
|
|
||||||
#allow_insecure_clients = false
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_qpid]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# Qpid broker hostname. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hostname
|
|
||||||
#qpid_hostname = localhost
|
|
||||||
|
|
||||||
# Qpid broker port. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_port
|
|
||||||
#qpid_port = 5672
|
|
||||||
|
|
||||||
# Qpid HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hosts
|
|
||||||
#qpid_hosts = $qpid_hostname:$qpid_port
|
|
||||||
|
|
||||||
# Username for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_username
|
|
||||||
#qpid_username =
|
|
||||||
|
|
||||||
# Password for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_password
|
|
||||||
#qpid_password =
|
|
||||||
|
|
||||||
# Space separated list of SASL mechanisms to use for auth. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
|
|
||||||
#qpid_sasl_mechanisms =
|
|
||||||
|
|
||||||
# Seconds between connection keepalive heartbeats. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_heartbeat
|
|
||||||
#qpid_heartbeat = 60
|
|
||||||
|
|
||||||
# Transport to use, either 'tcp' or 'ssl'. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_protocol
|
|
||||||
#qpid_protocol = tcp
|
|
||||||
|
|
||||||
# Whether to disable the Nagle algorithm. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
|
|
||||||
#qpid_tcp_nodelay = true
|
|
||||||
|
|
||||||
# The number of prefetched messages held by receiver. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
|
|
||||||
#qpid_receiver_capacity = 1
|
|
||||||
|
|
||||||
# The qpid topology version to use. Version 1 is what was originally used by
|
|
||||||
# impl_qpid. Version 2 includes some backwards-incompatible changes that allow
|
|
||||||
# broker federation to work. Users should update to version 2 when they are
|
|
||||||
# able to take everything down, as it requires a clean break. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_topology_version
|
|
||||||
#qpid_topology_version = 1
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_rabbit]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
|
|
||||||
# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
|
|
||||||
# distributions. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_version
|
|
||||||
#kombu_ssl_version =
|
|
||||||
|
|
||||||
# SSL key file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
|
|
||||||
#kombu_ssl_keyfile =
|
|
||||||
|
|
||||||
# SSL cert file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
|
|
||||||
#kombu_ssl_certfile =
|
|
||||||
|
|
||||||
# SSL certification authority file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
|
|
||||||
#kombu_ssl_ca_certs =
|
|
||||||
|
|
||||||
# How long to wait before reconnecting in response to an AMQP consumer cancel
|
|
||||||
# notification. (floating point value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
|
|
||||||
#kombu_reconnect_delay = 1.0
|
|
||||||
|
|
||||||
{%- if server.message_queue.members is defined %}
|
|
||||||
rabbit_hosts = {% for member in server.message_queue.members -%}
|
|
||||||
{{ member.host }}:{{ member.get('port', 5672) }}
|
|
||||||
{%- if not loop.last -%},{%- endif -%}
|
|
||||||
{%- endfor -%}
|
|
||||||
{%- else %}
|
|
||||||
rabbit_host = {{ server.message_queue.host }}
|
|
||||||
rabbit_port = {{ server.message_queue.port }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
#rabbit_use_ssl=false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
rabbit_userid = {{ server.message_queue.user }}
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
rabbit_password = {{ server.message_queue.password }}
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
#rabbit_login_method=AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
rabbit_virtual_host = {{ server.message_queue.virtual_host }}
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
#rabbit_retry_interval=1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to
|
|
||||||
# RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_backoff=2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0
|
|
||||||
# (infinite retry count). (integer value)
|
|
||||||
#rabbit_max_retries=0
|
|
||||||
|
|
||||||
#rabbit_host = localhost
|
|
||||||
|
|
||||||
# The RabbitMQ broker port where a single node is used. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_port
|
|
||||||
#rabbit_port = 5672
|
|
||||||
|
|
||||||
# RabbitMQ HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_hosts
|
|
||||||
#rabbit_hosts = $rabbit_host:$rabbit_port
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
|
|
||||||
#rabbit_use_ssl = false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_userid
|
|
||||||
#rabbit_userid = guest
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_password
|
|
||||||
#rabbit_password = guest
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_login_method
|
|
||||||
#rabbit_login_method = AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
|
|
||||||
#rabbit_virtual_host = /
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_interval = 1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff
|
|
||||||
#rabbit_retry_backoff = 2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0 (infinite retry
|
|
||||||
# count). (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_max_retries
|
|
||||||
#rabbit_max_retries = 0
|
|
||||||
|
|
||||||
# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you
|
|
||||||
# must wipe the RabbitMQ database. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
|
|
||||||
#rabbit_ha_queues = false
|
|
||||||
|
|
||||||
# Number of seconds after which the Rabbit broker is considered down if
|
|
||||||
# heartbeat's keep-alive fails (0 disable the heartbeat). (integer value)
|
|
||||||
#heartbeat_timeout_threshold = 60
|
|
||||||
|
|
||||||
# How often times during the heartbeat_timeout_threshold we check the
|
|
||||||
# heartbeat. (integer value)
|
|
||||||
#heartbeat_rate = 2
|
|
||||||
|
|
||||||
# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/fake_rabbit
|
|
||||||
#fake_rabbit = false
|
|
||||||
|
|
||||||
[ec2authtoken]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.api.aws.ec2token
|
|
||||||
#
|
|
||||||
|
|
||||||
# Authentication Endpoint URI. (string value)
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v2.0
|
|
||||||
|
|
||||||
# Allow orchestration of multiple clouds. (boolean value)
|
|
||||||
#multi_cloud=false
|
|
||||||
|
|
||||||
# Allowed keystone endpoints for auth_uri when multi_cloud is
|
|
||||||
# enabled. At least one endpoint needs to be specified. (list
|
|
||||||
# value)
|
|
||||||
#allowed_auth_uris=
|
|
||||||
|
|
||||||
keystone_ec2_uri=http://{{ server.identity.host }}:5000/v2.0/ec2tokens
|
|
||||||
|
|
||||||
{%- if pillar.get('opencontrail', {}).get('client', {}).get('enabled', False) %}
|
|
||||||
|
|
||||||
{%- from "opencontrail/map.jinja" import client with context %}
|
|
||||||
|
|
||||||
[clients_contrail]
|
|
||||||
|
|
||||||
user={{ client.identity.user }}
|
|
||||||
password={{ client.identity.password }}
|
|
||||||
tenant={{ client.identity.tenant }}
|
|
||||||
auth_host_ip={{ client.identity.host }}
|
|
||||||
api_server={{ client.api.host }}
|
|
||||||
api_port={{ client.api.port }}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
|
@ -1 +0,0 @@
|
||||||
heat.conf.Debian
|
|
|
@ -1,104 +0,0 @@
|
||||||
|
|
||||||
# heat-api pipeline
|
|
||||||
[pipeline:heat-api]
|
|
||||||
pipeline = request_id faultwrap ssl versionnegotiation osprofiler authurl authtoken context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for standalone heat
|
|
||||||
# ie. uses alternative auth backend that authenticates users against keystone
|
|
||||||
# using username and password instead of validating token (which requires
|
|
||||||
# an admin/service token).
|
|
||||||
# To enable, in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = standalone
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-standalone]
|
|
||||||
pipeline = request_id faultwrap ssl versionnegotiation authurl authpassword context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for custom cloud backends
|
|
||||||
# i.e. in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = custombackend
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-custombackend]
|
|
||||||
pipeline = request_id faultwrap versionnegotiation context custombackendauth apiv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline
|
|
||||||
[pipeline:heat-api-cfn]
|
|
||||||
pipeline = cfnversionnegotiation osprofiler ec2authtoken authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cfn-standalone]
|
|
||||||
pipeline = cfnversionnegotiation ec2authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline
|
|
||||||
[pipeline:heat-api-cloudwatch]
|
|
||||||
pipeline = versionnegotiation osprofiler ec2authtoken authtoken context apicwapp
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cloudwatch-standalone]
|
|
||||||
pipeline = versionnegotiation ec2authtoken context apicwapp
|
|
||||||
|
|
||||||
[app:apiv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.openstack.v1:API
|
|
||||||
|
|
||||||
[app:apicfnv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cfn.v1:API
|
|
||||||
|
|
||||||
[app:apicwapp]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cloudwatch:API
|
|
||||||
|
|
||||||
[filter:versionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:faultwrap]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:faultwrap_filter
|
|
||||||
|
|
||||||
[filter:cfnversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cfn:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:cwversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cloudwatch:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:context]
|
|
||||||
paste.filter_factory = heat.common.context:ContextMiddleware_filter_factory
|
|
||||||
|
|
||||||
[filter:ec2authtoken]
|
|
||||||
paste.filter_factory = heat.api.aws.ec2token:EC2Token_filter_factory
|
|
||||||
|
|
||||||
[filter:ssl]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:sslmiddleware_filter
|
|
||||||
|
|
||||||
# Middleware to set auth_url header appropriately
|
|
||||||
[filter:authurl]
|
|
||||||
paste.filter_factory = heat.common.auth_url:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates token against keystone
|
|
||||||
[filter:authtoken]
|
|
||||||
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates username/password against keystone
|
|
||||||
[filter:authpassword]
|
|
||||||
paste.filter_factory = heat.common.auth_password:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates against custom backend
|
|
||||||
[filter:custombackendauth]
|
|
||||||
paste.filter_factory = heat.common.custom_backend_auth:filter_factory
|
|
||||||
|
|
||||||
# Middleware to set x-openstack-request-id in http response header
|
|
||||||
[filter:request_id]
|
|
||||||
paste.filter_factory = oslo_middleware.request_id:RequestId.factory
|
|
||||||
|
|
||||||
[filter:osprofiler]
|
|
||||||
paste.filter_factory = osprofiler.web:WsgiMiddleware.factory
|
|
||||||
hmac_keys = SECRET_KEY
|
|
||||||
enabled = yes
|
|
|
@ -1,942 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
[DEFAULT]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.log
|
|
||||||
#
|
|
||||||
|
|
||||||
region_name_for_services={{ server.region }}
|
|
||||||
|
|
||||||
# Print debugging output (set logging level to DEBUG instead of default WARNING
|
|
||||||
# level). (boolean value)
|
|
||||||
#debug = false
|
|
||||||
|
|
||||||
# Print more verbose output (set logging level to INFO instead of default
|
|
||||||
# WARNING level). (boolean value)
|
|
||||||
#verbose = false
|
|
||||||
verbose = true
|
|
||||||
|
|
||||||
# The name of a logging configuration file. This file is appended to any
|
|
||||||
# existing logging configuration files. For details about logging configuration
|
|
||||||
# files, see the Python logging module documentation. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/log_config
|
|
||||||
#log_config_append = <None>
|
|
||||||
|
|
||||||
# DEPRECATED. A logging.Formatter log message format string which may use any
|
|
||||||
# of the available logging.LogRecord attributes. This option is deprecated.
|
|
||||||
# Please use logging_context_format_string and logging_default_format_string
|
|
||||||
# instead. (string value)
|
|
||||||
#log_format = <None>
|
|
||||||
|
|
||||||
# List of directories to search for plug-ins. (list value)
|
|
||||||
{%- if server.get('dir', {}).plugins is defined %}
|
|
||||||
plugin_dirs={{ server.dir.plugins|join(",") }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
heat_metadata_server_url=http://{{ server.metadata.host }}:{{ server.metadata.port }}
|
|
||||||
|
|
||||||
# URL of the Heat waitcondition server. (string value)
|
|
||||||
heat_waitcondition_server_url=http://{{ server.waitcondition.host }}:{{ server.waitcondition.port }}/v1/waitcondition
|
|
||||||
|
|
||||||
# URL of the Heat CloudWatch server. (string value)
|
|
||||||
heat_watch_server_url=http://{{ server.watch.host }}:{{ server.watch.port }}
|
|
||||||
# Format string for %%(asctime)s in log records. Default: %(default)s . (string
|
|
||||||
# value)
|
|
||||||
#log_date_format = %Y-%m-%d %H:%M:%S
|
|
||||||
|
|
||||||
# (Optional) Name of log file to output to. If no default is set, logging will
|
|
||||||
# go to stdout. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logfile
|
|
||||||
#log_file = <None>
|
|
||||||
log_file=/var/log/heat/heat.log
|
|
||||||
|
|
||||||
# (Optional) The base directory used for relative --log-file paths. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logdir
|
|
||||||
#log_dir = <None>
|
|
||||||
|
|
||||||
# Use syslog for logging. Existing syslog format is DEPRECATED during I, and
|
|
||||||
# will change in J to honor RFC5424. (boolean value)
|
|
||||||
#use_syslog = false
|
|
||||||
|
|
||||||
workers=4
|
|
||||||
|
|
||||||
{%- if server.stack_domain_admin is defined %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
stack_domain_admin = heat_domain_admin
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
stack_domain_admin_password={{ server.stack_domain_admin.password }}
|
|
||||||
|
|
||||||
stack_user_domain_name = heat_user_domain
|
|
||||||
|
|
||||||
{%- else %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
#stack_domain_admin=<None>
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
#stack_domain_admin_password=<None>
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
# (Optional) Enables or disables syslog rfc5424 format for logging. If enabled,
|
|
||||||
# prefixes the MSG part of the syslog message with APP-NAME (RFC5424). The
|
|
||||||
# format without the APP-NAME is deprecated in I, and will be removed in J.
|
|
||||||
# (boolean value)
|
|
||||||
#use_syslog_rfc_format = false
|
|
||||||
|
|
||||||
# Syslog facility to receive log lines. (string value)
|
|
||||||
#syslog_log_facility = LOG_USER
|
|
||||||
|
|
||||||
# Log output to standard error. (boolean value)
|
|
||||||
#use_stderr = true
|
|
||||||
|
|
||||||
# Format string to use for log messages with context. (string value)
|
|
||||||
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Format string to use for log messages without context. (string value)
|
|
||||||
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Data to append to log format when level is DEBUG. (string value)
|
|
||||||
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
|
|
||||||
|
|
||||||
# Prefix each line of exception output with this format. (string value)
|
|
||||||
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
|
|
||||||
|
|
||||||
# List of logger=LEVEL pairs. (list value)
|
|
||||||
#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
|
|
||||||
|
|
||||||
# Enables or disables publication of error events. (boolean value)
|
|
||||||
#publish_errors = false
|
|
||||||
|
|
||||||
# Enables or disables fatal status of deprecations. (boolean value)
|
|
||||||
#fatal_deprecations = false
|
|
||||||
|
|
||||||
# The format for an instance that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
# The format for an instance UUID that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_uuid_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Size of RPC connection pool. (integer value)
|
|
||||||
#rpc_conn_pool_size = 30
|
|
||||||
|
|
||||||
# ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP.
|
|
||||||
# The "host" option should point or resolve to this address. (string value)
|
|
||||||
#rpc_zmq_bind_address = *
|
|
||||||
|
|
||||||
# MatchMaker driver. (string value)
|
|
||||||
#rpc_zmq_matchmaker = local
|
|
||||||
|
|
||||||
# ZeroMQ receiver listening port. (integer value)
|
|
||||||
#rpc_zmq_port = 9501
|
|
||||||
|
|
||||||
# Number of ZeroMQ contexts, defaults to 1. (integer value)
|
|
||||||
#rpc_zmq_contexts = 1
|
|
||||||
|
|
||||||
# Maximum number of ingress messages to locally buffer per topic. Default is
|
|
||||||
# unlimited. (integer value)
|
|
||||||
#rpc_zmq_topic_backlog = <None>
|
|
||||||
|
|
||||||
# Directory for holding IPC sockets. (string value)
|
|
||||||
#rpc_zmq_ipc_dir = /var/run/openstack
|
|
||||||
|
|
||||||
# Name of this node. Must be a valid hostname, FQDN, or IP address. Must match
|
|
||||||
# "host" option, if running Nova. (string value)
|
|
||||||
#rpc_zmq_host = localhost
|
|
||||||
|
|
||||||
# Seconds to wait before a cast expires (TTL). Only supported by impl_zmq.
|
|
||||||
# (integer value)
|
|
||||||
#rpc_cast_timeout = 30
|
|
||||||
|
|
||||||
# Heartbeat frequency. (integer value)
|
|
||||||
#matchmaker_heartbeat_freq = 300
|
|
||||||
|
|
||||||
# Heartbeat time-to-live. (integer value)
|
|
||||||
#matchmaker_heartbeat_ttl = 600
|
|
||||||
|
|
||||||
# Size of RPC thread pool. (integer value)
|
|
||||||
#rpc_thread_pool_size = 64
|
|
||||||
|
|
||||||
# Driver or drivers to handle sending notifications. (multi valued)
|
|
||||||
#notification_driver =
|
|
||||||
{%- if server.notification is mapping %}
|
|
||||||
notification_driver = {{ server.notification.get('driver', 'messagingv2') }}
|
|
||||||
{%- if server.notification.topics is defined %}
|
|
||||||
notification_topics = {{ server.notification.topics }}
|
|
||||||
{%- endif %}
|
|
||||||
{%- elif server.notification %}
|
|
||||||
notification_driver = messagingv2
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# AMQP topic used for OpenStack notifications. (list value)
|
|
||||||
# Deprecated group/name - [rpc_notifier2]/topics
|
|
||||||
#notification_topics = notifications
|
|
||||||
|
|
||||||
# Seconds to wait for a response from a call. (integer value)
|
|
||||||
#rpc_response_timeout = 60
|
|
||||||
|
|
||||||
# A URL representing the messaging driver to use and its full configuration. If
|
|
||||||
# not set, we fall back to the rpc_backend option and driver specific
|
|
||||||
# configuration. (string value)
|
|
||||||
#transport_url = <None>
|
|
||||||
|
|
||||||
# The messaging driver to use, defaults to rabbit. Other drivers include qpid
|
|
||||||
# and zmq. (string value)
|
|
||||||
#rpc_backend = rabbit
|
|
||||||
rpc_backend = rabbit
|
|
||||||
|
|
||||||
# The default exchange under which topics are scoped. May be overridden by an
|
|
||||||
# exchange name specified in the transport_url option. (string value)
|
|
||||||
#control_exchange = openstack
|
|
||||||
|
|
||||||
[heat_api]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8004
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cfn]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api_cfn.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8000
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cloudwatch]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api_cloudwatch.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8003
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs.) (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[database]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.db
|
|
||||||
#
|
|
||||||
|
|
||||||
# The file name to use with SQLite. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_db
|
|
||||||
#sqlite_db = oslo.sqlite
|
|
||||||
|
|
||||||
# If True, SQLite uses synchronous mode. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_synchronous
|
|
||||||
#sqlite_synchronous = true
|
|
||||||
|
|
||||||
# The back end to use for the database. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/db_backend
|
|
||||||
#backend = sqlalchemy
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the database. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_connection
|
|
||||||
# Deprecated group/name - [sql]/connection
|
|
||||||
#connection = <None>
|
|
||||||
connection = {{ server.database.engine }}://{{ server.database.user }}:{{ server.database.password }}@{{ server.database.host }}/{{ server.database.name }}
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the slave database.
|
|
||||||
# (string value)
|
|
||||||
#slave_connection = <None>
|
|
||||||
|
|
||||||
# The SQL mode to be used for MySQL sessions. This option, including the
|
|
||||||
# default, overrides any server-set SQL mode. To use whatever SQL mode is set
|
|
||||||
# by the server configuration, set this to no value. Example: mysql_sql_mode=
|
|
||||||
# (string value)
|
|
||||||
#mysql_sql_mode = TRADITIONAL
|
|
||||||
|
|
||||||
# Timeout before idle SQL connections are reaped. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [sql]/idle_timeout
|
|
||||||
#idle_timeout = 3600
|
|
||||||
|
|
||||||
# Minimum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_min_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_min_pool_size
|
|
||||||
#min_pool_size = 1
|
|
||||||
|
|
||||||
# Maximum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_pool_size
|
|
||||||
#max_pool_size = <None>
|
|
||||||
|
|
||||||
# Maximum number of database connection retries during startup. Set to -1 to
|
|
||||||
# specify an infinite retry count. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_retries
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_retries
|
|
||||||
#max_retries = 10
|
|
||||||
|
|
||||||
# Interval between retries of opening a SQL connection. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_retry_interval
|
|
||||||
# Deprecated group/name - [DATABASE]/reconnect_interval
|
|
||||||
#retry_interval = 10
|
|
||||||
|
|
||||||
# If set, use this value for max_overflow with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_overflow
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
|
|
||||||
#max_overflow = <None>
|
|
||||||
|
|
||||||
# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_debug
|
|
||||||
#connection_debug = 0
|
|
||||||
|
|
||||||
# Add Python stack traces to SQL as comment strings. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_trace
|
|
||||||
#connection_trace = false
|
|
||||||
|
|
||||||
# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
|
|
||||||
#pool_timeout = <None>
|
|
||||||
|
|
||||||
# Enable the experimental use of database reconnect on connection lost.
|
|
||||||
# (boolean value)
|
|
||||||
#use_db_reconnect = false
|
|
||||||
|
|
||||||
# Seconds between retries of a database transaction. (integer value)
|
|
||||||
#db_retry_interval = 1
|
|
||||||
|
|
||||||
# If True, increases the interval between retries of a database operation up to
|
|
||||||
# db_max_retry_interval. (boolean value)
|
|
||||||
#db_inc_retry_interval = true
|
|
||||||
|
|
||||||
# If db_inc_retry_interval is set, the maximum seconds between retries of a
|
|
||||||
# database operation. (integer value)
|
|
||||||
#db_max_retry_interval = 10
|
|
||||||
|
|
||||||
# Maximum retries in case of connection error or deadlock error before error is
|
|
||||||
# raised. Set to -1 to specify an infinite retry count. (integer value)
|
|
||||||
#db_max_retries = 20
|
|
||||||
|
|
||||||
|
|
||||||
[keystone_authtoken]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From keystonemiddleware.auth_token
|
|
||||||
#
|
|
||||||
auth_host = {{ server.identity.host }}
|
|
||||||
|
|
||||||
# Port of the admin Identity API endpoint. Deprecated, use
|
|
||||||
# identity_uri. (integer value)
|
|
||||||
auth_port = 35357
|
|
||||||
|
|
||||||
# Protocol of the admin Identity API endpoint (http or https).
|
|
||||||
# Deprecated, use identity_uri. (string value)
|
|
||||||
auth_protocol=http
|
|
||||||
|
|
||||||
# Complete public Identity API endpoint (string value)
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v3
|
|
||||||
|
|
||||||
# Complete admin Identity API endpoint. This should specify
|
|
||||||
# the unversioned root endpoint e.g. https://localhost:35357/
|
|
||||||
# (string value)
|
|
||||||
identity_uri=http://{{ server.identity.host }}:35357/
|
|
||||||
|
|
||||||
# API version of the admin Identity API endpoint (string
|
|
||||||
# value)
|
|
||||||
#auth_version=<None>
|
|
||||||
auth_version=v3.0
|
|
||||||
|
|
||||||
# Do not handle authorization requests within the middleware,
|
|
||||||
# but delegate the authorization decision to downstream WSGI
|
|
||||||
# components (boolean value)
|
|
||||||
#delay_auth_decision=false
|
|
||||||
|
|
||||||
# Request timeout value for communicating with Identity API
|
|
||||||
# server. (boolean value)
|
|
||||||
#http_connect_timeout=<None>
|
|
||||||
|
|
||||||
# How many times are we trying to reconnect when communicating
|
|
||||||
# with Identity API Server. (integer value)
|
|
||||||
#http_request_max_retries=3
|
|
||||||
|
|
||||||
# This option is deprecated and may be removed in a future
|
|
||||||
# release. Single shared secret with the Keystone
|
|
||||||
# configuration used for bootstrapping a Keystone
|
|
||||||
# installation, or otherwise bypassing the normal
|
|
||||||
# authentication process. This option should not be used, use
|
|
||||||
# `admin_user` and `admin_password` instead. (string value)
|
|
||||||
#admin_token=<None>
|
|
||||||
|
|
||||||
# Keystone account username (string value)
|
|
||||||
admin_user = {{ server.identity.user }}
|
|
||||||
|
|
||||||
# Keystone account password (string value)
|
|
||||||
admin_password = {{ server.identity.password }}
|
|
||||||
|
|
||||||
# Keystone service account tenant name to validate user tokens
|
|
||||||
# (string value)
|
|
||||||
admin_tenant_name = {{ server.identity.tenant }}
|
|
||||||
# Complete public Identity API endpoint. (string value)
|
|
||||||
#auth_uri = <None>
|
|
||||||
|
|
||||||
# API version of the admin Identity API endpoint. (string value)
|
|
||||||
#auth_version = <None>
|
|
||||||
|
|
||||||
# Do not handle authorization requests within the middleware, but delegate the
|
|
||||||
# authorization decision to downstream WSGI components. (boolean value)
|
|
||||||
#delay_auth_decision = false
|
|
||||||
|
|
||||||
# Request timeout value for communicating with Identity API server. (integer
|
|
||||||
# value)
|
|
||||||
#http_connect_timeout = <None>
|
|
||||||
|
|
||||||
# How many times are we trying to reconnect when communicating with Identity
|
|
||||||
# API Server. (integer value)
|
|
||||||
#http_request_max_retries = 3
|
|
||||||
|
|
||||||
# Env key for the swift cache. (string value)
|
|
||||||
#cache = <None>
|
|
||||||
|
|
||||||
# Required if identity server requires client certificate (string value)
|
|
||||||
#certfile = <None>
|
|
||||||
|
|
||||||
# Required if identity server requires client certificate (string value)
|
|
||||||
#keyfile = <None>
|
|
||||||
|
|
||||||
# A PEM encoded Certificate Authority to use when verifying HTTPs connections.
|
|
||||||
# Defaults to system CAs. (string value)
|
|
||||||
#cafile = <None>
|
|
||||||
|
|
||||||
# Verify HTTPS connections. (boolean value)
|
|
||||||
#insecure = false
|
|
||||||
|
|
||||||
# Directory used to cache files related to PKI tokens. (string value)
|
|
||||||
#signing_dir = <None>
|
|
||||||
|
|
||||||
# Optionally specify a list of memcached server(s) to use for caching. If left
|
|
||||||
# undefined, tokens will instead be cached in-process. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/memcache_servers
|
|
||||||
#memcached_servers = <None>
|
|
||||||
|
|
||||||
# In order to prevent excessive effort spent validating tokens, the middleware
|
|
||||||
# caches previously-seen tokens for a configurable duration (in seconds). Set
|
|
||||||
# to -1 to disable caching completely. (integer value)
|
|
||||||
#token_cache_time = 300
|
|
||||||
|
|
||||||
# Determines the frequency at which the list of revoked tokens is retrieved
|
|
||||||
# from the Identity service (in seconds). A high number of revocation events
|
|
||||||
# combined with a low cache duration may significantly reduce performance.
|
|
||||||
# (integer value)
|
|
||||||
#revocation_cache_time = 10
|
|
||||||
|
|
||||||
# (Optional) If defined, indicate whether token data should be authenticated or
|
|
||||||
# authenticated and encrypted. Acceptable values are MAC or ENCRYPT. If MAC,
|
|
||||||
# token data is authenticated (with HMAC) in the cache. If ENCRYPT, token data
|
|
||||||
# is encrypted and authenticated in the cache. If the value is not one of these
|
|
||||||
# options or empty, auth_token will raise an exception on initialization.
|
|
||||||
# (string value)
|
|
||||||
#memcache_security_strategy = <None>
|
|
||||||
|
|
||||||
# (Optional, mandatory if memcache_security_strategy is defined) This string is
|
|
||||||
# used for key derivation. (string value)
|
|
||||||
#memcache_secret_key = <None>
|
|
||||||
|
|
||||||
# (Optional) Number of seconds memcached server is considered dead before it is
|
|
||||||
# tried again. (integer value)
|
|
||||||
#memcache_pool_dead_retry = 300
|
|
||||||
|
|
||||||
# (Optional) Maximum total number of open connections to every memcached
|
|
||||||
# server. (integer value)
|
|
||||||
#memcache_pool_maxsize = 10
|
|
||||||
|
|
||||||
# (Optional) Socket timeout in seconds for communicating with a memcache
|
|
||||||
# server. (integer value)
|
|
||||||
#memcache_pool_socket_timeout = 3
|
|
||||||
|
|
||||||
# (Optional) Number of seconds a connection to memcached is held unused in the
|
|
||||||
# pool before it is closed. (integer value)
|
|
||||||
#memcache_pool_unused_timeout = 60
|
|
||||||
|
|
||||||
# (Optional) Number of seconds that an operation will wait to get a memcache
|
|
||||||
# client connection from the pool. (integer value)
|
|
||||||
#memcache_pool_conn_get_timeout = 10
|
|
||||||
|
|
||||||
# (Optional) Use the advanced (eventlet safe) memcache client pool. The
|
|
||||||
# advanced pool will only work under python 2.x. (boolean value)
|
|
||||||
#memcache_use_advanced_pool = false
|
|
||||||
|
|
||||||
# (Optional) Indicate whether to set the X-Service-Catalog header. If False,
|
|
||||||
# middleware will not ask for service catalog on token validation and will not
|
|
||||||
# set the X-Service-Catalog header. (boolean value)
|
|
||||||
#include_service_catalog = true
|
|
||||||
|
|
||||||
# Used to control the use and type of token binding. Can be set to: "disabled"
|
|
||||||
# to not check token binding. "permissive" (default) to validate binding
|
|
||||||
# information if the bind type is of a form known to the server and ignore it
|
|
||||||
# if not. "strict" like "permissive" but if the bind type is unknown the token
|
|
||||||
# will be rejected. "required" any form of token binding is needed to be
|
|
||||||
# allowed. Finally the name of a binding method that must be present in tokens.
|
|
||||||
# (string value)
|
|
||||||
#enforce_token_bind = permissive
|
|
||||||
|
|
||||||
# If true, the revocation list will be checked for cached tokens. This requires
|
|
||||||
# that PKI tokens are configured on the identity server. (boolean value)
|
|
||||||
#check_revocations_for_cached = false
|
|
||||||
|
|
||||||
# Hash algorithms to use for hashing PKI tokens. This may be a single algorithm
|
|
||||||
# or multiple. The algorithms are those supported by Python standard
|
|
||||||
# hashlib.new(). The hashes will be tried in the order given, so put the
|
|
||||||
# preferred one first for performance. The result of the first hash will be
|
|
||||||
# stored in the cache. This will typically be set to multiple values only while
|
|
||||||
# migrating from a less secure algorithm to a more secure one. Once all the old
|
|
||||||
# tokens are expired this option should be set to a single value for better
|
|
||||||
# performance. (list value)
|
|
||||||
#hash_algorithms = md5
|
|
||||||
|
|
||||||
# Prefix to prepend at the beginning of the path. Deprecated, use identity_uri.
|
|
||||||
# (string value)
|
|
||||||
#auth_admin_prefix =
|
|
||||||
|
|
||||||
# Host providing the admin Identity API endpoint. Deprecated, use identity_uri.
|
|
||||||
# (string value)
|
|
||||||
#auth_host = 127.0.0.1
|
|
||||||
|
|
||||||
# Port of the admin Identity API endpoint. Deprecated, use identity_uri.
|
|
||||||
# (integer value)
|
|
||||||
#auth_port = 35357
|
|
||||||
|
|
||||||
# Protocol of the admin Identity API endpoint (http or https). Deprecated, use
|
|
||||||
# identity_uri. (string value)
|
|
||||||
#auth_protocol = https
|
|
||||||
|
|
||||||
# Complete admin Identity API endpoint. This should specify the unversioned
|
|
||||||
# root endpoint e.g. https://localhost:35357/ (string value)
|
|
||||||
#identity_uri = <None>
|
|
||||||
|
|
||||||
# This option is deprecated and may be removed in a future release. Single
|
|
||||||
# shared secret with the Keystone configuration used for bootstrapping a
|
|
||||||
# Keystone installation, or otherwise bypassing the normal authentication
|
|
||||||
# process. This option should not be used, use `admin_user` and
|
|
||||||
# `admin_password` instead. (string value)
|
|
||||||
#admin_token = <None>
|
|
||||||
|
|
||||||
# Service username. (string value)
|
|
||||||
#admin_user = <None>
|
|
||||||
|
|
||||||
# Service user password. (string value)
|
|
||||||
#admin_password = <None>
|
|
||||||
|
|
||||||
# Service tenant name. (string value)
|
|
||||||
#admin_tenant_name = admin
|
|
||||||
|
|
||||||
|
|
||||||
[matchmaker_redis]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Host to locate redis. (string value)
|
|
||||||
#host = 127.0.0.1
|
|
||||||
|
|
||||||
# Use this port to connect to redis host. (integer value)
|
|
||||||
#port = 6379
|
|
||||||
|
|
||||||
# Password for Redis server (optional). (string value)
|
|
||||||
#password = <None>
|
|
||||||
|
|
||||||
|
|
||||||
[matchmaker_ring]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Matchmaker ring file (JSON). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/matchmaker_ringfile
|
|
||||||
#ringfile = /etc/oslo/matchmaker_ring.json
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_amqp]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# address prefix used when sending to a specific server (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/server_request_prefix
|
|
||||||
#server_request_prefix = exclusive
|
|
||||||
|
|
||||||
# address prefix used when broadcasting to all servers (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/broadcast_prefix
|
|
||||||
#broadcast_prefix = broadcast
|
|
||||||
|
|
||||||
# address prefix when sending to any server in group (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/group_request_prefix
|
|
||||||
#group_request_prefix = unicast
|
|
||||||
|
|
||||||
# Name for the AMQP container (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/container_name
|
|
||||||
#container_name = <None>
|
|
||||||
|
|
||||||
# Timeout for inactive connections (in seconds) (integer value)
|
|
||||||
# Deprecated group/name - [amqp1]/idle_timeout
|
|
||||||
#idle_timeout = 0
|
|
||||||
|
|
||||||
# Debug: dump AMQP frames to stdout (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/trace
|
|
||||||
#trace = false
|
|
||||||
|
|
||||||
# CA certificate PEM file for verifing server certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_ca_file
|
|
||||||
#ssl_ca_file =
|
|
||||||
|
|
||||||
# Identifying certificate PEM file to present to clients (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_cert_file
|
|
||||||
#ssl_cert_file =
|
|
||||||
|
|
||||||
# Private key PEM file used to sign cert_file certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_file
|
|
||||||
#ssl_key_file =
|
|
||||||
|
|
||||||
# Password for decrypting ssl_key_file (if encrypted) (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_password
|
|
||||||
#ssl_key_password = <None>
|
|
||||||
|
|
||||||
# Accept clients using either SSL or plain TCP (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/allow_insecure_clients
|
|
||||||
#allow_insecure_clients = false
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_qpid]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# Qpid broker hostname. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hostname
|
|
||||||
#qpid_hostname = localhost
|
|
||||||
|
|
||||||
# Qpid broker port. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_port
|
|
||||||
#qpid_port = 5672
|
|
||||||
|
|
||||||
# Qpid HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hosts
|
|
||||||
#qpid_hosts = $qpid_hostname:$qpid_port
|
|
||||||
|
|
||||||
# Username for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_username
|
|
||||||
#qpid_username =
|
|
||||||
|
|
||||||
# Password for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_password
|
|
||||||
#qpid_password =
|
|
||||||
|
|
||||||
# Space separated list of SASL mechanisms to use for auth. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
|
|
||||||
#qpid_sasl_mechanisms =
|
|
||||||
|
|
||||||
# Seconds between connection keepalive heartbeats. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_heartbeat
|
|
||||||
#qpid_heartbeat = 60
|
|
||||||
|
|
||||||
# Transport to use, either 'tcp' or 'ssl'. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_protocol
|
|
||||||
#qpid_protocol = tcp
|
|
||||||
|
|
||||||
# Whether to disable the Nagle algorithm. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
|
|
||||||
#qpid_tcp_nodelay = true
|
|
||||||
|
|
||||||
# The number of prefetched messages held by receiver. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
|
|
||||||
#qpid_receiver_capacity = 1
|
|
||||||
|
|
||||||
# The qpid topology version to use. Version 1 is what was originally used by
|
|
||||||
# impl_qpid. Version 2 includes some backwards-incompatible changes that allow
|
|
||||||
# broker federation to work. Users should update to version 2 when they are
|
|
||||||
# able to take everything down, as it requires a clean break. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_topology_version
|
|
||||||
#qpid_topology_version = 1
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_rabbit]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
|
|
||||||
# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
|
|
||||||
# distributions. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_version
|
|
||||||
#kombu_ssl_version =
|
|
||||||
|
|
||||||
# SSL key file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
|
|
||||||
#kombu_ssl_keyfile =
|
|
||||||
|
|
||||||
# SSL cert file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
|
|
||||||
#kombu_ssl_certfile =
|
|
||||||
|
|
||||||
# SSL certification authority file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
|
|
||||||
#kombu_ssl_ca_certs =
|
|
||||||
|
|
||||||
# How long to wait before reconnecting in response to an AMQP consumer cancel
|
|
||||||
# notification. (floating point value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
|
|
||||||
#kombu_reconnect_delay = 1.0
|
|
||||||
{%- if server.message_queue.members is defined %}
|
|
||||||
rabbit_hosts = {% for member in server.message_queue.members -%}
|
|
||||||
{{ member.host }}:{{ member.get('port', 5672) }}
|
|
||||||
{%- if not loop.last -%},{%- endif -%}
|
|
||||||
{%- endfor -%}
|
|
||||||
{%- else %}
|
|
||||||
rabbit_host = {{ server.message_queue.host }}
|
|
||||||
rabbit_port = {{ server.message_queue.port }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
#rabbit_use_ssl=false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
rabbit_userid = {{ server.message_queue.user }}
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
rabbit_password = {{ server.message_queue.password }}
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
#rabbit_login_method=AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
rabbit_virtual_host = {{ server.message_queue.virtual_host }}
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
#rabbit_retry_interval=1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to
|
|
||||||
# RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_backoff=2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0
|
|
||||||
# (infinite retry count). (integer value)
|
|
||||||
#rabbit_max_retries=0
|
|
||||||
|
|
||||||
#rabbit_host = localhost
|
|
||||||
|
|
||||||
# The RabbitMQ broker port where a single node is used. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_port
|
|
||||||
#rabbit_port = 5672
|
|
||||||
|
|
||||||
# RabbitMQ HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_hosts
|
|
||||||
#rabbit_hosts = $rabbit_host:$rabbit_port
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
|
|
||||||
#rabbit_use_ssl = false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_userid
|
|
||||||
#rabbit_userid = guest
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_password
|
|
||||||
#rabbit_password = guest
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_login_method
|
|
||||||
#rabbit_login_method = AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
|
|
||||||
#rabbit_virtual_host = /
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_interval = 1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff
|
|
||||||
#rabbit_retry_backoff = 2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0 (infinite retry
|
|
||||||
# count). (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_max_retries
|
|
||||||
#rabbit_max_retries = 0
|
|
||||||
|
|
||||||
# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you
|
|
||||||
# must wipe the RabbitMQ database. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
|
|
||||||
#rabbit_ha_queues = false
|
|
||||||
|
|
||||||
# Number of seconds after which the Rabbit broker is considered down if
|
|
||||||
# heartbeat's keep-alive fails (0 disable the heartbeat). (integer value)
|
|
||||||
#heartbeat_timeout_threshold = 60
|
|
||||||
|
|
||||||
# How often times during the heartbeat_timeout_threshold we check the
|
|
||||||
# heartbeat. (integer value)
|
|
||||||
#heartbeat_rate = 2
|
|
||||||
|
|
||||||
# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/fake_rabbit
|
|
||||||
#fake_rabbit = false
|
|
||||||
|
|
||||||
[ec2authtoken]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.api.aws.ec2token
|
|
||||||
#
|
|
||||||
|
|
||||||
# Authentication Endpoint URI. (string value)
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v2.0
|
|
||||||
|
|
||||||
# Allow orchestration of multiple clouds. (boolean value)
|
|
||||||
#multi_cloud=false
|
|
||||||
|
|
||||||
# Allowed keystone endpoints for auth_uri when multi_cloud is
|
|
||||||
# enabled. At least one endpoint needs to be specified. (list
|
|
||||||
# value)
|
|
||||||
#allowed_auth_uris=
|
|
||||||
|
|
||||||
keystone_ec2_uri=http://{{ server.identity.host }}:5000/v2.0/ec2tokens
|
|
||||||
|
|
||||||
{%- if pillar.get('opencontrail', {}).get('client', {}).get('enabled', False) %}
|
|
||||||
|
|
||||||
{%- from "opencontrail/map.jinja" import client with context %}
|
|
||||||
|
|
||||||
[clients_contrail]
|
|
||||||
|
|
||||||
user={{ client.identity.user }}
|
|
||||||
password={{ client.identity.password }}
|
|
||||||
tenant={{ client.identity.tenant }}
|
|
||||||
auth_host_ip={{ client.identity.host }}
|
|
||||||
api_server={{ client.api.host }}
|
|
||||||
api_port={{ client.api.port }}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- if pillar.get('salt', {}).get('client', {}).get('enabled', False) %}
|
|
||||||
|
|
||||||
{%- set client = pillar.get('salt', {}).get('client', {}) %}
|
|
||||||
|
|
||||||
[clients_salt]
|
|
||||||
|
|
||||||
user={{ client.user }}
|
|
||||||
password={{ client.password }}
|
|
||||||
host={{ client.host }}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
|
@ -1 +0,0 @@
|
||||||
heat.conf.Debian
|
|
|
@ -1,105 +0,0 @@
|
||||||
|
|
||||||
# heat-api pipeline
|
|
||||||
[pipeline:heat-api]
|
|
||||||
pipeline = cors request_id faultwrap http_proxy_to_wsgi versionnegotiation osprofiler authurl authtoken context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for standalone heat
|
|
||||||
# ie. uses alternative auth backend that authenticates users against keystone
|
|
||||||
# using username and password instead of validating token (which requires
|
|
||||||
# an admin/service token).
|
|
||||||
# To enable, in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = standalone
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-standalone]
|
|
||||||
pipeline = cors request_id faultwrap http_proxy_to_wsgi versionnegotiation authurl authpassword context apiv1app
|
|
||||||
|
|
||||||
# heat-api pipeline for custom cloud backends
|
|
||||||
# i.e. in heat.conf:
|
|
||||||
# [paste_deploy]
|
|
||||||
# flavor = custombackend
|
|
||||||
#
|
|
||||||
[pipeline:heat-api-custombackend]
|
|
||||||
pipeline = cors request_id faultwrap versionnegotiation context custombackendauth apiv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline
|
|
||||||
[pipeline:heat-api-cfn]
|
|
||||||
pipeline = cors cfnversionnegotiation osprofiler ec2authtoken authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cfn pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cfn-standalone]
|
|
||||||
pipeline = cors cfnversionnegotiation ec2authtoken context apicfnv1app
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline
|
|
||||||
[pipeline:heat-api-cloudwatch]
|
|
||||||
pipeline = cors versionnegotiation osprofiler ec2authtoken authtoken context apicwapp
|
|
||||||
|
|
||||||
# heat-api-cloudwatch pipeline for standalone heat
|
|
||||||
# relies exclusively on authenticating with ec2 signed requests
|
|
||||||
[pipeline:heat-api-cloudwatch-standalone]
|
|
||||||
pipeline = cors versionnegotiation ec2authtoken context apicwapp
|
|
||||||
|
|
||||||
[app:apiv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.openstack.v1:API
|
|
||||||
|
|
||||||
[app:apicfnv1app]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cfn.v1:API
|
|
||||||
|
|
||||||
[app:apicwapp]
|
|
||||||
paste.app_factory = heat.common.wsgi:app_factory
|
|
||||||
heat.app_factory = heat.api.cloudwatch:API
|
|
||||||
|
|
||||||
[filter:versionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:cors]
|
|
||||||
paste.filter_factory = oslo_middleware.cors:filter_factory
|
|
||||||
oslo_config_project = heat
|
|
||||||
|
|
||||||
[filter:faultwrap]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.openstack:faultwrap_filter
|
|
||||||
|
|
||||||
[filter:cfnversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cfn:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:cwversionnegotiation]
|
|
||||||
paste.filter_factory = heat.common.wsgi:filter_factory
|
|
||||||
heat.filter_factory = heat.api.cloudwatch:version_negotiation_filter
|
|
||||||
|
|
||||||
[filter:context]
|
|
||||||
paste.filter_factory = heat.common.context:ContextMiddleware_filter_factory
|
|
||||||
|
|
||||||
[filter:ec2authtoken]
|
|
||||||
paste.filter_factory = heat.api.aws.ec2token:EC2Token_filter_factory
|
|
||||||
|
|
||||||
[filter:http_proxy_to_wsgi]
|
|
||||||
paste.filter_factory = oslo_middleware:HTTPProxyToWSGI.factory
|
|
||||||
|
|
||||||
# Middleware to set auth_url header appropriately
|
|
||||||
[filter:authurl]
|
|
||||||
paste.filter_factory = heat.common.auth_url:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates token against keystone
|
|
||||||
[filter:authtoken]
|
|
||||||
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates username/password against keystone
|
|
||||||
[filter:authpassword]
|
|
||||||
paste.filter_factory = heat.common.auth_password:filter_factory
|
|
||||||
|
|
||||||
# Auth middleware that validates against custom backend
|
|
||||||
[filter:custombackendauth]
|
|
||||||
paste.filter_factory = heat.common.custom_backend_auth:filter_factory
|
|
||||||
|
|
||||||
# Middleware to set x-openstack-request-id in http response header
|
|
||||||
[filter:request_id]
|
|
||||||
paste.filter_factory = oslo_middleware.request_id:RequestId.factory
|
|
||||||
|
|
||||||
[filter:osprofiler]
|
|
||||||
paste.filter_factory = osprofiler.web:WsgiMiddleware.factory
|
|
|
@ -1,761 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
[DEFAULT]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.log
|
|
||||||
#
|
|
||||||
|
|
||||||
region_name_for_services={{ server.region }}
|
|
||||||
|
|
||||||
# Print debugging output (set logging level to DEBUG instead of default WARNING
|
|
||||||
# level). (boolean value)
|
|
||||||
#debug = false
|
|
||||||
|
|
||||||
# Print more verbose output (set logging level to INFO instead of default
|
|
||||||
# WARNING level). (boolean value)
|
|
||||||
#verbose = false
|
|
||||||
verbose = true
|
|
||||||
|
|
||||||
# The name of a logging configuration file. This file is appended to any
|
|
||||||
# existing logging configuration files. For details about logging configuration
|
|
||||||
# files, see the Python logging module documentation. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/log_config
|
|
||||||
#log_config_append = <None>
|
|
||||||
|
|
||||||
# DEPRECATED. A logging.Formatter log message format string which may use any
|
|
||||||
# of the available logging.LogRecord attributes. This option is deprecated.
|
|
||||||
# Please use logging_context_format_string and logging_default_format_string
|
|
||||||
# instead. (string value)
|
|
||||||
#log_format = <None>
|
|
||||||
|
|
||||||
# List of directories to search for plug-ins. (list value)
|
|
||||||
{%- if server.get('dir', {}).plugins is defined %}
|
|
||||||
plugin_dirs={{ server.dir.plugins|join(",") }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
heat_metadata_server_url=http://{{ server.metadata.host }}:{{ server.metadata.port }}
|
|
||||||
|
|
||||||
# URL of the Heat waitcondition server. (string value)
|
|
||||||
heat_waitcondition_server_url=http://{{ server.waitcondition.host }}:{{ server.waitcondition.port }}/v1/waitcondition
|
|
||||||
|
|
||||||
# URL of the Heat CloudWatch server. (string value)
|
|
||||||
heat_watch_server_url=http://{{ server.watch.host }}:{{ server.watch.port }}
|
|
||||||
# Format string for %%(asctime)s in log records. Default: %(default)s . (string
|
|
||||||
# value)
|
|
||||||
#log_date_format = %Y-%m-%d %H:%M:%S
|
|
||||||
|
|
||||||
# (Optional) Name of log file to output to. If no default is set, logging will
|
|
||||||
# go to stdout. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logfile
|
|
||||||
#log_file = <None>
|
|
||||||
log_file=/var/log/heat/heat.log
|
|
||||||
|
|
||||||
# (Optional) The base directory used for relative --log-file paths. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logdir
|
|
||||||
#log_dir = <None>
|
|
||||||
|
|
||||||
# Use syslog for logging. Existing syslog format is DEPRECATED during I, and
|
|
||||||
# will change in J to honor RFC5424. (boolean value)
|
|
||||||
#use_syslog = false
|
|
||||||
|
|
||||||
workers=4
|
|
||||||
|
|
||||||
{%- if server.stack_domain_admin is defined %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
stack_domain_admin = heat_domain_admin
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
stack_domain_admin_password={{ server.stack_domain_admin.password }}
|
|
||||||
|
|
||||||
stack_user_domain_name = heat_user_domain
|
|
||||||
|
|
||||||
{%- else %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
#stack_domain_admin=<None>
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
#stack_domain_admin_password=<None>
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
# (Optional) Enables or disables syslog rfc5424 format for logging. If enabled,
|
|
||||||
# prefixes the MSG part of the syslog message with APP-NAME (RFC5424). The
|
|
||||||
# format without the APP-NAME is deprecated in I, and will be removed in J.
|
|
||||||
# (boolean value)
|
|
||||||
#use_syslog_rfc_format = false
|
|
||||||
|
|
||||||
# Syslog facility to receive log lines. (string value)
|
|
||||||
#syslog_log_facility = LOG_USER
|
|
||||||
|
|
||||||
# Log output to standard error. (boolean value)
|
|
||||||
#use_stderr = true
|
|
||||||
|
|
||||||
# Format string to use for log messages with context. (string value)
|
|
||||||
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Format string to use for log messages without context. (string value)
|
|
||||||
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Data to append to log format when level is DEBUG. (string value)
|
|
||||||
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
|
|
||||||
|
|
||||||
# Prefix each line of exception output with this format. (string value)
|
|
||||||
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
|
|
||||||
|
|
||||||
# List of logger=LEVEL pairs. (list value)
|
|
||||||
#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
|
|
||||||
|
|
||||||
# Enables or disables publication of error events. (boolean value)
|
|
||||||
#publish_errors = false
|
|
||||||
|
|
||||||
# Enables or disables fatal status of deprecations. (boolean value)
|
|
||||||
#fatal_deprecations = false
|
|
||||||
|
|
||||||
# The format for an instance that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
# The format for an instance UUID that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_uuid_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Size of RPC connection pool. (integer value)
|
|
||||||
#rpc_conn_pool_size = 30
|
|
||||||
|
|
||||||
# ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP.
|
|
||||||
# The "host" option should point or resolve to this address. (string value)
|
|
||||||
#rpc_zmq_bind_address = *
|
|
||||||
|
|
||||||
# MatchMaker driver. (string value)
|
|
||||||
#rpc_zmq_matchmaker = local
|
|
||||||
|
|
||||||
# ZeroMQ receiver listening port. (integer value)
|
|
||||||
#rpc_zmq_port = 9501
|
|
||||||
|
|
||||||
# Number of ZeroMQ contexts, defaults to 1. (integer value)
|
|
||||||
#rpc_zmq_contexts = 1
|
|
||||||
|
|
||||||
# Maximum number of ingress messages to locally buffer per topic. Default is
|
|
||||||
# unlimited. (integer value)
|
|
||||||
#rpc_zmq_topic_backlog = <None>
|
|
||||||
|
|
||||||
# Directory for holding IPC sockets. (string value)
|
|
||||||
#rpc_zmq_ipc_dir = /var/run/openstack
|
|
||||||
|
|
||||||
# Name of this node. Must be a valid hostname, FQDN, or IP address. Must match
|
|
||||||
# "host" option, if running Nova. (string value)
|
|
||||||
#rpc_zmq_host = localhost
|
|
||||||
|
|
||||||
# Seconds to wait before a cast expires (TTL). Only supported by impl_zmq.
|
|
||||||
# (integer value)
|
|
||||||
#rpc_cast_timeout = 30
|
|
||||||
|
|
||||||
# Heartbeat frequency. (integer value)
|
|
||||||
#matchmaker_heartbeat_freq = 300
|
|
||||||
|
|
||||||
# Heartbeat time-to-live. (integer value)
|
|
||||||
#matchmaker_heartbeat_ttl = 600
|
|
||||||
|
|
||||||
# Size of RPC thread pool. (integer value)
|
|
||||||
#rpc_thread_pool_size = 64
|
|
||||||
|
|
||||||
# Driver or drivers to handle sending notifications. (multi valued)
|
|
||||||
#notification_driver =
|
|
||||||
{%- if server.notification is mapping %}
|
|
||||||
notification_driver = {{ server.notification.get('driver', 'messagingv2') }}
|
|
||||||
{%- if server.notification.topics is defined %}
|
|
||||||
notification_topics = {{ server.notification.topics }}
|
|
||||||
{%- endif %}
|
|
||||||
{%- elif server.notification %}
|
|
||||||
notification_driver = messagingv2
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
# AMQP topic used for OpenStack notifications. (list value)
|
|
||||||
# Deprecated group/name - [rpc_notifier2]/topics
|
|
||||||
#notification_topics = notifications
|
|
||||||
|
|
||||||
# Seconds to wait for a response from a call. (integer value)
|
|
||||||
#rpc_response_timeout = 60
|
|
||||||
rpc_response_timeout = 600
|
|
||||||
|
|
||||||
# A URL representing the messaging driver to use and its full configuration. If
|
|
||||||
# not set, we fall back to the rpc_backend option and driver specific
|
|
||||||
# configuration. (string value)
|
|
||||||
#transport_url = <None>
|
|
||||||
|
|
||||||
# The messaging driver to use, defaults to rabbit. Other drivers include qpid
|
|
||||||
# and zmq. (string value)
|
|
||||||
#rpc_backend = rabbit
|
|
||||||
rpc_backend = rabbit
|
|
||||||
|
|
||||||
# The default exchange under which topics are scoped. May be overridden by an
|
|
||||||
# exchange name specified in the transport_url option. (string value)
|
|
||||||
#control_exchange = openstack
|
|
||||||
|
|
||||||
max_resources_per_stack=20000
|
|
||||||
max_json_body_size=10880000
|
|
||||||
max_template_size=5440000
|
|
||||||
|
|
||||||
[heat_api]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host = {{ server.bind.api.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8004
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cfn]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host = {{ server.bind.api_cfn.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8000
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cloudwatch]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host = {{ server.bind.api_cloudwatch.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8003
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs.) (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[database]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.db
|
|
||||||
#
|
|
||||||
|
|
||||||
# The file name to use with SQLite. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_db
|
|
||||||
#sqlite_db = oslo.sqlite
|
|
||||||
|
|
||||||
# If True, SQLite uses synchronous mode. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_synchronous
|
|
||||||
#sqlite_synchronous = true
|
|
||||||
|
|
||||||
# The back end to use for the database. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/db_backend
|
|
||||||
#backend = sqlalchemy
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the database. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_connection
|
|
||||||
# Deprecated group/name - [sql]/connection
|
|
||||||
#connection = <None>
|
|
||||||
connection = {{ server.database.engine }}://{{ server.database.user }}:{{ server.database.password }}@{{ server.database.host }}/{{ server.database.name }}
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the slave database.
|
|
||||||
# (string value)
|
|
||||||
#slave_connection = <None>
|
|
||||||
|
|
||||||
# The SQL mode to be used for MySQL sessions. This option, including the
|
|
||||||
# default, overrides any server-set SQL mode. To use whatever SQL mode is set
|
|
||||||
# by the server configuration, set this to no value. Example: mysql_sql_mode=
|
|
||||||
# (string value)
|
|
||||||
#mysql_sql_mode = TRADITIONAL
|
|
||||||
|
|
||||||
# Timeout before idle SQL connections are reaped. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [sql]/idle_timeout
|
|
||||||
#idle_timeout = 3600
|
|
||||||
|
|
||||||
# Minimum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_min_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_min_pool_size
|
|
||||||
#min_pool_size = 1
|
|
||||||
|
|
||||||
# Maximum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_pool_size
|
|
||||||
#max_pool_size = <None>
|
|
||||||
|
|
||||||
# Maximum number of database connection retries during startup. Set to -1 to
|
|
||||||
# specify an infinite retry count. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_retries
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_retries
|
|
||||||
#max_retries = 10
|
|
||||||
|
|
||||||
# Interval between retries of opening a SQL connection. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_retry_interval
|
|
||||||
# Deprecated group/name - [DATABASE]/reconnect_interval
|
|
||||||
#retry_interval = 10
|
|
||||||
|
|
||||||
# If set, use this value for max_overflow with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_overflow
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
|
|
||||||
#max_overflow = <None>
|
|
||||||
|
|
||||||
# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_debug
|
|
||||||
#connection_debug = 0
|
|
||||||
|
|
||||||
# Add Python stack traces to SQL as comment strings. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_trace
|
|
||||||
#connection_trace = false
|
|
||||||
|
|
||||||
# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
|
|
||||||
#pool_timeout = <None>
|
|
||||||
|
|
||||||
# Enable the experimental use of database reconnect on connection lost.
|
|
||||||
# (boolean value)
|
|
||||||
#use_db_reconnect = false
|
|
||||||
|
|
||||||
# Seconds between retries of a database transaction. (integer value)
|
|
||||||
#db_retry_interval = 1
|
|
||||||
|
|
||||||
# If True, increases the interval between retries of a database operation up to
|
|
||||||
# db_max_retry_interval. (boolean value)
|
|
||||||
#db_inc_retry_interval = true
|
|
||||||
|
|
||||||
# If db_inc_retry_interval is set, the maximum seconds between retries of a
|
|
||||||
# database operation. (integer value)
|
|
||||||
#db_max_retry_interval = 10
|
|
||||||
|
|
||||||
# Maximum retries in case of connection error or deadlock error before error is
|
|
||||||
# raised. Set to -1 to specify an infinite retry count. (integer value)
|
|
||||||
#db_max_retries = 20
|
|
||||||
|
|
||||||
|
|
||||||
[keystone_authtoken]
|
|
||||||
|
|
||||||
#auth_type = password
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v2.0
|
|
||||||
identity_uri=http://{{ server.identity.host }}:35357
|
|
||||||
admin_user={{ server.identity.user }}
|
|
||||||
admin_password={{ server.identity.password }}
|
|
||||||
admin_tenant_name={{ server.identity.tenant }}
|
|
||||||
# Commented based on Fuel 9.0 reference configs
|
|
||||||
#auth_url=http://{{ server.identity.host }}:35357/v3
|
|
||||||
#username = {{ server.identity.user }}
|
|
||||||
#password = {{ server.identity.password }}
|
|
||||||
#project_name = {{ server.identity.tenant }}
|
|
||||||
#project_domain_name = default
|
|
||||||
#user_domain_name = default
|
|
||||||
{%- if server.cache is defined %}
|
|
||||||
#memcached_servers={%- for member in server.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- if server.cache is defined %}
|
|
||||||
[cache]
|
|
||||||
enabled=True
|
|
||||||
backend=oslo_cache.memcache_pool
|
|
||||||
memcached_servers={%- for member in server.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
[trustee]
|
|
||||||
auth_plugin = password
|
|
||||||
auth_url = http://{{ server.identity.host }}:35357
|
|
||||||
username = {{ server.identity.user }}
|
|
||||||
password = {{ server.identity.password }}
|
|
||||||
user_domain_name = default
|
|
||||||
project_domain_id=Default
|
|
||||||
user_domain_id=Default
|
|
||||||
|
|
||||||
[matchmaker_redis]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Host to locate redis. (string value)
|
|
||||||
#host = 127.0.0.1
|
|
||||||
|
|
||||||
# Use this port to connect to redis host. (integer value)
|
|
||||||
#port = 6379
|
|
||||||
|
|
||||||
# Password for Redis server (optional). (string value)
|
|
||||||
#password = <None>
|
|
||||||
|
|
||||||
|
|
||||||
[matchmaker_ring]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Matchmaker ring file (JSON). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/matchmaker_ringfile
|
|
||||||
#ringfile = /etc/oslo/matchmaker_ring.json
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_amqp]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# address prefix used when sending to a specific server (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/server_request_prefix
|
|
||||||
#server_request_prefix = exclusive
|
|
||||||
|
|
||||||
# address prefix used when broadcasting to all servers (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/broadcast_prefix
|
|
||||||
#broadcast_prefix = broadcast
|
|
||||||
|
|
||||||
# address prefix when sending to any server in group (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/group_request_prefix
|
|
||||||
#group_request_prefix = unicast
|
|
||||||
|
|
||||||
# Name for the AMQP container (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/container_name
|
|
||||||
#container_name = <None>
|
|
||||||
|
|
||||||
# Timeout for inactive connections (in seconds) (integer value)
|
|
||||||
# Deprecated group/name - [amqp1]/idle_timeout
|
|
||||||
#idle_timeout = 0
|
|
||||||
|
|
||||||
# Debug: dump AMQP frames to stdout (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/trace
|
|
||||||
#trace = false
|
|
||||||
|
|
||||||
# CA certificate PEM file for verifing server certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_ca_file
|
|
||||||
#ssl_ca_file =
|
|
||||||
|
|
||||||
# Identifying certificate PEM file to present to clients (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_cert_file
|
|
||||||
#ssl_cert_file =
|
|
||||||
|
|
||||||
# Private key PEM file used to sign cert_file certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_file
|
|
||||||
#ssl_key_file =
|
|
||||||
|
|
||||||
# Password for decrypting ssl_key_file (if encrypted) (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_password
|
|
||||||
#ssl_key_password = <None>
|
|
||||||
|
|
||||||
# Accept clients using either SSL or plain TCP (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/allow_insecure_clients
|
|
||||||
#allow_insecure_clients = false
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_qpid]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# Qpid broker hostname. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hostname
|
|
||||||
#qpid_hostname = localhost
|
|
||||||
|
|
||||||
# Qpid broker port. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_port
|
|
||||||
#qpid_port = 5672
|
|
||||||
|
|
||||||
# Qpid HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hosts
|
|
||||||
#qpid_hosts = $qpid_hostname:$qpid_port
|
|
||||||
|
|
||||||
# Username for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_username
|
|
||||||
#qpid_username =
|
|
||||||
|
|
||||||
# Password for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_password
|
|
||||||
#qpid_password =
|
|
||||||
|
|
||||||
# Space separated list of SASL mechanisms to use for auth. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
|
|
||||||
#qpid_sasl_mechanisms =
|
|
||||||
|
|
||||||
# Seconds between connection keepalive heartbeats. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_heartbeat
|
|
||||||
#qpid_heartbeat = 60
|
|
||||||
|
|
||||||
# Transport to use, either 'tcp' or 'ssl'. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_protocol
|
|
||||||
#qpid_protocol = tcp
|
|
||||||
|
|
||||||
# Whether to disable the Nagle algorithm. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
|
|
||||||
#qpid_tcp_nodelay = true
|
|
||||||
|
|
||||||
# The number of prefetched messages held by receiver. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
|
|
||||||
#qpid_receiver_capacity = 1
|
|
||||||
|
|
||||||
# The qpid topology version to use. Version 1 is what was originally used by
|
|
||||||
# impl_qpid. Version 2 includes some backwards-incompatible changes that allow
|
|
||||||
# broker federation to work. Users should update to version 2 when they are
|
|
||||||
# able to take everything down, as it requires a clean break. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_topology_version
|
|
||||||
#qpid_topology_version = 1
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_rabbit]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
|
|
||||||
# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
|
|
||||||
# distributions. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_version
|
|
||||||
#kombu_ssl_version =
|
|
||||||
|
|
||||||
# SSL key file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
|
|
||||||
#kombu_ssl_keyfile =
|
|
||||||
|
|
||||||
# SSL cert file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
|
|
||||||
#kombu_ssl_certfile =
|
|
||||||
|
|
||||||
# SSL certification authority file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
|
|
||||||
#kombu_ssl_ca_certs =
|
|
||||||
|
|
||||||
# How long to wait before reconnecting in response to an AMQP consumer cancel
|
|
||||||
# notification. (floating point value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
|
|
||||||
#kombu_reconnect_delay = 1.0
|
|
||||||
{%- if server.message_queue.members is defined %}
|
|
||||||
rabbit_hosts = {% for member in server.message_queue.members -%}
|
|
||||||
{{ member.host }}:{{ member.get('port', 5672) }}
|
|
||||||
{%- if not loop.last -%},{%- endif -%}
|
|
||||||
{%- endfor -%}
|
|
||||||
{%- else %}
|
|
||||||
rabbit_host = {{ server.message_queue.host }}
|
|
||||||
rabbit_port = {{ server.message_queue.port }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
#rabbit_use_ssl=false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
rabbit_userid = {{ server.message_queue.user }}
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
rabbit_password = {{ server.message_queue.password }}
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
#rabbit_login_method=AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
rabbit_virtual_host = {{ server.message_queue.virtual_host }}
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
#rabbit_retry_interval=1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to
|
|
||||||
# RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_backoff=2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0
|
|
||||||
# (infinite retry count). (integer value)
|
|
||||||
#rabbit_max_retries=0
|
|
||||||
|
|
||||||
#rabbit_host = localhost
|
|
||||||
|
|
||||||
# The RabbitMQ broker port where a single node is used. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_port
|
|
||||||
#rabbit_port = 5672
|
|
||||||
|
|
||||||
# RabbitMQ HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_hosts
|
|
||||||
#rabbit_hosts = $rabbit_host:$rabbit_port
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
|
|
||||||
#rabbit_use_ssl = false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_userid
|
|
||||||
#rabbit_userid = guest
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_password
|
|
||||||
#rabbit_password = guest
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_login_method
|
|
||||||
#rabbit_login_method = AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
|
|
||||||
#rabbit_virtual_host = /
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_interval = 1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff
|
|
||||||
#rabbit_retry_backoff = 2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0 (infinite retry
|
|
||||||
# count). (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_max_retries
|
|
||||||
#rabbit_max_retries = 0
|
|
||||||
|
|
||||||
# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you
|
|
||||||
# must wipe the RabbitMQ database. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
|
|
||||||
#rabbit_ha_queues = false
|
|
||||||
|
|
||||||
# Number of seconds after which the Rabbit broker is considered down if
|
|
||||||
# heartbeat's keep-alive fails (0 disable the heartbeat). (integer value)
|
|
||||||
#heartbeat_timeout_threshold = 60
|
|
||||||
|
|
||||||
# How often times during the heartbeat_timeout_threshold we check the
|
|
||||||
# heartbeat. (integer value)
|
|
||||||
#heartbeat_rate = 2
|
|
||||||
|
|
||||||
# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/fake_rabbit
|
|
||||||
#fake_rabbit = false
|
|
||||||
|
|
||||||
[ec2authtoken]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.api.aws.ec2token
|
|
||||||
#
|
|
||||||
|
|
||||||
# Authentication Endpoint URI. (string value)
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v2.0
|
|
||||||
|
|
||||||
# Allow orchestration of multiple clouds. (boolean value)
|
|
||||||
#multi_cloud=false
|
|
||||||
|
|
||||||
# Allowed keystone endpoints for auth_uri when multi_cloud is
|
|
||||||
# enabled. At least one endpoint needs to be specified. (list
|
|
||||||
# value)
|
|
||||||
#allowed_auth_uris=
|
|
||||||
|
|
||||||
keystone_ec2_uri=http://{{ server.identity.host }}:5000/v2.0/ec2tokens
|
|
||||||
|
|
||||||
[clients_keystone]
|
|
||||||
auth_uri=http://{{ server.identity.host }}:35357
|
|
||||||
|
|
||||||
{%- if pillar.get('opencontrail', {}).get('client', {}).get('enabled', False) %}
|
|
||||||
|
|
||||||
{%- from "opencontrail/map.jinja" import client with context %}
|
|
||||||
|
|
||||||
[clients_contrail]
|
|
||||||
|
|
||||||
user={{ client.identity.user }}
|
|
||||||
password={{ client.identity.password }}
|
|
||||||
tenant={{ client.identity.tenant }}
|
|
||||||
auth_host_ip={{ client.identity.host }}
|
|
||||||
api_server={{ client.api.host }}
|
|
||||||
api_port={{ client.api.port }}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
|
@ -1,732 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
[DEFAULT]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.log
|
|
||||||
#
|
|
||||||
|
|
||||||
region_name_for_services={{ server.region }}
|
|
||||||
|
|
||||||
# Print debugging output (set logging level to DEBUG instead of default WARNING
|
|
||||||
# level). (boolean value)
|
|
||||||
#debug = false
|
|
||||||
|
|
||||||
# Print more verbose output (set logging level to INFO instead of default
|
|
||||||
# WARNING level). (boolean value)
|
|
||||||
#verbose = false
|
|
||||||
verbose = true
|
|
||||||
|
|
||||||
# The name of a logging configuration file. This file is appended to any
|
|
||||||
# existing logging configuration files. For details about logging configuration
|
|
||||||
# files, see the Python logging module documentation. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/log_config
|
|
||||||
#log_config_append = <None>
|
|
||||||
|
|
||||||
# DEPRECATED. A logging.Formatter log message format string which may use any
|
|
||||||
# of the available logging.LogRecord attributes. This option is deprecated.
|
|
||||||
# Please use logging_context_format_string and logging_default_format_string
|
|
||||||
# instead. (string value)
|
|
||||||
#log_format = <None>
|
|
||||||
|
|
||||||
# List of directories to search for plug-ins. (list value)
|
|
||||||
{%- if server.get('dir', {}).plugins is defined %}
|
|
||||||
plugin_dirs={{ server.dir.plugins|join(",") }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
heat_metadata_server_url=http://{{ server.metadata.host }}:{{ server.metadata.port }}
|
|
||||||
|
|
||||||
# URL of the Heat waitcondition server. (string value)
|
|
||||||
heat_waitcondition_server_url=http://{{ server.waitcondition.host }}:{{ server.waitcondition.port }}/v1/waitcondition
|
|
||||||
|
|
||||||
# URL of the Heat CloudWatch server. (string value)
|
|
||||||
heat_watch_server_url=http://{{ server.watch.host }}:{{ server.watch.port }}
|
|
||||||
# Format string for %%(asctime)s in log records. Default: %(default)s . (string
|
|
||||||
# value)
|
|
||||||
#log_date_format = %Y-%m-%d %H:%M:%S
|
|
||||||
|
|
||||||
# (Optional) Name of log file to output to. If no default is set, logging will
|
|
||||||
# go to stdout. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logfile
|
|
||||||
#log_file = <None>
|
|
||||||
log_file=/var/log/heat/heat.log
|
|
||||||
|
|
||||||
# (Optional) The base directory used for relative --log-file paths. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/logdir
|
|
||||||
#log_dir = <None>
|
|
||||||
|
|
||||||
# Use syslog for logging. Existing syslog format is DEPRECATED during I, and
|
|
||||||
# will change in J to honor RFC5424. (boolean value)
|
|
||||||
#use_syslog = false
|
|
||||||
|
|
||||||
workers=4
|
|
||||||
|
|
||||||
{%- if server.stack_domain_admin is defined %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
stack_domain_admin = heat_domain_admin
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
stack_domain_admin_password={{ server.stack_domain_admin.password }}
|
|
||||||
|
|
||||||
stack_user_domain_name = heat_user_domain
|
|
||||||
|
|
||||||
{%- else %}
|
|
||||||
|
|
||||||
# Keystone username, a user with roles sufficient to manage
|
|
||||||
# users and projects in the stack_user_domain. (string value)
|
|
||||||
#stack_domain_admin=<None>
|
|
||||||
|
|
||||||
# Keystone password for stack_domain_admin user. (string
|
|
||||||
# value)
|
|
||||||
#stack_domain_admin_password=<None>
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
# (Optional) Enables or disables syslog rfc5424 format for logging. If enabled,
|
|
||||||
# prefixes the MSG part of the syslog message with APP-NAME (RFC5424). The
|
|
||||||
# format without the APP-NAME is deprecated in I, and will be removed in J.
|
|
||||||
# (boolean value)
|
|
||||||
#use_syslog_rfc_format = false
|
|
||||||
|
|
||||||
# Syslog facility to receive log lines. (string value)
|
|
||||||
#syslog_log_facility = LOG_USER
|
|
||||||
|
|
||||||
# Log output to standard error. (boolean value)
|
|
||||||
#use_stderr = true
|
|
||||||
|
|
||||||
# Format string to use for log messages with context. (string value)
|
|
||||||
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Format string to use for log messages without context. (string value)
|
|
||||||
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
|
|
||||||
|
|
||||||
# Data to append to log format when level is DEBUG. (string value)
|
|
||||||
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d
|
|
||||||
|
|
||||||
# Prefix each line of exception output with this format. (string value)
|
|
||||||
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s
|
|
||||||
|
|
||||||
# List of logger=LEVEL pairs. (list value)
|
|
||||||
#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN
|
|
||||||
|
|
||||||
# Enables or disables publication of error events. (boolean value)
|
|
||||||
#publish_errors = false
|
|
||||||
|
|
||||||
# Enables or disables fatal status of deprecations. (boolean value)
|
|
||||||
#fatal_deprecations = false
|
|
||||||
|
|
||||||
# The format for an instance that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
# The format for an instance UUID that is passed with the log message. (string
|
|
||||||
# value)
|
|
||||||
#instance_uuid_format = "[instance: %(uuid)s] "
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Size of RPC connection pool. (integer value)
|
|
||||||
#rpc_conn_pool_size = 30
|
|
||||||
|
|
||||||
# ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP.
|
|
||||||
# The "host" option should point or resolve to this address. (string value)
|
|
||||||
#rpc_zmq_bind_address = *
|
|
||||||
|
|
||||||
# MatchMaker driver. (string value)
|
|
||||||
#rpc_zmq_matchmaker = local
|
|
||||||
|
|
||||||
# ZeroMQ receiver listening port. (integer value)
|
|
||||||
#rpc_zmq_port = 9501
|
|
||||||
|
|
||||||
# Number of ZeroMQ contexts, defaults to 1. (integer value)
|
|
||||||
#rpc_zmq_contexts = 1
|
|
||||||
|
|
||||||
# Maximum number of ingress messages to locally buffer per topic. Default is
|
|
||||||
# unlimited. (integer value)
|
|
||||||
#rpc_zmq_topic_backlog = <None>
|
|
||||||
|
|
||||||
# Directory for holding IPC sockets. (string value)
|
|
||||||
#rpc_zmq_ipc_dir = /var/run/openstack
|
|
||||||
|
|
||||||
# Name of this node. Must be a valid hostname, FQDN, or IP address. Must match
|
|
||||||
# "host" option, if running Nova. (string value)
|
|
||||||
#rpc_zmq_host = localhost
|
|
||||||
|
|
||||||
# Seconds to wait before a cast expires (TTL). Only supported by impl_zmq.
|
|
||||||
# (integer value)
|
|
||||||
#rpc_cast_timeout = 30
|
|
||||||
|
|
||||||
# Heartbeat frequency. (integer value)
|
|
||||||
#matchmaker_heartbeat_freq = 300
|
|
||||||
|
|
||||||
# Heartbeat time-to-live. (integer value)
|
|
||||||
#matchmaker_heartbeat_ttl = 600
|
|
||||||
|
|
||||||
# Size of RPC thread pool. (integer value)
|
|
||||||
#rpc_thread_pool_size = 64
|
|
||||||
|
|
||||||
# Driver or drivers to handle sending notifications. (multi valued)
|
|
||||||
#notification_driver =
|
|
||||||
notification_driver = oslo.messaging.notifier.Notifier
|
|
||||||
|
|
||||||
# AMQP topic used for OpenStack notifications. (list value)
|
|
||||||
# Deprecated group/name - [rpc_notifier2]/topics
|
|
||||||
#notification_topics = notifications
|
|
||||||
|
|
||||||
# Seconds to wait for a response from a call. (integer value)
|
|
||||||
#rpc_response_timeout = 60
|
|
||||||
|
|
||||||
# A URL representing the messaging driver to use and its full configuration. If
|
|
||||||
# not set, we fall back to the rpc_backend option and driver specific
|
|
||||||
# configuration. (string value)
|
|
||||||
#transport_url = <None>
|
|
||||||
|
|
||||||
# The messaging driver to use, defaults to rabbit. Other drivers include qpid
|
|
||||||
# and zmq. (string value)
|
|
||||||
#rpc_backend = rabbit
|
|
||||||
rpc_backend = rabbit
|
|
||||||
|
|
||||||
# The default exchange under which topics are scoped. May be overridden by an
|
|
||||||
# exchange name specified in the transport_url option. (string value)
|
|
||||||
#control_exchange = openstack
|
|
||||||
|
|
||||||
[heat_api]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8004
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cfn]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api_cfn.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8000
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs). (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[heat_api_cloudwatch]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.common.wsgi
|
|
||||||
#
|
|
||||||
|
|
||||||
# Address to bind the server. Useful when selecting a
|
|
||||||
# particular network interface. (string value)
|
|
||||||
bind_host={{ server.bind.api_cloudwatch.address }}
|
|
||||||
|
|
||||||
# The port on which the server will listen. (integer value)
|
|
||||||
#bind_port=8003
|
|
||||||
|
|
||||||
# Number of backlog requests to configure the socket with.
|
|
||||||
# (integer value)
|
|
||||||
#backlog=4096
|
|
||||||
|
|
||||||
# Location of the SSL certificate file to use for SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#cert_file=<None>
|
|
||||||
|
|
||||||
# Location of the SSL key file to use for enabling SSL mode.
|
|
||||||
# (string value)
|
|
||||||
#key_file=<None>
|
|
||||||
|
|
||||||
# Number of workers for Heat service. (integer value)
|
|
||||||
#workers=0
|
|
||||||
|
|
||||||
# Maximum line size of message headers to be accepted.
|
|
||||||
# max_header_line may need to be increased when using large
|
|
||||||
# tokens (typically those generated by the Keystone v3 API
|
|
||||||
# with big service catalogs.) (integer value)
|
|
||||||
#max_header_line=16384
|
|
||||||
|
|
||||||
|
|
||||||
[database]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.db
|
|
||||||
#
|
|
||||||
|
|
||||||
# The file name to use with SQLite. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_db
|
|
||||||
#sqlite_db = oslo.sqlite
|
|
||||||
|
|
||||||
# If True, SQLite uses synchronous mode. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sqlite_synchronous
|
|
||||||
#sqlite_synchronous = true
|
|
||||||
|
|
||||||
# The back end to use for the database. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/db_backend
|
|
||||||
#backend = sqlalchemy
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the database. (string
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_connection
|
|
||||||
# Deprecated group/name - [sql]/connection
|
|
||||||
#connection = <None>
|
|
||||||
connection = {{ server.database.engine }}://{{ server.database.user }}:{{ server.database.password }}@{{ server.database.host }}/{{ server.database.name }}
|
|
||||||
|
|
||||||
# The SQLAlchemy connection string to use to connect to the slave database.
|
|
||||||
# (string value)
|
|
||||||
#slave_connection = <None>
|
|
||||||
|
|
||||||
# The SQL mode to be used for MySQL sessions. This option, including the
|
|
||||||
# default, overrides any server-set SQL mode. To use whatever SQL mode is set
|
|
||||||
# by the server configuration, set this to no value. Example: mysql_sql_mode=
|
|
||||||
# (string value)
|
|
||||||
#mysql_sql_mode = TRADITIONAL
|
|
||||||
|
|
||||||
# Timeout before idle SQL connections are reaped. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_idle_timeout
|
|
||||||
# Deprecated group/name - [sql]/idle_timeout
|
|
||||||
#idle_timeout = 3600
|
|
||||||
|
|
||||||
# Minimum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_min_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_min_pool_size
|
|
||||||
#min_pool_size = 1
|
|
||||||
|
|
||||||
# Maximum number of SQL connections to keep open in a pool. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_pool_size
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_pool_size
|
|
||||||
#max_pool_size = <None>
|
|
||||||
|
|
||||||
# Maximum number of database connection retries during startup. Set to -1 to
|
|
||||||
# specify an infinite retry count. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_retries
|
|
||||||
# Deprecated group/name - [DATABASE]/sql_max_retries
|
|
||||||
#max_retries = 10
|
|
||||||
|
|
||||||
# Interval between retries of opening a SQL connection. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_retry_interval
|
|
||||||
# Deprecated group/name - [DATABASE]/reconnect_interval
|
|
||||||
#retry_interval = 10
|
|
||||||
|
|
||||||
# If set, use this value for max_overflow with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_max_overflow
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow
|
|
||||||
#max_overflow = <None>
|
|
||||||
|
|
||||||
# Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_debug
|
|
||||||
#connection_debug = 0
|
|
||||||
|
|
||||||
# Add Python stack traces to SQL as comment strings. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/sql_connection_trace
|
|
||||||
#connection_trace = false
|
|
||||||
|
|
||||||
# If set, use this value for pool_timeout with SQLAlchemy. (integer value)
|
|
||||||
# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout
|
|
||||||
#pool_timeout = <None>
|
|
||||||
|
|
||||||
# Enable the experimental use of database reconnect on connection lost.
|
|
||||||
# (boolean value)
|
|
||||||
#use_db_reconnect = false
|
|
||||||
|
|
||||||
# Seconds between retries of a database transaction. (integer value)
|
|
||||||
#db_retry_interval = 1
|
|
||||||
|
|
||||||
# If True, increases the interval between retries of a database operation up to
|
|
||||||
# db_max_retry_interval. (boolean value)
|
|
||||||
#db_inc_retry_interval = true
|
|
||||||
|
|
||||||
# If db_inc_retry_interval is set, the maximum seconds between retries of a
|
|
||||||
# database operation. (integer value)
|
|
||||||
#db_max_retry_interval = 10
|
|
||||||
|
|
||||||
# Maximum retries in case of connection error or deadlock error before error is
|
|
||||||
# raised. Set to -1 to specify an infinite retry count. (integer value)
|
|
||||||
#db_max_retries = 20
|
|
||||||
|
|
||||||
|
|
||||||
[keystone_authtoken]
|
|
||||||
|
|
||||||
auth_type = password
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v3
|
|
||||||
auth_url=http://{{ server.identity.host }}:35357/v3
|
|
||||||
username = {{ server.identity.user }}
|
|
||||||
password = {{ server.identity.password }}
|
|
||||||
project_name = {{ server.identity.tenant }}
|
|
||||||
project_domain_name = default
|
|
||||||
user_domain_name = default
|
|
||||||
{%- if server.cache is defined %}
|
|
||||||
memcached_servers={%- for member in server.cache.members %}{{ member.host }}:11211{% if not loop.last %},{% endif %}{%- endfor %}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
[trustee]
|
|
||||||
auth_plugin = password
|
|
||||||
auth_url = http://{{ server.identity.host }}:35357
|
|
||||||
username = {{ server.identity.user }}
|
|
||||||
password = {{ server.identity.password }}
|
|
||||||
user_domain_name = default
|
|
||||||
|
|
||||||
[matchmaker_redis]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Host to locate redis. (string value)
|
|
||||||
#host = 127.0.0.1
|
|
||||||
|
|
||||||
# Use this port to connect to redis host. (integer value)
|
|
||||||
#port = 6379
|
|
||||||
|
|
||||||
# Password for Redis server (optional). (string value)
|
|
||||||
#password = <None>
|
|
||||||
|
|
||||||
|
|
||||||
[matchmaker_ring]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Matchmaker ring file (JSON). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/matchmaker_ringfile
|
|
||||||
#ringfile = /etc/oslo/matchmaker_ring.json
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_amqp]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# address prefix used when sending to a specific server (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/server_request_prefix
|
|
||||||
#server_request_prefix = exclusive
|
|
||||||
|
|
||||||
# address prefix used when broadcasting to all servers (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/broadcast_prefix
|
|
||||||
#broadcast_prefix = broadcast
|
|
||||||
|
|
||||||
# address prefix when sending to any server in group (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/group_request_prefix
|
|
||||||
#group_request_prefix = unicast
|
|
||||||
|
|
||||||
# Name for the AMQP container (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/container_name
|
|
||||||
#container_name = <None>
|
|
||||||
|
|
||||||
# Timeout for inactive connections (in seconds) (integer value)
|
|
||||||
# Deprecated group/name - [amqp1]/idle_timeout
|
|
||||||
#idle_timeout = 0
|
|
||||||
|
|
||||||
# Debug: dump AMQP frames to stdout (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/trace
|
|
||||||
#trace = false
|
|
||||||
|
|
||||||
# CA certificate PEM file for verifing server certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_ca_file
|
|
||||||
#ssl_ca_file =
|
|
||||||
|
|
||||||
# Identifying certificate PEM file to present to clients (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_cert_file
|
|
||||||
#ssl_cert_file =
|
|
||||||
|
|
||||||
# Private key PEM file used to sign cert_file certificate (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_file
|
|
||||||
#ssl_key_file =
|
|
||||||
|
|
||||||
# Password for decrypting ssl_key_file (if encrypted) (string value)
|
|
||||||
# Deprecated group/name - [amqp1]/ssl_key_password
|
|
||||||
#ssl_key_password = <None>
|
|
||||||
|
|
||||||
# Accept clients using either SSL or plain TCP (boolean value)
|
|
||||||
# Deprecated group/name - [amqp1]/allow_insecure_clients
|
|
||||||
#allow_insecure_clients = false
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_qpid]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# Qpid broker hostname. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hostname
|
|
||||||
#qpid_hostname = localhost
|
|
||||||
|
|
||||||
# Qpid broker port. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_port
|
|
||||||
#qpid_port = 5672
|
|
||||||
|
|
||||||
# Qpid HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_hosts
|
|
||||||
#qpid_hosts = $qpid_hostname:$qpid_port
|
|
||||||
|
|
||||||
# Username for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_username
|
|
||||||
#qpid_username =
|
|
||||||
|
|
||||||
# Password for Qpid connection. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_password
|
|
||||||
#qpid_password =
|
|
||||||
|
|
||||||
# Space separated list of SASL mechanisms to use for auth. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_sasl_mechanisms
|
|
||||||
#qpid_sasl_mechanisms =
|
|
||||||
|
|
||||||
# Seconds between connection keepalive heartbeats. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_heartbeat
|
|
||||||
#qpid_heartbeat = 60
|
|
||||||
|
|
||||||
# Transport to use, either 'tcp' or 'ssl'. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_protocol
|
|
||||||
#qpid_protocol = tcp
|
|
||||||
|
|
||||||
# Whether to disable the Nagle algorithm. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_tcp_nodelay
|
|
||||||
#qpid_tcp_nodelay = true
|
|
||||||
|
|
||||||
# The number of prefetched messages held by receiver. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_receiver_capacity
|
|
||||||
#qpid_receiver_capacity = 1
|
|
||||||
|
|
||||||
# The qpid topology version to use. Version 1 is what was originally used by
|
|
||||||
# impl_qpid. Version 2 includes some backwards-incompatible changes that allow
|
|
||||||
# broker federation to work. Users should update to version 2 when they are
|
|
||||||
# able to take everything down, as it requires a clean break. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/qpid_topology_version
|
|
||||||
#qpid_topology_version = 1
|
|
||||||
|
|
||||||
|
|
||||||
[oslo_messaging_rabbit]
|
|
||||||
|
|
||||||
#
|
|
||||||
# From oslo.messaging
|
|
||||||
#
|
|
||||||
|
|
||||||
# Use durable queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_durable_queues
|
|
||||||
#amqp_durable_queues = false
|
|
||||||
|
|
||||||
# Auto-delete queues in AMQP. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/amqp_auto_delete
|
|
||||||
#amqp_auto_delete = false
|
|
||||||
|
|
||||||
# SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
|
|
||||||
# SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
|
|
||||||
# distributions. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_version
|
|
||||||
#kombu_ssl_version =
|
|
||||||
|
|
||||||
# SSL key file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_keyfile
|
|
||||||
#kombu_ssl_keyfile =
|
|
||||||
|
|
||||||
# SSL cert file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_certfile
|
|
||||||
#kombu_ssl_certfile =
|
|
||||||
|
|
||||||
# SSL certification authority file (valid only if SSL enabled). (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_ssl_ca_certs
|
|
||||||
#kombu_ssl_ca_certs =
|
|
||||||
|
|
||||||
# How long to wait before reconnecting in response to an AMQP consumer cancel
|
|
||||||
# notification. (floating point value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/kombu_reconnect_delay
|
|
||||||
#kombu_reconnect_delay = 1.0
|
|
||||||
{%- if server.message_queue.members is defined %}
|
|
||||||
rabbit_hosts = {% for member in server.message_queue.members -%}
|
|
||||||
{{ member.host }}:{{ member.get('port', 5672) }}
|
|
||||||
{%- if not loop.last -%},{%- endif -%}
|
|
||||||
{%- endfor -%}
|
|
||||||
{%- else %}
|
|
||||||
rabbit_host = {{ server.message_queue.host }}
|
|
||||||
rabbit_port = {{ server.message_queue.port }}
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
#rabbit_use_ssl=false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
rabbit_userid = {{ server.message_queue.user }}
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
rabbit_password = {{ server.message_queue.password }}
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
#rabbit_login_method=AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
rabbit_virtual_host = {{ server.message_queue.virtual_host }}
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
#rabbit_retry_interval=1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to
|
|
||||||
# RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_backoff=2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0
|
|
||||||
# (infinite retry count). (integer value)
|
|
||||||
#rabbit_max_retries=0
|
|
||||||
|
|
||||||
#rabbit_host = localhost
|
|
||||||
|
|
||||||
# The RabbitMQ broker port where a single node is used. (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_port
|
|
||||||
#rabbit_port = 5672
|
|
||||||
|
|
||||||
# RabbitMQ HA cluster host:port pairs. (list value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_hosts
|
|
||||||
#rabbit_hosts = $rabbit_host:$rabbit_port
|
|
||||||
|
|
||||||
# Connect over SSL for RabbitMQ. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_use_ssl
|
|
||||||
#rabbit_use_ssl = false
|
|
||||||
|
|
||||||
# The RabbitMQ userid. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_userid
|
|
||||||
#rabbit_userid = guest
|
|
||||||
|
|
||||||
# The RabbitMQ password. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_password
|
|
||||||
#rabbit_password = guest
|
|
||||||
|
|
||||||
# The RabbitMQ login method. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_login_method
|
|
||||||
#rabbit_login_method = AMQPLAIN
|
|
||||||
|
|
||||||
# The RabbitMQ virtual host. (string value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_virtual_host
|
|
||||||
#rabbit_virtual_host = /
|
|
||||||
|
|
||||||
# How frequently to retry connecting with RabbitMQ. (integer value)
|
|
||||||
#rabbit_retry_interval = 1
|
|
||||||
|
|
||||||
# How long to backoff for between retries when connecting to RabbitMQ. (integer
|
|
||||||
# value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_retry_backoff
|
|
||||||
#rabbit_retry_backoff = 2
|
|
||||||
|
|
||||||
# Maximum number of RabbitMQ connection retries. Default is 0 (infinite retry
|
|
||||||
# count). (integer value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_max_retries
|
|
||||||
#rabbit_max_retries = 0
|
|
||||||
|
|
||||||
# Use HA queues in RabbitMQ (x-ha-policy: all). If you change this option, you
|
|
||||||
# must wipe the RabbitMQ database. (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/rabbit_ha_queues
|
|
||||||
#rabbit_ha_queues = false
|
|
||||||
|
|
||||||
# Number of seconds after which the Rabbit broker is considered down if
|
|
||||||
# heartbeat's keep-alive fails (0 disable the heartbeat). (integer value)
|
|
||||||
#heartbeat_timeout_threshold = 60
|
|
||||||
|
|
||||||
# How often times during the heartbeat_timeout_threshold we check the
|
|
||||||
# heartbeat. (integer value)
|
|
||||||
#heartbeat_rate = 2
|
|
||||||
|
|
||||||
# Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value)
|
|
||||||
# Deprecated group/name - [DEFAULT]/fake_rabbit
|
|
||||||
#fake_rabbit = false
|
|
||||||
|
|
||||||
[ec2authtoken]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options defined in heat.api.aws.ec2token
|
|
||||||
#
|
|
||||||
|
|
||||||
# Authentication Endpoint URI. (string value)
|
|
||||||
auth_uri=http://{{ server.identity.host }}:5000/v2.0
|
|
||||||
|
|
||||||
# Allow orchestration of multiple clouds. (boolean value)
|
|
||||||
#multi_cloud=false
|
|
||||||
|
|
||||||
# Allowed keystone endpoints for auth_uri when multi_cloud is
|
|
||||||
# enabled. At least one endpoint needs to be specified. (list
|
|
||||||
# value)
|
|
||||||
#allowed_auth_uris=
|
|
||||||
|
|
||||||
keystone_ec2_uri=http://{{ server.identity.host }}:5000/v2.0/ec2tokens
|
|
||||||
|
|
||||||
{%- if pillar.get('opencontrail', {}).get('client', {}).get('enabled', False) %}
|
|
||||||
|
|
||||||
{%- from "opencontrail/map.jinja" import client with context %}
|
|
||||||
|
|
||||||
[clients_contrail]
|
|
||||||
|
|
||||||
user={{ client.identity.user }}
|
|
||||||
password={{ client.identity.password }}
|
|
||||||
tenant={{ client.identity.tenant }}
|
|
||||||
auth_host_ip={{ client.identity.host }}
|
|
||||||
api_server={{ client.api.host }}
|
|
||||||
api_port={{ client.api.port }}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
|
@ -1,18 +0,0 @@
|
||||||
local_heat_api_cfn_proc:
|
|
||||||
command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C heat-api-cfn -u heat -c 1:10"
|
|
||||||
interval: 60
|
|
||||||
occurrences: 1
|
|
||||||
subscribers:
|
|
||||||
- local-heat-server
|
|
||||||
local_heat_engine:
|
|
||||||
command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C heat-engine -u heat -c 1:20"
|
|
||||||
interval: 60
|
|
||||||
occurrences: 1
|
|
||||||
subscribers:
|
|
||||||
- local-heat-server
|
|
||||||
local_heat_api:
|
|
||||||
command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C heat-api -u heat -c 1:10"
|
|
||||||
interval: 60
|
|
||||||
occurrences: 1
|
|
||||||
subscribers:
|
|
||||||
- local-heat-server
|
|
|
@ -1,9 +0,0 @@
|
||||||
{%- if pillar.heat is defined %}
|
|
||||||
include:
|
|
||||||
{%- if pillar.heat.server is defined %}
|
|
||||||
- heat.server
|
|
||||||
{%- endif %}
|
|
||||||
{%- if pillar.heat.client is defined %}
|
|
||||||
- heat.client
|
|
||||||
{%- endif %}
|
|
||||||
{%- endif %}
|
|
|
@ -1,22 +0,0 @@
|
||||||
|
|
||||||
{% set server = salt['grains.filter_by']({
|
|
||||||
'Debian': {
|
|
||||||
'pkgs': ['heat-api', 'heat-api-cfn', 'heat-api-cloudwatch', 'heat-engine', 'heat-common','python-heatclient', 'gettext-base'],
|
|
||||||
'services': ['heat-api', 'heat-api-cfn', 'heat-api-cloudwatch', 'heat-engine'],
|
|
||||||
'notification': False
|
|
||||||
},
|
|
||||||
'RedHat': {
|
|
||||||
'pkgs': ['openstack-heat-api', 'openstack-heat-api-cfn', 'openstack-heat-api-cloudwatch', 'openstack-heat-engine', 'openstack-heat-common'],
|
|
||||||
'services': ['openstack-heat-api', 'openstack-heat-api-cfn', 'openstack-heat-api-cloudwatch', 'openstack-heat-engine'],
|
|
||||||
'notification': False
|
|
||||||
},
|
|
||||||
}, merge=pillar.heat.get('server', {})) %}
|
|
||||||
|
|
||||||
{% set client = salt['grains.filter_by']({
|
|
||||||
'Debian': {
|
|
||||||
'pkgs': ['python-heatclient'],
|
|
||||||
},
|
|
||||||
'RedHat': {
|
|
||||||
'pkgs': ['python-heatclient'],
|
|
||||||
},
|
|
||||||
}, merge=pillar.heat.get('client', {})) %}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{%- if pillar.heat.server is defined %}
|
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
{%- if server.get('enabled', False) %}
|
|
||||||
local_plugin:
|
|
||||||
collectd_check_local_endpoint:
|
|
||||||
endpoint:
|
|
||||||
heat-api:
|
|
||||||
expected_code: 300
|
|
||||||
url: "http://{{ server.bind.api.address|replace('0.0.0.0', '127.0.0.1') }}:8004/"
|
|
||||||
heat-cfn-api:
|
|
||||||
expected_code: 300
|
|
||||||
url: "http://{{ server.bind.api_cfn.address|replace('0.0.0.0', '127.0.0.1') }}:8000/"
|
|
||||||
{%- endif %}
|
|
||||||
{%- endif %}
|
|
|
@ -1,10 +0,0 @@
|
||||||
config:
|
|
||||||
{%- if pillar.heat.server is defined %}
|
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
heat.conf:
|
|
||||||
source: "salt://heat/files/{{ server.version }}/heat.conf.{{ grains.os_family|default('Debian') }}"
|
|
||||||
template: jinja
|
|
||||||
api-paste.ini:
|
|
||||||
source: "salt://heat/files/{{ server.version }}/api-paste.ini"
|
|
||||||
template: jinja
|
|
||||||
{%- endif %}
|
|
|
@ -1,4 +0,0 @@
|
||||||
dashboard:
|
|
||||||
heat:
|
|
||||||
format: json
|
|
||||||
template: heat/files/grafana_dashboards/heat_influxdb.json
|
|
|
@ -1,189 +0,0 @@
|
||||||
{%- if pillar.heat is defined and pillar.heat.server is defined %}
|
|
||||||
log_collector:
|
|
||||||
decoder:
|
|
||||||
heat:
|
|
||||||
engine: sandbox
|
|
||||||
module_file: /usr/share/lma_collector/decoders/openstack_log.lua
|
|
||||||
module_dir: /usr/share/lma_collector/common;/usr/share/heka/lua_modules
|
|
||||||
adjust_timezone: true
|
|
||||||
splitter:
|
|
||||||
heat:
|
|
||||||
engine: token
|
|
||||||
delimiter: '\n'
|
|
||||||
input:
|
|
||||||
heat_log:
|
|
||||||
engine: logstreamer
|
|
||||||
log_directory: "/var/log"
|
|
||||||
file_match: 'heat/(?P<Service>.+)\.log\.?(?P<Seq>\d*)$'
|
|
||||||
differentiator: ['heat', '_', 'Service']
|
|
||||||
priority: ["^Seq"]
|
|
||||||
decoder: "heat_decoder"
|
|
||||||
splitter: "heat_splitter"
|
|
||||||
metric_collector:
|
|
||||||
trigger:
|
|
||||||
heat_logs_error:
|
|
||||||
description: 'Too many errors have been detected in Heat logs'
|
|
||||||
severity: warning
|
|
||||||
no_data_policy: okay
|
|
||||||
rules:
|
|
||||||
- metric: log_messages
|
|
||||||
field:
|
|
||||||
service: heat
|
|
||||||
level: error
|
|
||||||
relational_operator: '>'
|
|
||||||
threshold: 0.1
|
|
||||||
window: 70
|
|
||||||
periods: 0
|
|
||||||
function: max
|
|
||||||
heat_api_local_endpoint:
|
|
||||||
description: 'Heat API is locally down'
|
|
||||||
severity: down
|
|
||||||
rules:
|
|
||||||
- metric: openstack_check_local_api
|
|
||||||
field:
|
|
||||||
service: heat-api
|
|
||||||
relational_operator: '=='
|
|
||||||
threshold: 0
|
|
||||||
window: 60
|
|
||||||
periods: 0
|
|
||||||
function: last
|
|
||||||
heat_cfn_api_local_endpoint:
|
|
||||||
description: 'Heat CFN API is locally down'
|
|
||||||
severity: down
|
|
||||||
rules:
|
|
||||||
- metric: openstack_check_local_api
|
|
||||||
field:
|
|
||||||
service: heat-cfn-api
|
|
||||||
relational_operator: '=='
|
|
||||||
threshold: 0
|
|
||||||
window: 60
|
|
||||||
periods: 0
|
|
||||||
function: last
|
|
||||||
alarm:
|
|
||||||
heat_logs:
|
|
||||||
alerting: enabled
|
|
||||||
triggers:
|
|
||||||
- heat_logs_error
|
|
||||||
dimension:
|
|
||||||
service: heat-logs
|
|
||||||
heat_api_endpoint:
|
|
||||||
alerting: enabled
|
|
||||||
triggers:
|
|
||||||
- heat_api_local_endpoint
|
|
||||||
dimension:
|
|
||||||
service: heat-api-endpoint
|
|
||||||
heat_cfn_api_endpoint:
|
|
||||||
alerting: enabled
|
|
||||||
triggers:
|
|
||||||
- heat_cfn_api_local_endpoint
|
|
||||||
dimension:
|
|
||||||
service: heat-cfn-api-endpoint
|
|
||||||
remote_collector:
|
|
||||||
trigger:
|
|
||||||
heat_api_check_failed:
|
|
||||||
description: 'Endpoint check for heat-api is failed'
|
|
||||||
severity: down
|
|
||||||
rules:
|
|
||||||
- metric: openstack_check_api
|
|
||||||
field:
|
|
||||||
service: heat-api
|
|
||||||
relational_operator: '=='
|
|
||||||
threshold: 0
|
|
||||||
window: 60
|
|
||||||
periods: 0
|
|
||||||
function: last
|
|
||||||
heat_cfn_api_check_failed:
|
|
||||||
description: 'Endpoint check for heat-cfn-api is failed'
|
|
||||||
severity: down
|
|
||||||
rules:
|
|
||||||
- metric: openstack_check_api
|
|
||||||
field:
|
|
||||||
service: heat-cfn-api
|
|
||||||
relational_operator: '=='
|
|
||||||
threshold: 0
|
|
||||||
window: 60
|
|
||||||
periods: 0
|
|
||||||
function: last
|
|
||||||
alarm:
|
|
||||||
heat_api_check:
|
|
||||||
alerting: enabled
|
|
||||||
triggers:
|
|
||||||
- heat_api_check_failed
|
|
||||||
dimension:
|
|
||||||
service: heat-api-check
|
|
||||||
heat_cfn_api_check:
|
|
||||||
alerting: enabled
|
|
||||||
triggers:
|
|
||||||
- heat_cfn_api_check_failed
|
|
||||||
dimension:
|
|
||||||
service: heat-cfn-api-check
|
|
||||||
aggregator:
|
|
||||||
alarm_cluster:
|
|
||||||
heat_logs:
|
|
||||||
policy: status_of_members
|
|
||||||
alerting: enabled
|
|
||||||
group_by: hostname
|
|
||||||
match:
|
|
||||||
service: heat-logs
|
|
||||||
members:
|
|
||||||
- heat_logs
|
|
||||||
dimension:
|
|
||||||
service: heat
|
|
||||||
nagios_host: 01-service-clusters
|
|
||||||
heat_api_endpoint:
|
|
||||||
policy: availability_of_members
|
|
||||||
alerting: enabled
|
|
||||||
group_by: hostname
|
|
||||||
match:
|
|
||||||
service: heat-api-endpoint
|
|
||||||
members:
|
|
||||||
- heat_api_endpoint
|
|
||||||
dimension:
|
|
||||||
service: heat
|
|
||||||
nagios_host: 01-service-clusters
|
|
||||||
heat_cfn_api_endpoint:
|
|
||||||
policy: availability_of_members
|
|
||||||
alerting: enabled
|
|
||||||
group_by: hostname
|
|
||||||
match:
|
|
||||||
service: heat-cfn-api-endpoint
|
|
||||||
members:
|
|
||||||
- heat_cfn_api_endpoint
|
|
||||||
dimension:
|
|
||||||
service: heat
|
|
||||||
nagios_host: 01-service-clusters
|
|
||||||
heat_api_check:
|
|
||||||
policy: highest_severity
|
|
||||||
alerting: enabled
|
|
||||||
match:
|
|
||||||
service: heat-api-check
|
|
||||||
members:
|
|
||||||
- heat_api_check
|
|
||||||
dimension:
|
|
||||||
service: heat
|
|
||||||
nagios_host: 01-service-clusters
|
|
||||||
heat_cfn_api_check:
|
|
||||||
policy: highest_severity
|
|
||||||
alerting: enabled
|
|
||||||
match:
|
|
||||||
service: heat-cfn-api-check
|
|
||||||
members:
|
|
||||||
- heat_cfn_api_check
|
|
||||||
dimension:
|
|
||||||
service: heat
|
|
||||||
nagios_host: 01-service-clusters
|
|
||||||
heat:
|
|
||||||
policy: highest_severity
|
|
||||||
alerting: enabled_with_notification
|
|
||||||
match:
|
|
||||||
service: heat
|
|
||||||
members:
|
|
||||||
- heat_logs
|
|
||||||
- heat_api_endpoint
|
|
||||||
- heat_cfn_api_endpoint
|
|
||||||
- heat_api_check
|
|
||||||
- heat_cfn_api_check
|
|
||||||
dimension:
|
|
||||||
cluster_name: heat
|
|
||||||
nagios_host: 00-top-clusters
|
|
||||||
{%- endif %}
|
|
|
@ -1,14 +0,0 @@
|
||||||
orchestrate:
|
|
||||||
server:
|
|
||||||
priority: 700
|
|
||||||
batch: 1
|
|
||||||
require:
|
|
||||||
- salt: keystone.server
|
|
||||||
control:
|
|
||||||
priority: 710
|
|
||||||
batch: 1
|
|
||||||
require:
|
|
||||||
- salt: heat.server
|
|
||||||
client:
|
|
||||||
priority: 720
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
check:
|
|
||||||
local_heat_api_cfn_proc:
|
|
||||||
command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C heat-api-cfn -u heat -c 1:10"
|
|
||||||
interval: 60
|
|
||||||
occurrences: 1
|
|
||||||
subscribers:
|
|
||||||
- local-heat-server
|
|
||||||
local_heat_engine_proc:
|
|
||||||
command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C heat-engine -u heat -c 1:1024"
|
|
||||||
interval: 60
|
|
||||||
occurrences: 1
|
|
||||||
subscribers:
|
|
||||||
- local-heat-server
|
|
||||||
local_heat_api_proc:
|
|
||||||
command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C heat-api -u heat -c 1:10"
|
|
||||||
interval: 60
|
|
||||||
occurrences: 1
|
|
||||||
subscribers:
|
|
||||||
- local-heat-server
|
|
||||||
remote_heat_stack_create:
|
|
||||||
command: "PATH=$PATH:/usr/local/bin check_heat-stack.py --auth_url http://:::openstack.host::::35357/v2.0/ --username :::openstack.user::: --password :::openstack.password::: --tenant :::openstack.tenant::: --template check_heat-stack.hot"
|
|
||||||
interval: 300
|
|
||||||
occurrences: 1
|
|
||||||
subscribers:
|
|
||||||
- remote-network
|
|
|
@ -1,51 +0,0 @@
|
||||||
doc:
|
|
||||||
name: Heat
|
|
||||||
description: Heat implements an orchestration engine to launch multiple composite cloud applications based on templates in the form of text files that can be treated like code.
|
|
||||||
role:
|
|
||||||
{%- if pillar.heat.server is defined %}
|
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
server:
|
|
||||||
name: server
|
|
||||||
endpoint:
|
|
||||||
heat_api:
|
|
||||||
name: heat-api
|
|
||||||
type: heat-api
|
|
||||||
address: http://{{ server.bind.api.address }}:8004
|
|
||||||
protocol: http
|
|
||||||
heat_api_cfn:
|
|
||||||
name: heat-api-cfn
|
|
||||||
type: heat-api-cfn
|
|
||||||
address: http://{{ server.bind.api_cfn.address }}:8003
|
|
||||||
protocol: http
|
|
||||||
heat_api_cloudwatch:
|
|
||||||
name: heat-api-cloudwatch
|
|
||||||
type: heat-api-cloudwatch
|
|
||||||
address: http://{{ server.bind.api_cloudwatch.address }}:8000
|
|
||||||
protocol: http
|
|
||||||
param:
|
|
||||||
bind:
|
|
||||||
value: {{ server.bind.api.address }}:8004
|
|
||||||
version:
|
|
||||||
name: "Version"
|
|
||||||
value: {{ server.version }}
|
|
||||||
database_host:
|
|
||||||
name: "Database"
|
|
||||||
value: {{ server.database.user }}@{{ server.database.host }}:{{ server.database.port }}//{{ server.database.name }}
|
|
||||||
message_queue_ip:
|
|
||||||
name: "Message queue"
|
|
||||||
value: {{ server.message_queue.user }}@{{ server.message_queue.host }}:{{ server.message_queue.port }}{{ server.message_queue.virtual_host }}
|
|
||||||
identity_host:
|
|
||||||
name: "Identity service"
|
|
||||||
value: {{ server.identity.user }}@{{ server.identity.host }}:{{ server.identity.port }}
|
|
||||||
packages:
|
|
||||||
value: |
|
|
||||||
{%- for pkg in server.pkgs %}
|
|
||||||
{%- set pkg_version = "dpkg -l "+pkg+" | grep "+pkg+" | awk '{print $3}'" %}
|
|
||||||
* {{ pkg }}: {{ salt['cmd.run'](pkg_version) }}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- endif %}
|
|
||||||
{%- if pillar.heat.client is defined %}
|
|
||||||
client:
|
|
||||||
name: client
|
|
||||||
param: {}
|
|
||||||
{%- endif %}
|
|
104
heat/server.sls
104
heat/server.sls
|
@ -1,104 +0,0 @@
|
||||||
{%- from "heat/map.jinja" import server with context %}
|
|
||||||
{%- if server.enabled %}
|
|
||||||
|
|
||||||
heat_server_packages:
|
|
||||||
pkg.installed:
|
|
||||||
- names: {{ server.pkgs }}
|
|
||||||
|
|
||||||
/etc/heat/heat.conf:
|
|
||||||
file.managed:
|
|
||||||
- source: salt://heat/files/{{ server.version }}/heat.conf.{{ grains.os_family }}
|
|
||||||
- template: jinja
|
|
||||||
- require:
|
|
||||||
- pkg: heat_server_packages
|
|
||||||
|
|
||||||
/etc/heat/api-paste.ini:
|
|
||||||
file.managed:
|
|
||||||
- source: salt://heat/files/{{ server.version }}/api-paste.ini
|
|
||||||
- template: jinja
|
|
||||||
- require:
|
|
||||||
- pkg: heat_server_packages
|
|
||||||
|
|
||||||
{%- if grains.get('virtual_subtype', None) == "Docker" %}
|
|
||||||
|
|
||||||
heat_entrypoint:
|
|
||||||
file.managed:
|
|
||||||
- name: /entrypoint.sh
|
|
||||||
- template: jinja
|
|
||||||
- source: salt://heat/files/entrypoint.sh
|
|
||||||
- mode: 755
|
|
||||||
|
|
||||||
keystonercv3:
|
|
||||||
file.managed:
|
|
||||||
- name: /root/keystonercv3
|
|
||||||
- template: jinja
|
|
||||||
- source: salt://heat/files/keystonercv3
|
|
||||||
- mode: 755
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- if not grains.get('virtual_subtype', None) == "Docker" %}
|
|
||||||
|
|
||||||
{%- if not salt['pillar.get']('linux:system:repo:mirantis_openstack', False) %}
|
|
||||||
|
|
||||||
heat_client_roles:
|
|
||||||
keystone.role_present:
|
|
||||||
- names:
|
|
||||||
- heat_stack_owner
|
|
||||||
- heat_stack_user
|
|
||||||
- connection_user: {{ server.identity.user }}
|
|
||||||
- connection_password: {{ server.identity.password }}
|
|
||||||
- connection_tenant: {{ server.identity.tenant }}
|
|
||||||
- connection_auth_url: 'http://{{ server.identity.host }}:{{ server.identity.port }}/v2.0/'
|
|
||||||
- require:
|
|
||||||
- pkg: heat_server_packages
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- if server.version != 'juno' %}
|
|
||||||
|
|
||||||
heat_keystone_setup:
|
|
||||||
cmd.run:
|
|
||||||
- name: 'source /root/keystonercv3; heat-keystone-setup-domain --stack-user-domain-name heat_user_domain --stack-domain-admin heat_domain_admin --stack-domain-admin-password {{ server.stack_domain_admin.password }}'
|
|
||||||
- shell: /bin/bash
|
|
||||||
- require:
|
|
||||||
- file: /etc/heat/heat.conf
|
|
||||||
- pkg: heat_server_packages
|
|
||||||
- require_in:
|
|
||||||
- cmd: heat_syncdb
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- if not grains.get('noservices', False) %}
|
|
||||||
|
|
||||||
heat_syncdb:
|
|
||||||
cmd.run:
|
|
||||||
- name: heat-manage db_sync
|
|
||||||
- require:
|
|
||||||
- file: /etc/heat/heat.conf
|
|
||||||
- pkg: heat_server_packages
|
|
||||||
|
|
||||||
heat_log_access:
|
|
||||||
cmd.run:
|
|
||||||
- name: chown heat:heat /var/log/heat/ -R
|
|
||||||
- require:
|
|
||||||
- file: /etc/heat/heat.conf
|
|
||||||
- pkg: heat_server_packages
|
|
||||||
- require_in:
|
|
||||||
- service: heat_server_services
|
|
||||||
|
|
||||||
heat_server_services:
|
|
||||||
service.running:
|
|
||||||
- names: {{ server.services }}
|
|
||||||
- enable: true
|
|
||||||
- require:
|
|
||||||
- cmd: heat_syncdb
|
|
||||||
- watch:
|
|
||||||
- file: /etc/heat/heat.conf
|
|
||||||
- file: /etc/heat/api-paste.ini
|
|
||||||
|
|
||||||
{%- endif %}
|
|
||||||
|
|
||||||
{%- endif %}
|
|
|
@ -1,3 +0,0 @@
|
||||||
name: "heat"
|
|
||||||
version: "2016.4.1"
|
|
||||||
source: "https://github.com/openstack/salt-formula-heat"
|
|
|
@ -1,8 +0,0 @@
|
||||||
parameters:
|
|
||||||
heat:
|
|
||||||
client:
|
|
||||||
enabled: true
|
|
||||||
source:
|
|
||||||
engine: git
|
|
||||||
address: ${_param:heat_data_repository}
|
|
||||||
revision: ${_param:heat_data_revision}
|
|
|
@ -1,51 +0,0 @@
|
||||||
applications:
|
|
||||||
- heat
|
|
||||||
classes:
|
|
||||||
- service.heat.support
|
|
||||||
parameters:
|
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
stack_domain_admin:
|
|
||||||
name: heat_domain_admin
|
|
||||||
password: ${_param:heat_domain_admin_password}
|
|
||||||
domain: heat
|
|
||||||
enabled: true
|
|
||||||
region: RegionOne
|
|
||||||
version: ${_param:heat_version}
|
|
||||||
bind:
|
|
||||||
api_cfn:
|
|
||||||
address: ${_param:cluster_local_address}
|
|
||||||
api_cloudwatch:
|
|
||||||
address: ${_param:cluster_local_address}
|
|
||||||
api:
|
|
||||||
address: ${_param:cluster_local_address}
|
|
||||||
database:
|
|
||||||
engine: mysql
|
|
||||||
host: ${_param:cluster_vip_address}
|
|
||||||
port: 3306
|
|
||||||
name: heat
|
|
||||||
user: heat
|
|
||||||
password: ${_param:mysql_heat_password}
|
|
||||||
metadata:
|
|
||||||
host: ${_param:cluster_vip_address}
|
|
||||||
port: 8000
|
|
||||||
waitcondition:
|
|
||||||
host: ${_param:cluster_vip_address}
|
|
||||||
port: 8000
|
|
||||||
watch:
|
|
||||||
host: ${_param:cluster_vip_address}
|
|
||||||
port: 8003
|
|
||||||
identity:
|
|
||||||
engine: keystone
|
|
||||||
host: ${_param:cluster_vip_address}
|
|
||||||
port: 35357
|
|
||||||
tenant: service
|
|
||||||
user: heat
|
|
||||||
password: ${_param:keystone_heat_password}
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
host: ${_param:cluster_vip_address}
|
|
||||||
port: 5672
|
|
||||||
user: openstack
|
|
||||||
password: ${_param:rabbitmq_openstack_password}
|
|
||||||
virtual_host: '/openstack'
|
|
|
@ -1,54 +0,0 @@
|
||||||
parameters:
|
|
||||||
kubernetes:
|
|
||||||
control:
|
|
||||||
configmap:
|
|
||||||
heat-server:
|
|
||||||
grains:
|
|
||||||
os_family: Debian
|
|
||||||
pillar:
|
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
stack_domain_admin:
|
|
||||||
name: heat_domain_admin
|
|
||||||
password: ${_param:heat_domain_admin_password}
|
|
||||||
domain: heat
|
|
||||||
enabled: true
|
|
||||||
region: RegionOne
|
|
||||||
version: ${_param:heat_version}
|
|
||||||
bind:
|
|
||||||
api_cfn:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api_cloudwatch:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api:
|
|
||||||
address: 0.0.0.0
|
|
||||||
database:
|
|
||||||
engine: mysql
|
|
||||||
host: ${_param:mysql_service_host}
|
|
||||||
port: 3306
|
|
||||||
name: heat
|
|
||||||
user: heat
|
|
||||||
password: ${_param:mysql_heat_password}
|
|
||||||
metadata:
|
|
||||||
host: 0.0.0.0
|
|
||||||
port: 8000
|
|
||||||
waitcondition:
|
|
||||||
host: 0.0.0.0
|
|
||||||
port: 8000
|
|
||||||
watch:
|
|
||||||
host: 0.0.0.0
|
|
||||||
port: 8003
|
|
||||||
identity:
|
|
||||||
engine: keystone
|
|
||||||
host: ${_param:keystone_service_host}
|
|
||||||
port: 35357
|
|
||||||
tenant: service
|
|
||||||
user: heat
|
|
||||||
password: ${_param:keystone_heat_password}
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
host: ${_param:rabbitmq_service_host}
|
|
||||||
port: 5672
|
|
||||||
user: openstack
|
|
||||||
password: ${_param:rabbitmq_openstack_password}
|
|
||||||
virtual_host: '/openstack'
|
|
|
@ -1,51 +0,0 @@
|
||||||
applications:
|
|
||||||
- heat
|
|
||||||
classes:
|
|
||||||
- service.heat.support
|
|
||||||
parameters:
|
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
stack_domain_admin:
|
|
||||||
name: heat_domain_admin
|
|
||||||
password: ${_param:heat_domain_admin_password}
|
|
||||||
domain: heat
|
|
||||||
enabled: true
|
|
||||||
region: RegionOne
|
|
||||||
version: ${_param:heat_version}
|
|
||||||
bind:
|
|
||||||
api_cfn:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api_cloudwatch:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api:
|
|
||||||
address: ${_param:single_address}
|
|
||||||
database:
|
|
||||||
engine: mysql
|
|
||||||
host: ${_param:single_address}
|
|
||||||
port: 3306
|
|
||||||
name: heat
|
|
||||||
user: heat
|
|
||||||
password: ${_param:mysql_heat_password}
|
|
||||||
metadata:
|
|
||||||
host: ${_param:single_address}
|
|
||||||
port: 8000
|
|
||||||
waitcondition:
|
|
||||||
host: ${_param:single_address}
|
|
||||||
port: 8000
|
|
||||||
watch:
|
|
||||||
host: ${_param:single_address}
|
|
||||||
port: 8003
|
|
||||||
identity:
|
|
||||||
engine: keystone
|
|
||||||
host: ${_param:single_address}
|
|
||||||
port: 35357
|
|
||||||
tenant: service
|
|
||||||
user: heat
|
|
||||||
password: ${_param:keystone_heat_password}
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
host: ${_param:single_address}
|
|
||||||
port: 5672
|
|
||||||
user: openstack
|
|
||||||
password: ${_param:rabbitmq_openstack_password}
|
|
||||||
virtual_host: '/openstack'
|
|
|
@ -1,15 +0,0 @@
|
||||||
parameters:
|
|
||||||
heat:
|
|
||||||
_support:
|
|
||||||
collectd:
|
|
||||||
enabled: true
|
|
||||||
heka:
|
|
||||||
enabled: true
|
|
||||||
sensu:
|
|
||||||
enabled: true
|
|
||||||
sphinx:
|
|
||||||
enabled: true
|
|
||||||
config:
|
|
||||||
enabled: true
|
|
||||||
grafana:
|
|
||||||
enabled: true
|
|
|
@ -1,48 +0,0 @@
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
enabled: true
|
|
||||||
region: RegionOne
|
|
||||||
version: liberty
|
|
||||||
stack_domain_admin:
|
|
||||||
name: heat_domain_admin
|
|
||||||
password: password
|
|
||||||
domain: heat
|
|
||||||
bind:
|
|
||||||
api_cfn:
|
|
||||||
address: 127.0.0.1
|
|
||||||
api_cloudwatch:
|
|
||||||
address: 127.0.0.1
|
|
||||||
api:
|
|
||||||
address: 127.0.0.1
|
|
||||||
database:
|
|
||||||
engine: mysql
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 3306
|
|
||||||
name: heat
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
metadata:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8000
|
|
||||||
waitcondition:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8000
|
|
||||||
watch:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8003
|
|
||||||
identity:
|
|
||||||
engine: keystone
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 35357
|
|
||||||
tenant: service
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
members:
|
|
||||||
- host: 127.0.0.1
|
|
||||||
- host: 127.0.1.1
|
|
||||||
- host: 127.0.2.1
|
|
||||||
user: openstack
|
|
||||||
password: password
|
|
||||||
virtual_host: '/openstack'
|
|
|
@ -1,50 +0,0 @@
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
enabled: true
|
|
||||||
region: RegionOne
|
|
||||||
version: liberty
|
|
||||||
stack_domain_admin:
|
|
||||||
name: heat_domain_admin
|
|
||||||
password: password
|
|
||||||
domain: heat
|
|
||||||
bind:
|
|
||||||
api_cfn:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api_cloudwatch:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api:
|
|
||||||
address: 127.0.0.1
|
|
||||||
database:
|
|
||||||
engine: mysql
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 3306
|
|
||||||
name: heat
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
metadata:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8000
|
|
||||||
waitcondition:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8000
|
|
||||||
watch:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8003
|
|
||||||
identity:
|
|
||||||
engine: keystone
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 35357
|
|
||||||
tenant: service
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 5672
|
|
||||||
user: openstack
|
|
||||||
password: password
|
|
||||||
virtual_host: '/openstack'
|
|
||||||
dir:
|
|
||||||
plugins:
|
|
||||||
- /test/dir1
|
|
||||||
- /test/dir2
|
|
|
@ -1,46 +0,0 @@
|
||||||
heat:
|
|
||||||
server:
|
|
||||||
enabled: true
|
|
||||||
region: RegionOne
|
|
||||||
version: liberty
|
|
||||||
stack_domain_admin:
|
|
||||||
name: heat_domain_admin
|
|
||||||
password: password
|
|
||||||
domain: heat
|
|
||||||
bind:
|
|
||||||
api_cfn:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api_cloudwatch:
|
|
||||||
address: 0.0.0.0
|
|
||||||
api:
|
|
||||||
address: 127.0.0.1
|
|
||||||
database:
|
|
||||||
engine: mysql
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 3306
|
|
||||||
name: heat
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
metadata:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8000
|
|
||||||
waitcondition:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8000
|
|
||||||
watch:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 8003
|
|
||||||
identity:
|
|
||||||
engine: keystone
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 35357
|
|
||||||
tenant: service
|
|
||||||
user: heat
|
|
||||||
password: password
|
|
||||||
message_queue:
|
|
||||||
engine: rabbitmq
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 5672
|
|
||||||
user: openstack
|
|
||||||
password: password
|
|
||||||
virtual_host: '/openstack'
|
|
|
@ -1,163 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
[ -n "$DEBUG" ] && set -x
|
|
||||||
|
|
||||||
CURDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
METADATA=${CURDIR}/../metadata.yml
|
|
||||||
FORMULA_NAME=$(cat $METADATA | python -c "import sys,yaml; print yaml.load(sys.stdin)['name']")
|
|
||||||
|
|
||||||
## Overrideable parameters
|
|
||||||
PILLARDIR=${PILLARDIR:-${CURDIR}/pillar}
|
|
||||||
BUILDDIR=${BUILDDIR:-${CURDIR}/build}
|
|
||||||
VENV_DIR=${VENV_DIR:-${BUILDDIR}/virtualenv}
|
|
||||||
DEPSDIR=${BUILDDIR}/deps
|
|
||||||
|
|
||||||
SALT_FILE_DIR=${SALT_FILE_DIR:-${BUILDDIR}/file_root}
|
|
||||||
SALT_PILLAR_DIR=${SALT_PILLAR_DIR:-${BUILDDIR}/pillar_root}
|
|
||||||
SALT_CONFIG_DIR=${SALT_CONFIG_DIR:-${BUILDDIR}/salt}
|
|
||||||
SALT_CACHE_DIR=${SALT_CACHE_DIR:-${SALT_CONFIG_DIR}/cache}
|
|
||||||
|
|
||||||
SALT_OPTS="${SALT_OPTS} --retcode-passthrough --local -c ${SALT_CONFIG_DIR} --log-file=/dev/null"
|
|
||||||
|
|
||||||
if [ "x${SALT_VERSION}" != "x" ]; then
|
|
||||||
PIP_SALT_VERSION="==${SALT_VERSION}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
log_info() {
|
|
||||||
echo "[INFO] $*"
|
|
||||||
}
|
|
||||||
|
|
||||||
log_err() {
|
|
||||||
echo "[ERROR] $*" >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_virtualenv() {
|
|
||||||
log_info "Setting up Python virtualenv"
|
|
||||||
virtualenv $VENV_DIR
|
|
||||||
source ${VENV_DIR}/bin/activate
|
|
||||||
pip install salt${PIP_SALT_VERSION}
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_pillar() {
|
|
||||||
[ ! -d ${SALT_PILLAR_DIR} ] && mkdir -p ${SALT_PILLAR_DIR}
|
|
||||||
echo "base:" > ${SALT_PILLAR_DIR}/top.sls
|
|
||||||
for pillar in ${PILLARDIR}/*; do
|
|
||||||
state_name=$(basename ${pillar%.sls})
|
|
||||||
echo -e " ${state_name}:\n - ${state_name}" >> ${SALT_PILLAR_DIR}/top.sls
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_salt() {
|
|
||||||
[ ! -d ${SALT_FILE_DIR} ] && mkdir -p ${SALT_FILE_DIR}
|
|
||||||
[ ! -d ${SALT_CONFIG_DIR} ] && mkdir -p ${SALT_CONFIG_DIR}
|
|
||||||
[ ! -d ${SALT_CACHE_DIR} ] && mkdir -p ${SALT_CACHE_DIR}
|
|
||||||
|
|
||||||
echo "base:" > ${SALT_FILE_DIR}/top.sls
|
|
||||||
for pillar in ${PILLARDIR}/*.sls; do
|
|
||||||
state_name=$(basename ${pillar%.sls})
|
|
||||||
echo -e " ${state_name}:\n - ${FORMULA_NAME}" >> ${SALT_FILE_DIR}/top.sls
|
|
||||||
done
|
|
||||||
|
|
||||||
cat << EOF > ${SALT_CONFIG_DIR}/minion
|
|
||||||
file_client: local
|
|
||||||
cachedir: ${SALT_CACHE_DIR}
|
|
||||||
verify_env: False
|
|
||||||
minion_id_caching: False
|
|
||||||
|
|
||||||
file_roots:
|
|
||||||
base:
|
|
||||||
- ${SALT_FILE_DIR}
|
|
||||||
- ${CURDIR}/..
|
|
||||||
- /usr/share/salt-formulas/env
|
|
||||||
|
|
||||||
pillar_roots:
|
|
||||||
base:
|
|
||||||
- ${SALT_PILLAR_DIR}
|
|
||||||
- ${PILLARDIR}
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
fetch_dependency() {
|
|
||||||
dep_name="$(echo $1|cut -d : -f 1)"
|
|
||||||
dep_source="$(echo $1|cut -d : -f 2-)"
|
|
||||||
dep_root="${DEPSDIR}/$(basename $dep_source .git)"
|
|
||||||
dep_metadata="${dep_root}/metadata.yml"
|
|
||||||
|
|
||||||
[ -d /usr/share/salt-formulas/env/${dep_name} ] && log_info "Dependency $dep_name already present in system-wide salt env" && return 0
|
|
||||||
[ -d $dep_root ] && log_info "Dependency $dep_name already fetched" && return 0
|
|
||||||
|
|
||||||
log_info "Fetching dependency $dep_name"
|
|
||||||
[ ! -d ${DEPSDIR} ] && mkdir -p ${DEPSDIR}
|
|
||||||
git clone $dep_source ${DEPSDIR}/$(basename $dep_source .git)
|
|
||||||
ln -s ${dep_root}/${dep_name} ${SALT_FILE_DIR}/${dep_name}
|
|
||||||
|
|
||||||
METADATA="${dep_metadata}" install_dependencies
|
|
||||||
}
|
|
||||||
|
|
||||||
install_dependencies() {
|
|
||||||
grep -E "^dependencies:" ${METADATA} >/dev/null || return 0
|
|
||||||
(python - | while read dep; do fetch_dependency "$dep"; done) << EOF
|
|
||||||
import sys,yaml
|
|
||||||
for dep in yaml.load(open('${METADATA}', 'ro'))['dependencies']:
|
|
||||||
print '%s:%s' % (dep["name"], dep["source"])
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
clean() {
|
|
||||||
log_info "Cleaning up ${BUILDDIR}"
|
|
||||||
[ -d ${BUILDDIR} ] && rm -rf ${BUILDDIR} || exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
salt_run() {
|
|
||||||
[ -e ${VEN_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
|
|
||||||
salt-call ${SALT_OPTS} $*
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare() {
|
|
||||||
[ -d ${BUILDDIR} ] && mkdir -p ${BUILDDIR}
|
|
||||||
|
|
||||||
which salt-call || setup_virtualenv
|
|
||||||
setup_pillar
|
|
||||||
setup_salt
|
|
||||||
install_dependencies
|
|
||||||
}
|
|
||||||
|
|
||||||
run() {
|
|
||||||
for pillar in ${PILLARDIR}/*.sls; do
|
|
||||||
state_name=$(basename ${pillar%.sls})
|
|
||||||
salt_run --id=${state_name} state.show_sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
_atexit() {
|
|
||||||
RETVAL=$?
|
|
||||||
trap true INT TERM EXIT
|
|
||||||
|
|
||||||
if [ $RETVAL -ne 0 ]; then
|
|
||||||
log_err "Execution failed"
|
|
||||||
else
|
|
||||||
log_info "Execution successful"
|
|
||||||
fi
|
|
||||||
return $RETVAL
|
|
||||||
}
|
|
||||||
|
|
||||||
## Main
|
|
||||||
trap _atexit INT TERM EXIT
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
clean)
|
|
||||||
clean
|
|
||||||
;;
|
|
||||||
prepare)
|
|
||||||
prepare
|
|
||||||
;;
|
|
||||||
run)
|
|
||||||
run
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
prepare
|
|
||||||
run
|
|
||||||
;;
|
|
||||||
esac
|
|
Loading…
Reference in New Issue