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
|
||||
=============
|
||||
|
||||
====
|
||||
Heat
|
||||
====
|
||||
This repository as a part of openstack-salt project was moved to join rest of
|
||||
salt-formulas ecosystem.
|
||||
|
||||
Heat is the main project in the OpenStack Orchestration program. It 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. A native
|
||||
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
|
||||
Github: https://github.com/salt-formulas
|
||||
Launchpad https://launchpad.net/salt-formulas
|
||||
IRC: #salt-formulas @ irc.freenode.net
|
||||
|
|
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