Retire Tripleo: remove repo content
TripleO project is retiring - https://review.opendev.org/c/openstack/governance/+/905145 this commit remove the content of this project repo Change-Id: I3f007ba782e067fe575fb9c348a13b9b84f7834d
This commit is contained in:
parent
e1abb34ef8
commit
43e28b25c2
@ -1,7 +0,0 @@
|
||||
skip_list:
|
||||
- role-name
|
||||
- unnamed-task
|
||||
- command-instead-of-shell
|
||||
- no-changed-when
|
||||
- no-handler
|
||||
- yaml
|
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,6 +0,0 @@
|
||||
.tox
|
||||
__pycache__
|
||||
build
|
||||
tripleo_operator_ansible.egg-info/
|
||||
.stestr
|
||||
*.pyc
|
@ -1,49 +0,0 @@
|
||||
---
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v2.1.0
|
||||
hooks:
|
||||
- id: end-of-file-fixer
|
||||
- id: trailing-whitespace
|
||||
- id: mixed-line-ending
|
||||
- id: check-byte-order-marker
|
||||
- id: check-executables-have-shebangs
|
||||
- id: check-merge-conflict
|
||||
- id: debug-statements
|
||||
- id: flake8
|
||||
entry: flake8 --ignore=E24,E121,E122,E123,E124,E126,E226,E265,E305,E402,F401,F405,E501,E704,F403,F841,W503
|
||||
# TODO(cloudnull): These codes were added to pass the lint check.
|
||||
# All of these ignore codes should be resolved in
|
||||
# future PRs.
|
||||
- id: check-yaml
|
||||
files: .*\.(yaml|yml)$
|
||||
- repo: https://github.com/adrienverge/yamllint.git
|
||||
rev: v1.15.0
|
||||
hooks:
|
||||
- id: yamllint
|
||||
files: \.(yaml|yml)$
|
||||
types: [file, yaml]
|
||||
entry: yamllint --strict -f parsable
|
||||
- repo: https://github.com/ansible/ansible-lint
|
||||
rev: v5.3.2
|
||||
hooks:
|
||||
- id: ansible-lint
|
||||
always_run: true
|
||||
pass_filenames: false
|
||||
# do not add file filters here as ansible-lint does not give reliable
|
||||
# results when called with individual files.
|
||||
# https://github.com/ansible/ansible-lint/issues/611
|
||||
verbose: true
|
||||
entry: env ANSIBLE_LIBRARY=library ansible-lint --force-color -p -v --exclude zuul.d/
|
||||
- repo: https://github.com/openstack-dev/bashate.git
|
||||
rev: 0.6.0
|
||||
hooks:
|
||||
- id: bashate
|
||||
entry: bashate --error . --verbose --ignore=E006,E040
|
||||
# Run bashate check for all bash scripts
|
||||
# Ignores the following rules:
|
||||
# E006: Line longer than 79 columns (as many scripts use jinja
|
||||
# templating, this is very difficult)
|
||||
# E040: Syntax error determined using `bash -n` (as many scripts
|
||||
# use jinja templating, this will often fail and the syntax
|
||||
# error will be discovered in execution anyway)
|
@ -1,3 +0,0 @@
|
||||
[DEFAULT]
|
||||
test_path=${TEST_PATH:-./tests/}
|
||||
top_dir=./
|
11
.yamllint
11
.yamllint
@ -1,11 +0,0 @@
|
||||
---
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
line-length:
|
||||
# increase line limit because ansible collections needs more space
|
||||
# ansible-lint is 160 (rule 204)
|
||||
max: 256
|
||||
|
||||
ignore: |
|
||||
zuul.d/*.yaml
|
202
LICENSE
202
LICENSE
@ -1,202 +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.
|
@ -1,9 +0,0 @@
|
||||
tripleo-operator-ansible
|
||||
========================
|
||||
|
||||
This repository contains an ansible collection of TripleO roles. This collection
|
||||
contains a set of roles providing an ansible interface for the TripleO cli actions.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
Documentation can be viewed at https://docs.openstack.org/tripleo-operator-ansible/latest/
|
10
README.rst
Normal file
10
README.rst
Normal file
@ -0,0 +1,10 @@
|
||||
This project is no longer maintained.
|
||||
|
||||
The contents of this repository are still available in the Git
|
||||
source code management system. To see the contents of this
|
||||
repository before it reached its end of life, please check out the
|
||||
previous commit with "git checkout HEAD^1".
|
||||
|
||||
For any further questions, please email
|
||||
openstack-discuss@lists.openstack.org or join #openstack-dev on
|
||||
OFTC.
|
@ -1 +0,0 @@
|
||||
ansible-core<2.12
|
37
bindep.txt
37
bindep.txt
@ -1,37 +0,0 @@
|
||||
# This file facilitates OpenStack-CI package installation
|
||||
# before the execution of any tests.
|
||||
#
|
||||
# See the following for details:
|
||||
# - https://docs.openstack.org/infra/bindep/
|
||||
# - https://opendev.org/opendev/bindep/
|
||||
#
|
||||
# Even if the role does not make use of this facility, it
|
||||
# is better to have this file empty, otherwise OpenStack-CI
|
||||
# will fall back to installing its default packages which
|
||||
# will potentially be detrimental to the tests executed.
|
||||
|
||||
# The gcc compiler
|
||||
gcc
|
||||
|
||||
# Base requirements for RPM distros
|
||||
gcc-c++ [platform:rpm]
|
||||
git [platform:rpm]
|
||||
libffi-devel [platform:rpm]
|
||||
openssl-devel [platform:rpm]
|
||||
python-devel [platform:rpm !platform:rhel-8 !platform:centos-8]
|
||||
python3-devel [platform:rpm !platform:rhel-7 !platform:centos-7]
|
||||
PyYAML [platform:rpm !platform:rhel-8 !platform:centos-8]
|
||||
python3-pyyaml [platform:rpm !platform:rhel-7 !platform:centos-7]
|
||||
python3-dnf [platform:rpm !platform:rhel-7 !platform:centos-7]
|
||||
|
||||
# For SELinux
|
||||
libselinux-python [platform:rpm !platform:rhel-8 !platform:centos-8]
|
||||
libsemanage-python [platform:redhat !platform:rhel-8 !platform:centos-8]
|
||||
libselinux-python3 [platform:rpm !platform:rhel-7 !platform:centos-7]
|
||||
libsemanage-python3 [platform:redhat !platform:rhel-7 !platform:centos-7]
|
||||
|
||||
# Required for compressing collected log files in CI
|
||||
gzip
|
||||
|
||||
# Required to build language docs
|
||||
gettext
|
@ -1,76 +0,0 @@
|
||||
---
|
||||
- hosts: all
|
||||
vars:
|
||||
collection_path: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/tripleo-operator-ansible'].src_dir }}"
|
||||
build_collection_path: /tmp/collection_built/
|
||||
ansible_galaxy_path: "~/.local/bin/ansible-galaxy"
|
||||
|
||||
tasks:
|
||||
|
||||
- name: Include role for pip
|
||||
include_role:
|
||||
name: ensure-pip
|
||||
|
||||
- name: Install ansible
|
||||
pip:
|
||||
name: ansible-core<2.12
|
||||
|
||||
- name: Discover tag version
|
||||
set_fact:
|
||||
version_tag: "{{ zuul.tag|default('no_version', true) }}"
|
||||
|
||||
- name: Fail if no tag version found
|
||||
fail:
|
||||
msg: "No tag was found in Zuul vars!"
|
||||
when: version_tag == 'no_version'
|
||||
|
||||
- name: Create a directory for collection
|
||||
file:
|
||||
state: "{{ item }}"
|
||||
path: "{{ build_collection_path }}"
|
||||
mode: 0755
|
||||
loop:
|
||||
- absent
|
||||
- directory
|
||||
|
||||
- name: Set galaxy.yml for right version from tag
|
||||
lineinfile:
|
||||
path: '{{ collection_path }}/galaxy.yml'
|
||||
regexp: '^version:.*'
|
||||
line: 'version: {{ version_tag }}'
|
||||
|
||||
- name: Build collection
|
||||
command: "{{ ansible_galaxy_path }} collection build --output-path {{ build_collection_path }} --force"
|
||||
args:
|
||||
chdir: "{{ collection_path }}"
|
||||
|
||||
- name: Publish content to Ansible Galaxy
|
||||
block:
|
||||
- name: Create ansible.cfg configuration file tempfile
|
||||
tempfile:
|
||||
state: file
|
||||
suffix: .cfg
|
||||
register: _ansiblecfg_tmp
|
||||
|
||||
- name: Create ansible.cfg configuration file
|
||||
copy:
|
||||
dest: "{{ _ansiblecfg_tmp.path }}"
|
||||
mode: 0600
|
||||
content: |
|
||||
[galaxy]
|
||||
server_list = release_galaxy
|
||||
|
||||
[galaxy_server.release_galaxy]
|
||||
url = {{ ansible_galaxy_info.url }}
|
||||
token = {{ ansible_galaxy_info.token }}
|
||||
|
||||
- name: Publish collection to Ansible Galaxy / Automation Hub
|
||||
environment:
|
||||
ANSIBLE_CONFIG: "{{ _ansiblecfg_tmp.path }}"
|
||||
shell: >-
|
||||
{{ ansible_galaxy_path }} collection publish -vvv
|
||||
{{ build_collection_path }}/tripleo-operator-{{ version_tag }}.tar.gz
|
||||
|
||||
always:
|
||||
- name: Shred ansible-galaxy credentials
|
||||
command: "shred {{ _ansiblecfg_tmp.path }}"
|
@ -1,13 +0,0 @@
|
||||
netaddr # BSD
|
||||
stestr>=2.0.0 # Apache-2.0
|
||||
oslotest>=3.2.0 # Apache-2.0
|
||||
ruamel.yaml
|
||||
pre-commit # MIT
|
||||
ansible-core<2.12
|
||||
|
||||
# this is required for the docs build jobs
|
||||
sphinx>=2.0.0,!=2.1.0 # BSD
|
||||
openstackdocstheme>=2.2.1 # Apache-2.0
|
||||
reno>=3.1.0 # Apache-2.0
|
||||
doc8>=0.8.0 # Apache-2.0
|
||||
bashate>=0.6.0 # Apache-2.0
|
@ -1,298 +0,0 @@
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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 imp
|
||||
import os
|
||||
|
||||
from docutils import core
|
||||
from docutils import nodes
|
||||
from docutils.parsers.rst import Directive
|
||||
from docutils.parsers import rst
|
||||
from docutils.writers.html4css1 import Writer
|
||||
|
||||
from ruamel.yaml import YAML as RYAML
|
||||
|
||||
try:
|
||||
import io
|
||||
StringIO = io.StringIO
|
||||
except ImportError:
|
||||
import StringIO
|
||||
|
||||
|
||||
class DocYaml(RYAML):
|
||||
def _license_filter(self, data):
|
||||
"""This will filter out our boilerplate license heading in return data.
|
||||
|
||||
The filter is used to allow documentation we're creating in variable
|
||||
files to be rendered more beautifully.
|
||||
"""
|
||||
lines = list()
|
||||
mark = True
|
||||
for line in data.splitlines():
|
||||
if '# Copyright' in line:
|
||||
mark = False
|
||||
if mark:
|
||||
lines.append(line)
|
||||
if '# under the License' in line:
|
||||
mark = True
|
||||
return '\n'.join(lines)
|
||||
|
||||
def dump(self, data, stream=None, **kw):
|
||||
if not stream:
|
||||
stream = StringIO()
|
||||
try:
|
||||
RYAML.dump(self, data, stream, **kw)
|
||||
return self._license_filter(stream.getvalue().strip())
|
||||
finally:
|
||||
stream.close()
|
||||
|
||||
|
||||
DOCYAML = DocYaml()
|
||||
DOCYAML.default_flow_style = False
|
||||
|
||||
|
||||
class AnsibleAutoPluginDirective(Directive):
|
||||
directive_name = "ansibleautoplugin"
|
||||
has_content = True
|
||||
option_spec = {
|
||||
'module': rst.directives.unchanged,
|
||||
'role': rst.directives.unchanged,
|
||||
'documentation': rst.directives.unchanged,
|
||||
'examples': rst.directives.unchanged
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def _render_html(source):
|
||||
return core.publish_parts(
|
||||
source=source,
|
||||
writer=Writer(),
|
||||
writer_name='html',
|
||||
settings_overrides={'no_system_messages': True}
|
||||
)
|
||||
|
||||
def make_node(self, title, contents, content_type=None):
|
||||
section = self._section_block(title=title)
|
||||
if not content_type:
|
||||
# Doc section
|
||||
for content in contents['docs']:
|
||||
for paragraph in content.split('\n'):
|
||||
retnode = nodes.paragraph()
|
||||
retnode.append(self._raw_html_block(data=paragraph))
|
||||
section.append(retnode)
|
||||
|
||||
# Options Section
|
||||
options_list = nodes.field_list()
|
||||
options_section = self._section_block(title='Options')
|
||||
for key, value in contents['options'].items():
|
||||
options_list.append(
|
||||
self._raw_fields(
|
||||
data=value['description'],
|
||||
field_name=key
|
||||
)
|
||||
)
|
||||
else:
|
||||
options_section.append(options_list)
|
||||
section.append(options_section)
|
||||
|
||||
# Authors Section
|
||||
authors_list = nodes.field_list()
|
||||
authors_list.append(
|
||||
self._raw_fields(
|
||||
data=contents['author']
|
||||
)
|
||||
)
|
||||
authors_section = self._section_block(title='Authors')
|
||||
authors_section.append(authors_list)
|
||||
section.append(authors_section)
|
||||
|
||||
elif content_type == 'yaml':
|
||||
for content in contents:
|
||||
section.append(
|
||||
self._literal_block(
|
||||
data=content,
|
||||
dump_data=False
|
||||
)
|
||||
)
|
||||
|
||||
return section
|
||||
|
||||
@staticmethod
|
||||
def load_module(filename):
|
||||
return imp.load_source('__ansible_module__', filename)
|
||||
|
||||
@staticmethod
|
||||
def build_documentation(module):
|
||||
docs = DOCYAML.load(module.DOCUMENTATION)
|
||||
doc_data = dict()
|
||||
doc_data['docs'] = docs['description']
|
||||
doc_data['author'] = docs.get('author', list())
|
||||
doc_data['options'] = docs.get('options', dict())
|
||||
return doc_data
|
||||
|
||||
@staticmethod
|
||||
def build_examples(module):
|
||||
examples = DOCYAML.load(module.EXAMPLES)
|
||||
return_examples = list()
|
||||
for example in examples:
|
||||
return_examples.append(DOCYAML.dump([example]))
|
||||
return return_examples
|
||||
|
||||
def _raw_html_block(self, data):
|
||||
html = self._render_html(source=data)
|
||||
return nodes.raw('', html['body'], format='html')
|
||||
|
||||
def _raw_fields(self, data, field_name=''):
|
||||
body = nodes.field_body()
|
||||
if isinstance(data, list):
|
||||
for item in data:
|
||||
body.append(self._raw_html_block(data=item))
|
||||
else:
|
||||
body.append(self._raw_html_block(data=data))
|
||||
|
||||
field = nodes.field()
|
||||
field.append(nodes.field_name(text=field_name))
|
||||
field.append(body)
|
||||
return field
|
||||
|
||||
@staticmethod
|
||||
def _literal_block(data, language='yaml', dump_data=True):
|
||||
if dump_data:
|
||||
literal = nodes.literal_block(
|
||||
text=DOCYAML.dump(data)
|
||||
)
|
||||
else:
|
||||
literal = nodes.literal_block(text=data)
|
||||
literal['language'] = 'yaml'
|
||||
return literal
|
||||
|
||||
@staticmethod
|
||||
def _section_block(title, text=None):
|
||||
section = nodes.section(
|
||||
title,
|
||||
nodes.title(text=title),
|
||||
ids=[nodes.make_id('-'.join(title))],
|
||||
)
|
||||
if text:
|
||||
section_body = nodes.field_body()
|
||||
section_body.append(nodes.paragraph(text=text))
|
||||
section.append(section_body)
|
||||
|
||||
return section
|
||||
|
||||
def _yaml_section(self, to_yaml_data, section_title, section_text=None):
|
||||
yaml_section = self._section_block(
|
||||
title=section_title,
|
||||
text=section_text
|
||||
)
|
||||
yaml_section.append(self._literal_block(data=to_yaml_data))
|
||||
return yaml_section
|
||||
|
||||
def _run_role(self, role):
|
||||
section = self._section_block(
|
||||
title='Role Documentation',
|
||||
text='Welcome to the "{}" role documentation.'.format(
|
||||
os.path.basename(role)
|
||||
)
|
||||
)
|
||||
defaults_file = os.path.join(role, 'defaults', 'main.yml')
|
||||
if os.path.exists(defaults_file):
|
||||
with open(defaults_file) as f:
|
||||
role_defaults = DOCYAML.load(f.read())
|
||||
section.append(
|
||||
self._yaml_section(
|
||||
to_yaml_data=role_defaults,
|
||||
section_title='Role Defaults',
|
||||
section_text='This section highlights all of the defaults'
|
||||
' and variables set within the "{}"'
|
||||
' role.'.format(os.path.basename(role))
|
||||
)
|
||||
)
|
||||
|
||||
vars_path = os.path.join(role, 'vars')
|
||||
if os.path.exists(vars_path):
|
||||
for v_file in os.listdir(vars_path):
|
||||
vars_file = os.path.join(vars_path, v_file)
|
||||
with open(vars_file) as f:
|
||||
vars_values = DOCYAML.load(f.read())
|
||||
section.append(
|
||||
self._yaml_section(
|
||||
to_yaml_data=vars_values,
|
||||
section_title='Role Variables: {}'.format(v_file)
|
||||
)
|
||||
)
|
||||
|
||||
self.run_returns.append(section)
|
||||
|
||||
# Document any libraries nested within the role
|
||||
library_path = os.path.join(role, 'library')
|
||||
if os.path.exists(library_path):
|
||||
self.options['documentation'] = True
|
||||
self.options['examples'] = True
|
||||
for lib in os.listdir(library_path):
|
||||
if lib.endswith('.py'):
|
||||
self._run_module(
|
||||
module=self.load_module(
|
||||
filename=os.path.join(
|
||||
library_path,
|
||||
lib
|
||||
)
|
||||
),
|
||||
module_title='Embedded module: {}'.format(lib),
|
||||
example_title='Examples for embedded module'
|
||||
)
|
||||
|
||||
def _run_module(self, module, module_title="Module Documentation",
|
||||
example_title="Example Tasks"):
|
||||
if self.options.get('documentation'):
|
||||
docs = self.build_documentation(module=module)
|
||||
self.run_returns.append(
|
||||
self.make_node(
|
||||
title=module_title,
|
||||
contents=docs
|
||||
)
|
||||
)
|
||||
|
||||
if self.options.get('examples'):
|
||||
examples = self.build_examples(module=module)
|
||||
self.run_returns.append(
|
||||
self.make_node(
|
||||
title=example_title,
|
||||
contents=examples,
|
||||
content_type='yaml'
|
||||
)
|
||||
)
|
||||
|
||||
def run(self):
|
||||
self.run_returns = list()
|
||||
|
||||
if self.options.get('module'):
|
||||
module = self.load_module(filename=self.options['module'])
|
||||
self._run_module(module=module)
|
||||
|
||||
if self.options.get('role'):
|
||||
self._run_role(role=self.options['role'])
|
||||
|
||||
return self.run_returns
|
||||
|
||||
|
||||
def setup(app):
|
||||
classes = [
|
||||
AnsibleAutoPluginDirective,
|
||||
]
|
||||
for directive_class in classes:
|
||||
app.add_directive(directive_class.directive_name, directive_class)
|
||||
|
||||
return {'version': '0.2'}
|
@ -1,43 +0,0 @@
|
||||
==============
|
||||
Best Practices
|
||||
==============
|
||||
|
||||
|
||||
The roles provided in this collection wrap the tripleoclient actions that are
|
||||
used to deploy and manage an undercloud and overcloud. The point of these
|
||||
roles is to establish a common interface for Ansible based automation.
|
||||
|
||||
|
||||
Ansible Collection Namespace
|
||||
----------------------------
|
||||
|
||||
tripleo-operator-ansible is an Ansible collection. In order to consume the
|
||||
roles and plugins within this repository, it needs to be installed as a
|
||||
collection. This repository provides the `tripleo.operator` namespace.
|
||||
When writing playbooks, the usage of the `collections:` keyword
|
||||
is required in order for them to be executed. See the `Ansible Collection Documentation`_
|
||||
for additional details.
|
||||
|
||||
.. _Ansible Collection Documentation: https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#using-collections-in-a-playbook
|
||||
|
||||
|
||||
Role Naming Convention
|
||||
----------------------
|
||||
|
||||
To general naming scheme for the roles provide is to take the openstackclient
|
||||
command and replace `openstack` with `tripleo` and use underscores instead
|
||||
of spaces. For example, `openstack overcloud deploy` becomes
|
||||
`tripleo_overcloud_deploy`. The exception to this rule is when the command
|
||||
itself start with `openstack tripleo`. Rather than double the `tripleo` in the
|
||||
role name, we only specify it once. For example `openstack tripleo container image prepare`
|
||||
is simply `tripleo_container_image_prepare`.
|
||||
|
||||
|
||||
Variable Naming Convention
|
||||
--------------------------
|
||||
|
||||
The variables used by each role are prefixed with the role name. For example
|
||||
all roles contain a debug variable that can be used to print out the data used
|
||||
when executing the specific commands. For example, `tripleo_overcloud_deploy_debug`
|
||||
can be used to print out the cli command and the environment data used when
|
||||
the command is executed.
|
@ -1,87 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# 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
|
||||
|
||||
# Add the project
|
||||
sys.path.insert(0, os.path.abspath('../..'))
|
||||
# Add the extensions
|
||||
sys.path.insert(0, os.path.join(os.path.abspath('.'), '_exts'))
|
||||
|
||||
# -- 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 = [
|
||||
'openstackdocstheme',
|
||||
'sphinx.ext.autodoc',
|
||||
'ansible-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
|
||||
# autodoc_mock_imports = ["django"]
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'tripleo-operator-ansible'
|
||||
copyright = u'2019, 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 = 'native'
|
||||
|
||||
# -- 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
|
||||
html_theme = 'openstackdocs'
|
||||
|
||||
# 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}
|
||||
|
||||
# openstackdocstheme options
|
||||
openstackdocs_repo_name = 'openstack/tripleo-operator-ansible'
|
||||
openstackdocs_auto_name = False
|
||||
openstackdocs_bug_project = 'tripleo'
|
||||
openstackdocs_bug_tag = 'documentation'
|
@ -1,26 +0,0 @@
|
||||
============
|
||||
Contributing
|
||||
============
|
||||
|
||||
Adding roles into this project is easy and starts with a compatible skeleton.
|
||||
|
||||
|
||||
Create a new role manually
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
TBD
|
||||
|
||||
Create a new role with automation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
TBD
|
||||
|
||||
Local testing of new roles
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
TBD
|
||||
|
||||
Contributing plugins
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
TBD
|
@ -1,19 +0,0 @@
|
||||
Welcome to tripleo-operator-ansible's documentation!
|
||||
====================================================
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
installation
|
||||
usage
|
||||
bestpractices
|
||||
contributing
|
||||
roles
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
@ -1,31 +0,0 @@
|
||||
============
|
||||
Installation
|
||||
============
|
||||
|
||||
Via Package
|
||||
-----------
|
||||
|
||||
At the command line using `yum`.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ yum install tripleo-operator-ansible
|
||||
|
||||
|
||||
At the command line using `dnf`.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ dnf install tripleo-operator-ansible
|
||||
|
||||
From Source
|
||||
-----------
|
||||
|
||||
At the command line install using the ansible-galaxy command.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git clone https://opendev.org/openstack/tripleo-operator-ansible
|
||||
$ cd tripleo-operator-ansible
|
||||
$ ansible-galaxy collection build --force --output-path ~/collections
|
||||
$ ansible-galaxy collection install --force ~/collections/tripleo-operator*
|
@ -1,9 +0,0 @@
|
||||
Documented roles in tripleo-operator-ansible
|
||||
============================================
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:glob:
|
||||
|
||||
roles/*
|
@ -1,6 +0,0 @@
|
||||
=========================
|
||||
Role - test_molecule_prep
|
||||
=========================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/test_molecule_prep
|
@ -1,6 +0,0 @@
|
||||
======================================
|
||||
Role - tripleo_config_generate_ansible
|
||||
======================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_config_generate_ansible
|
@ -1,6 +0,0 @@
|
||||
=====================================
|
||||
Role - tripleo_container_image_delete
|
||||
=====================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_container_image_delete
|
@ -1,6 +0,0 @@
|
||||
===================================
|
||||
Role - tripleo_container_image_list
|
||||
===================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_container_image_list
|
@ -1,6 +0,0 @@
|
||||
======================================
|
||||
Role - tripleo_container_image_prepare
|
||||
======================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_container_image_prepare
|
@ -1,6 +0,0 @@
|
||||
==============================================
|
||||
Role - tripleo_container_image_prepare_default
|
||||
==============================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_container_image_prepare_default
|
@ -1,6 +0,0 @@
|
||||
===================================
|
||||
Role - tripleo_container_image_push
|
||||
===================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_container_image_push
|
@ -1,6 +0,0 @@
|
||||
===================================
|
||||
Role - tripleo_container_image_show
|
||||
===================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_container_image_show
|
@ -1,6 +0,0 @@
|
||||
=====================
|
||||
Role - tripleo_deploy
|
||||
=====================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_deploy
|
@ -1,6 +0,0 @@
|
||||
==============================================
|
||||
Role - tripleo_overcloud_container_image_build
|
||||
==============================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_container_image_build
|
@ -1,6 +0,0 @@
|
||||
================================================
|
||||
Role - tripleo_overcloud_container_image_prepare
|
||||
================================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_container_image_prepare
|
@ -1,6 +0,0 @@
|
||||
===============================
|
||||
Role - tripleo_overcloud_deploy
|
||||
===============================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_deploy
|
@ -1,6 +0,0 @@
|
||||
===============================
|
||||
Role - tripleo_overcloud_export
|
||||
===============================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_export
|
@ -1,6 +0,0 @@
|
||||
=================================
|
||||
Role - tripleo_overcloud_failures
|
||||
=================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_failures
|
@ -1,6 +0,0 @@
|
||||
====================================
|
||||
Role - tripleo_overcloud_image_build
|
||||
====================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_image_build
|
@ -1,6 +0,0 @@
|
||||
=====================================
|
||||
Role - tripleo_overcloud_image_upload
|
||||
=====================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_image_upload
|
@ -1,6 +0,0 @@
|
||||
============================================
|
||||
Role - tripleo_overcloud_node_bios_configure
|
||||
============================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_bios_configure
|
@ -1,6 +0,0 @@
|
||||
========================================
|
||||
Role - tripleo_overcloud_node_bios_reset
|
||||
========================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_bios_reset
|
@ -1,6 +0,0 @@
|
||||
===================================
|
||||
Role - tripleo_overcloud_node_clean
|
||||
===================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_clean
|
@ -1,6 +0,0 @@
|
||||
=======================================
|
||||
Role - tripleo_overcloud_node_configure
|
||||
=======================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_configure
|
@ -1,6 +0,0 @@
|
||||
====================================
|
||||
Role - tripleo_overcloud_node_delete
|
||||
====================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_delete
|
@ -1,6 +0,0 @@
|
||||
======================================
|
||||
Role - tripleo_overcloud_node_discover
|
||||
======================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_discover
|
@ -1,6 +0,0 @@
|
||||
=================================================
|
||||
Role - tripleo_overcloud_node_extract_provisioned
|
||||
=================================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_extract_provisioned
|
@ -1,6 +0,0 @@
|
||||
====================================
|
||||
Role - tripleo_overcloud_node_import
|
||||
====================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_import
|
@ -1,6 +0,0 @@
|
||||
========================================
|
||||
Role - tripleo_overcloud_node_introspect
|
||||
========================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_introspect
|
@ -1,6 +0,0 @@
|
||||
=======================================
|
||||
Role - tripleo_overcloud_node_provision
|
||||
=======================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_node_provision
|
@ -1,6 +0,0 @@
|
||||
===============================
|
||||
Role - tripleo_overcloud_status
|
||||
===============================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_status
|
@ -1,6 +0,0 @@
|
||||
=======================================
|
||||
Role - tripleo_overcloud_update_prepare
|
||||
=======================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_update_prepare
|
@ -1,6 +0,0 @@
|
||||
===================================
|
||||
Role - tripleo_overcloud_update_run
|
||||
===================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_overcloud_update_run
|
@ -1,6 +0,0 @@
|
||||
====================
|
||||
Role - tripleo_repos
|
||||
====================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_repos
|
@ -1,6 +0,0 @@
|
||||
================================
|
||||
Role - tripleo_undercloud_backup
|
||||
================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_undercloud_backup
|
@ -1,6 +0,0 @@
|
||||
=================================
|
||||
Role - tripleo_undercloud_install
|
||||
=================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_undercloud_install
|
@ -1,6 +0,0 @@
|
||||
========================================
|
||||
Role - tripleo_undercloud_minion_install
|
||||
========================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_undercloud_minion_install
|
@ -1,6 +0,0 @@
|
||||
========================================
|
||||
Role - tripleo_undercloud_minion_upgrade
|
||||
========================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_undercloud_minion_upgrade
|
@ -1,6 +0,0 @@
|
||||
=================================
|
||||
Role - tripleo_undercloud_upgrade
|
||||
=================================
|
||||
|
||||
.. ansibleautoplugin::
|
||||
:role: roles/tripleo_undercloud_upgrade
|
@ -1,7 +0,0 @@
|
||||
=====
|
||||
Usage
|
||||
=====
|
||||
|
||||
Once the tripleo-operator-ansible project has been installed navigate to the share path,
|
||||
usually `/usr/share/ansible` path to access the installed roles, playbooks, and
|
||||
libraries.
|
58
galaxy.yml
58
galaxy.yml
@ -1,58 +0,0 @@
|
||||
---
|
||||
### REQUIRED
|
||||
|
||||
# The namespace of the collection. This can be a company/brand/organization or product namespace under which all
|
||||
# content lives. May only contain alphanumeric characters and underscores. Additionally namespaces cannot start with
|
||||
# underscores or numbers and cannot contain consecutive underscores
|
||||
namespace: tripleo
|
||||
|
||||
# The name of the collection. Has the same character restrictions as 'namespace'
|
||||
name: operator
|
||||
|
||||
# The version of the collection. Must be compatible with semantic versioning
|
||||
version: 0.6.0
|
||||
|
||||
# The path to the Markdown (.md) readme file. This path is relative to the root of the collection
|
||||
readme: README.md
|
||||
|
||||
# A list of the collection's content authors. Can be just the name or in the format 'Full Name <email> (url)
|
||||
# @nicks:irc/im.site#channel'
|
||||
authors:
|
||||
- OpenStack Developers <openstack-discuss@lists.openstack.org>
|
||||
|
||||
|
||||
### OPTIONAL but strongly recommended
|
||||
|
||||
# A short summary description of the collection
|
||||
description: Collection of roles used to automate TripleO deployments
|
||||
|
||||
# Either a single license or a list of licenses for content inside of a collection. Ansible Galaxy currently only
|
||||
# accepts L(SPDX,https://spdx.org/licenses/) licenses. This key is mutually exclusive with 'license_file'
|
||||
license:
|
||||
- Apache-2.0
|
||||
|
||||
# The path to the license file for the collection. This path is relative to the root of the collection. This key is
|
||||
# mutually exclusive with 'license'
|
||||
license_file: ''
|
||||
|
||||
# A list of tags you want to associate with the collection for indexing/searching. A tag name has the same character
|
||||
# requirements as 'namespace' and 'name'
|
||||
tags: ['tripleo', 'openstack']
|
||||
|
||||
# Collections that this collection requires to be installed for it to be usable. The key of the dict is the
|
||||
# collection label 'namespace.name'. The value is a version range
|
||||
# L(specifiers,https://python-semanticversion.readthedocs.io/en/latest/#requirement-specification). Multiple version
|
||||
# range specifiers can be set and are separated by ','
|
||||
dependencies: {}
|
||||
|
||||
# The URL of the originating SCM repository
|
||||
repository: https://opendev.org/openstack/tripleo-operator-ansible
|
||||
|
||||
# The URL to any online docs
|
||||
documentation: https://docs.openstack.org/tripleo-operator-ansible/latest/
|
||||
|
||||
# The URL to the homepage of the collection/project
|
||||
homepage: https://openstack.org
|
||||
|
||||
# The URL to the collection issue tracker
|
||||
issues: https://bugs.launchpad.net/tripleo/
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
requires_ansible: ">=2.8"
|
@ -1,7 +0,0 @@
|
||||
ansible-core<2.12
|
||||
# molecule also has optional extras: docker, podman
|
||||
molecule[test]>=3.5.0,<3.6 # MIT
|
||||
oslotest
|
||||
pytest-molecule>=1.3.3
|
||||
# Latest release of py is 1.11.0, library which is in maintenance mode
|
||||
py==1.11.0 # MIT
|
@ -1,15 +0,0 @@
|
||||
Playbooks
|
||||
=========
|
||||
|
||||
This folder contains a set of example playbooks that do the minimum required
|
||||
actions to perform specific actions. They can be used as example files to be
|
||||
tailored to your specific requirements.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
* `container-prepare.yml` - Container prepare playbook
|
||||
* `import-nodes.yml` - Baremetal node import and introspection playbook
|
||||
* `overcloud-deploy.yml` - Basic overcloud deployment
|
||||
* `standalone.yml` - Standalone playbook for PoC
|
||||
* `undercloud.yml` - Undercloud installation playbook
|
@ -1,37 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Container Image Build playbook
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook to perform the basic container image build actions
|
||||
# for TripleO containers.
|
||||
#
|
||||
###############################################################################
|
||||
- hosts: undercloud
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
build_debug: true
|
||||
registry: quay.io/tripleomaster
|
||||
tag: current-tripleo
|
||||
|
||||
tasks:
|
||||
- name: Gather the rpm package facts
|
||||
package_facts:
|
||||
|
||||
- name: Check if tripleoclient is installed
|
||||
fail:
|
||||
msg: >-
|
||||
TripleO Client is not installed. Please make sure that the client
|
||||
has been installed and the repositories are properly configured.
|
||||
when: (ansible_facts.distribution_major_version|int <= 7 and not 'python2-tripleoclient' in ansible_facts.packages) or
|
||||
(ansible_facts.distribution_major_version|int >= 8 and not 'python3-tripleoclient' in ansible_facts.packages)
|
||||
|
||||
- name: Run container image build
|
||||
include_role:
|
||||
name: tripleo_container_image_build
|
||||
vars:
|
||||
tripleo_container_image_build_debug: "{{ build_debug }}"
|
||||
tripleo_container_image_build_registry: "{{ registry }}"
|
||||
tripleo_container_image_build_tag: "{{ tag }}"
|
||||
tripleo_container_image_build_push: true
|
@ -1,50 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Container preparation playbook
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook to perform the basic container prepare actions
|
||||
# for an overcloud or undercloud deployment.
|
||||
#
|
||||
###############################################################################
|
||||
- hosts: undercloud
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
prepare_debug: true
|
||||
use_default: true
|
||||
default_push_destination: true
|
||||
output_env_file: "{{ ansible_env.HOME }}/container-image-prepare.yaml"
|
||||
prepare_env_files: []
|
||||
prepare_rolefile:
|
||||
|
||||
tasks:
|
||||
- name: Gather the rpm package facts
|
||||
package_facts:
|
||||
|
||||
- name: Check if tripleoclient is installed
|
||||
fail:
|
||||
msg: >-
|
||||
TripleO Client is not installed. Please make sure that the client
|
||||
has been installed and the repositories are properly configured.
|
||||
when: (ansible_facts.distribution_major_version|int <= 7 and not 'python2-tripleoclient' in ansible_facts.packages) or
|
||||
(ansible_facts.distribution_major_version|int >= 8 and not 'python3-tripleoclient' in ansible_facts.packages)
|
||||
|
||||
- name: Run container image prepare defaults
|
||||
include_role:
|
||||
name: tripleo_container_image_prepare_default
|
||||
vars:
|
||||
tripleo_container_image_prepare_default_debug: "{{ prepare_debug }}"
|
||||
tripleo_container_image_prepare_default_local_push_destination: "{{ default_push_destination }}"
|
||||
tripleo_container_image_prepare_default_output_env_file: "{{ output_env_file }}"
|
||||
when: use_default|bool
|
||||
|
||||
- name: Run container image prepare
|
||||
include_role:
|
||||
name: tripleo_overcloud_node_introspect
|
||||
vars:
|
||||
tripleo_container_image_prepare_debug: "{{ prepare_debug }}"
|
||||
tripleo_container_image_prepare_environment_files: "{{ prepare_env_files }}"
|
||||
tripleo_container_image_prepare_roles_file: "{{ prepare_roles_file }}"
|
||||
tripleo_container_image_prepare_output_env_file: "{{ output_env_file }}"
|
||||
when: not use_default|bool
|
@ -1,51 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Overcloud node import and introspection playbook
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook to import overcloud nodes and kick off node
|
||||
# introspection.
|
||||
#
|
||||
###############################################################################
|
||||
- hosts: undercloud
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
node_debug: true
|
||||
node_introspect: true
|
||||
node_environment_source_json_file: environment.json
|
||||
tasks:
|
||||
- name: Gather the rpm package facts
|
||||
package_facts:
|
||||
|
||||
- name: Check if tripleoclient is installed
|
||||
fail:
|
||||
msg: >-
|
||||
TripleO Client is not installed. Please make sure that the client
|
||||
has been installed and the repositories are properly configured.
|
||||
when: (ansible_facts.distribution_major_version|int <= 7 and not 'python2-tripleoclient' in ansible_facts.packages) or
|
||||
(ansible_facts.distribution_major_version|int >= 8 and not 'python3-tripleoclient' in ansible_facts.packages)
|
||||
|
||||
- name: Copy environment file to the undercloud
|
||||
copy:
|
||||
src: "{{ node_environment_source_json_file }}"
|
||||
dest: "{{ ansible_env.HOME }}/environment.json"
|
||||
owner: "{{ ansible_env.USER }}"
|
||||
mode: "0600"
|
||||
|
||||
- name: Run node import
|
||||
include_role:
|
||||
name: tripleo_overcloud_node_import
|
||||
vars:
|
||||
tripleo_overcloud_node_import_debug: "{{ node_debug }}"
|
||||
tripleo_overcloud_node_import_environment_file: "{{ ansible_env.HOME }}/environment.json"
|
||||
|
||||
# NOTE(mwhahaha): We can do these actions during import, not sure which is better.
|
||||
- name: Run node introspection
|
||||
include_role:
|
||||
name: tripleo_overcloud_node_introspect
|
||||
vars:
|
||||
tripleo_overcloud_node_introspect_debug: "{{ node_debug }}"
|
||||
tripleo_overcloud_node_introspect_all_manageable: true
|
||||
tripleo_overcloud_node_introspect_provide: true
|
||||
when: node_introspect|bool
|
@ -1,60 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Overcloud deploy playbook
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook to execute an overcloud deployment.
|
||||
#
|
||||
###############################################################################
|
||||
- hosts: undercloud
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
deploy_debug: true
|
||||
deploy_templates: /usr/share/openstack-tripleo-heat-templates/
|
||||
deploy_controller_count: 1
|
||||
deploy_compute_count: 1
|
||||
deploy_dns:
|
||||
- 1.1.1.1
|
||||
- 8.8.8.8
|
||||
deploy_ntp:
|
||||
- 0.pool.ntp.org
|
||||
- 1.pool.ntp.org
|
||||
- 2.pool.ntp.org
|
||||
- 3.pool.ntp.org
|
||||
deploy_env_files:
|
||||
- /usr/share/openstack-tripleo-heat-templates/environments/enable-swap.yaml
|
||||
- /usr/share/openstack-tripleo-heat-templates/environments/docker-ha.yaml
|
||||
- "{{ ansible_env.HOME }}/container-image-prepare.yaml"
|
||||
- "{{ ansible_env.HOME }}/parameters.yaml"
|
||||
|
||||
tasks:
|
||||
- name: Gather the rpm package facts
|
||||
package_facts:
|
||||
|
||||
- name: Check if tripleoclient is installed
|
||||
fail:
|
||||
msg: >-
|
||||
TripleO Client is not installed. Please make sure that the client
|
||||
has been installed and the repositories are properly configured.
|
||||
when: (ansible_facts.distribution_major_version|int <= 7 and not 'python2-tripleoclient' in ansible_facts.packages) or
|
||||
(ansible_facts.distribution_major_version|int >= 8 and not 'python3-tripleoclient' in ansible_facts.packages)
|
||||
|
||||
- name: Generate parameters.yaml
|
||||
copy:
|
||||
content: |
|
||||
parameter_defaults:
|
||||
ControllerCount: {{ deploy_controller_count | default(1) }}
|
||||
ComputeCount: {{ deploy_compute_count | default(1) }}
|
||||
DnsServers: {{ deploy_dns }}
|
||||
NtpServer: {{ deploy_ntp }}
|
||||
dest: "{{ ansible_env.HOME }}/parameters.yaml"
|
||||
mode: '0644'
|
||||
|
||||
- name: Run overcloud deployment
|
||||
include_role:
|
||||
name: tripleo_overcloud_deploy
|
||||
vars:
|
||||
tripleo_overcloud_deploy_debug: "{{ deploy_debug }}"
|
||||
tripleo_overcloud_deploy_environment_files: "{{ deploy_env_files }}"
|
||||
tripleo_overcloud_deploy_templates: "{{ deploy_templates }}"
|
@ -1,67 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Perform overcloud image build and/or uploads
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook that can be used to build and/or upload overcloud
|
||||
# images into the undercloud. This playbook assumes that the repositories
|
||||
# are already configured on the undercloud and checks that the tripleoclient
|
||||
# is installed.
|
||||
#
|
||||
###############################################################################
|
||||
- hosts: undercloud
|
||||
gather_facts: true
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
images_debug: true
|
||||
build_images: true
|
||||
upload_images: true
|
||||
tripleo_overcloud_image_build_output_directory: "{{ ansible_env.HOME }}/images"
|
||||
tripleo_overcloud_image_build_dib_yum_repo_conf: "/etc/yum.repos.d/*"
|
||||
tripleo_overcloud_image_build_extra_env_vars: {}
|
||||
tripleo_overcloud_image_upload_update_existing: true
|
||||
|
||||
tasks:
|
||||
- name: Gather the rpm package facts
|
||||
package_facts:
|
||||
|
||||
- name: Check if tripleoclient is installed
|
||||
fail:
|
||||
msg: >-
|
||||
TripleO Client is not installed. Please make sure that the client
|
||||
has been installed and the repositories are properly configured.
|
||||
when: (ansible_facts.distribution_major_version|int <= 7 and not 'python2-tripleoclient' in ansible_facts.packages) or
|
||||
(ansible_facts.distribution_major_version|int >= 8 and not 'python3-tripleoclient' in ansible_facts.packages)
|
||||
|
||||
- name: Set distribution variables
|
||||
set_fact:
|
||||
distro_name: "{{ (ansible_facts.distribution == 'RedHat') | ternary('rhel', 'centos') }}"
|
||||
distro_version: "{{ ansible_facts.distribution_major_version | int }}"
|
||||
images_version: "{{ (ansible_facts.distribution_major_version|int >= 8) | ternary('-python3', '') }}"
|
||||
|
||||
- name: Ensure image folder exists
|
||||
file:
|
||||
path: "{{ tripleo_overcloud_image_build_output_directory }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: "{{ ansible_env.USER }}"
|
||||
|
||||
- name: Build images
|
||||
include_role:
|
||||
name: tripleo_overcloud_image_build
|
||||
vars:
|
||||
tripleo_overcloud_image_build_debug: "{{ images_debug }}"
|
||||
tripleo_overcloud_image_build_config_files:
|
||||
- /usr/share/openstack-tripleo-common/image-yaml/overcloud-images{{ images_version }}.yaml
|
||||
- /usr/share/openstack-tripleo-common/image-yaml/overcloud-images-{{ distro_name }}{{ distro_version }}.yaml
|
||||
when: build_images|bool
|
||||
|
||||
- name: Upload images
|
||||
include_role:
|
||||
name: tripleo_overcloud_image_upload
|
||||
vars:
|
||||
tripleo_overcloud_image_upload_debug: "{{ images_debug }}"
|
||||
tripleo_overcloud_image_upload_os_cloud: undercloud
|
||||
tripleo_overcloud_image_upload_image_path: "{{ tripleo_overcloud_image_build_output_directory }}"
|
||||
when: upload_images|bool
|
@ -1,93 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Overcloud post-installation playbook
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook to execute post-installation tasks.
|
||||
|
||||
###############################################################################
|
||||
|
||||
- hosts: undercloud
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
flavors:
|
||||
- name: m1.tiny
|
||||
ram: 512
|
||||
disk: 0
|
||||
vcpus: 1
|
||||
- name: m1.smaller
|
||||
ram: 1024
|
||||
disk: 0
|
||||
vcpus: 1
|
||||
- name: m1.small
|
||||
ram: 2048
|
||||
disk: 10
|
||||
vcpus: 1
|
||||
- name: m1.medium
|
||||
ram: 3072
|
||||
disk: 10
|
||||
vcpus: 2
|
||||
- name: m1.large
|
||||
ram: 8192
|
||||
disk: 10
|
||||
vcpus: 4
|
||||
- name: m1.xlarge
|
||||
ram: 8192
|
||||
disk: 10
|
||||
vcpus: 8
|
||||
networks:
|
||||
- name: public
|
||||
state: present
|
||||
gateway_ip: 10.1.1.1
|
||||
subnet_range: 10.1.1.0/24
|
||||
external: true
|
||||
- name: provider
|
||||
state: present
|
||||
gateway_ip: 10.9.101.254
|
||||
subnet_range: 10.9.101.0/24
|
||||
external: true
|
||||
- name: private
|
||||
state: present
|
||||
gateway_ip: 10.1.2.1
|
||||
subnet_range: 10.1.2.0/24
|
||||
external: false
|
||||
|
||||
stack_name: overcloud
|
||||
|
||||
gather_facts: true
|
||||
tasks:
|
||||
- name: Get overcloud status
|
||||
import_role:
|
||||
name: tripleo_overcloud_status
|
||||
|
||||
- name: Run all overcloud post installation tasks if conditions are met.
|
||||
block:
|
||||
- name: Create flavor
|
||||
os_nova_flavor:
|
||||
state: present
|
||||
name: "{{ item.name }}"
|
||||
ram: "{{ item.ram }}"
|
||||
vcpus: "{{ item.vcpus }}"
|
||||
disk: "{{ item.disk }}"
|
||||
cloud: "{{ stack_name }}"
|
||||
with_items: "{{ flavors }}"
|
||||
|
||||
- name: Create networks
|
||||
os_network:
|
||||
state: present
|
||||
name: "{{ item.name }}-network"
|
||||
external: "{{ item.external }}"
|
||||
cloud: "{{ stack_name }}"
|
||||
with_items: "{{ networks }}"
|
||||
|
||||
- name: Create subnet
|
||||
os_subnet:
|
||||
state: present
|
||||
network_name: "{{ item.name }}-network"
|
||||
name: "{{ item.name }}-subnet"
|
||||
cidr: "{{ item.subnet_range }}"
|
||||
gateway_ip: "{{ item.gateway_ip }}"
|
||||
cloud: "{{ stack_name }}"
|
||||
with_items: "{{ networks }}"
|
||||
when: tripleo_overcloud_status_output | regex_search('DEPLOY_SUCCESS')
|
@ -1,113 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Standalone installation playbook
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook to run a simple standalone node deploymend on an
|
||||
# existing provisioned system.
|
||||
#
|
||||
###############################################################################
|
||||
- hosts: standalone
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
standalone_debug: true
|
||||
standalone_dns:
|
||||
- 1.1.1.1
|
||||
- 8.8.8.8
|
||||
standalone_hostname: 'standalone.localdomain'
|
||||
standalone_ip: 192.168.24.2
|
||||
standalone_control_virtual_ip: 192.168.24.3
|
||||
standalone_cidr: 24
|
||||
standalone_gateway:
|
||||
standalone_local_mtu: 1400
|
||||
standalone_local_interface: eth1
|
||||
standalone_enable_selinux: false
|
||||
standalone_virt_type: qemu
|
||||
|
||||
tasks:
|
||||
- name: Set hostname
|
||||
hostname:
|
||||
name: "{{ standalone_hostname }}"
|
||||
become: true
|
||||
|
||||
- name: Configure tripleo repositories
|
||||
include_role:
|
||||
name: tripleo_repos
|
||||
vars:
|
||||
tripleo_repos_debug: "{{ standalone_debug }}"
|
||||
when:
|
||||
- ansible_facts.distribution == 'CentOS'
|
||||
|
||||
- name: Ensure system is up to date
|
||||
yum:
|
||||
name: '*'
|
||||
state: latest # noqa 403
|
||||
register: packages_updated
|
||||
become: true
|
||||
|
||||
- name: Reboot if necessary
|
||||
reboot:
|
||||
become: true
|
||||
when: packages_updated is changed
|
||||
|
||||
- name: Install tripleoclient
|
||||
block:
|
||||
- name: install python2 tripleoclient
|
||||
yum:
|
||||
name: python-tripleoclient
|
||||
state: installed
|
||||
become: true
|
||||
when: ansible_facts.distribution_major_version|int <= 7
|
||||
|
||||
- name: install python3 tripleoclient
|
||||
package:
|
||||
name: python3-tripleoclient
|
||||
state: present
|
||||
become: true
|
||||
when: ansible_facts.distribution_major_version|int >= 8
|
||||
|
||||
- name: Generate parameters.yaml
|
||||
copy:
|
||||
content: |
|
||||
parameter_defaults:
|
||||
CloudName: {{ standalone_hostname }}
|
||||
{% if standalone_gateway | default(False) -%}
|
||||
ControlPlaneStaticRoutes:
|
||||
- ip_netmask: 0.0.0.0/0
|
||||
next_hop: {{ standalone_gateway }}
|
||||
default: true
|
||||
{% endif -%}
|
||||
Debug: {{ standalone_debug|bool }}
|
||||
DeploymentUser: {{ ansible_env.USER }}
|
||||
DnsServers: {{ standalone_dns }}
|
||||
KernelIpNonLocalBind: 1
|
||||
NeutronPublicInterface: {{ standalone_local_interface }}
|
||||
NeutronBridgeMappings: datacenter:br-ctlplane
|
||||
NeutronPhysicalBridge: br-ctlplane
|
||||
StandaloneEnableRoutedNetworks: false
|
||||
StandaloneHomeDir: {{ ansible_env.HOME }}
|
||||
InterfaceLocalMtu: {{ standalone_local_mtu }}
|
||||
NovaComputeLibvirtType: {{ standalone_virt_type }}
|
||||
dest: "{{ ansible_env.HOME }}/parameters.yaml"
|
||||
mode: '0644'
|
||||
|
||||
- name: Generate ContainerImagePrepare
|
||||
include_role:
|
||||
name: tripleo_container_image_prepare_default
|
||||
vars:
|
||||
tripleo_container_image_prepare_default_output_env_file: "{{ ansible_env.HOME }}/container-image-prepare.yaml"
|
||||
|
||||
- name: Run standalone deployment
|
||||
include_role:
|
||||
name: tripleo_deploy
|
||||
vars:
|
||||
tripleo_deploy_debug: "{{ standalone_debug }}"
|
||||
tripleo_deploy_templates: /usr/share/openstack-tripleo-heat-templates
|
||||
tripleo_deploy_local_ip: "{{ standalone_ip }}/{{ standalone_cidr }}"
|
||||
tripleo_deploy_roles_file: /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml
|
||||
tripleo_deploy_environment_files:
|
||||
- /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml
|
||||
- "{{ ansible_env.HOME }}/container-image-prepare.yaml"
|
||||
- "{{ ansible_env.HOME }}/parameters.yaml"
|
||||
tripleo_deploy_output_dir: "{{ ansible_env.HOME }}"
|
@ -1,104 +0,0 @@
|
||||
---
|
||||
###############################################################################
|
||||
# Undercloud installation playbook
|
||||
#
|
||||
# Description:
|
||||
# This is a basic playbook to install a simple undercloud on an already
|
||||
# provisioned system.
|
||||
#
|
||||
###############################################################################
|
||||
- hosts: undercloud
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
install_debug: true
|
||||
undercloud_hostname: 'undercloud.localdomain'
|
||||
undercloud_local_mtu: 1400
|
||||
undercloud_local_interface: eth1
|
||||
undercloud_enable_selinux: false
|
||||
|
||||
tasks:
|
||||
- name: Set hostname
|
||||
hostname:
|
||||
name: "{{ undercloud_hostname }}"
|
||||
become: true
|
||||
|
||||
- name: Configure tripleo repositories
|
||||
include_role:
|
||||
name: tripleo_repos
|
||||
when:
|
||||
- ansible_facts.distribution == 'CentOS'
|
||||
|
||||
- name: Ensure system is up to date
|
||||
yum:
|
||||
name: '*'
|
||||
state: latest # noqa 403
|
||||
register: packages_updated
|
||||
become: true
|
||||
|
||||
- name: Reboot if necessary
|
||||
reboot:
|
||||
become: true
|
||||
when: packages_updated is changed
|
||||
|
||||
- name: Install tripleoclient
|
||||
block:
|
||||
- name: install python2 tripleoclient
|
||||
yum:
|
||||
name: python-tripleoclient
|
||||
state: installed
|
||||
become: true
|
||||
when: ansible_facts.distribution_major_version|int <= 7
|
||||
|
||||
- name: install python3 tripleoclient
|
||||
package:
|
||||
name: python3-tripleoclient
|
||||
state: present
|
||||
become: true
|
||||
when: ansible_facts.distribution_major_version|int >= 8
|
||||
|
||||
- name: Copy sample undercloud.conf
|
||||
copy:
|
||||
src: /usr/share/python-tripleoclient/undercloud.conf.sample
|
||||
dest: "{{ ansible_env.HOME }}/undercloud.conf"
|
||||
remote_src: true
|
||||
mode: '0644'
|
||||
|
||||
- name: Configure undercloud.conf
|
||||
ini_file:
|
||||
path: "{{ ansible_env.HOME }}/undercloud.conf"
|
||||
section: "{{ item.section }}"
|
||||
option: "{{ item.option }}"
|
||||
value: "{{ item.value }}"
|
||||
mode: '0644'
|
||||
loop:
|
||||
- {'section': 'DEFAULT', 'option': 'undercloud_debug', 'value': "{{ install_debug }}"}
|
||||
- {'section': 'DEFAULT', 'option': 'local_mtu', 'value': "{{ undercloud_local_mtu }}"}
|
||||
- {'section': 'DEFAULT', 'option': 'local_interface', 'value': "{{ undercloud_local_interface }}"}
|
||||
- {'section': 'DEFAULT', 'option': 'undercloud_enable_selinux', 'value': "{{ undercloud_enable_selinux }}"}
|
||||
- {'section': 'ctlplane-subnet', 'option': 'masquerade', 'value': 'true'}
|
||||
|
||||
# Example configuration copy/modification with config_template module
|
||||
# (https://opendev.org/openstack/ansible-config_template)
|
||||
#
|
||||
# - name: Configure undercloud.conf
|
||||
# config_template:
|
||||
# src: /usr/share/python-tripleoclient/undercloud.conf.sample
|
||||
# dest: "{{ ansible_env.HOME }}/undercloud.conf"
|
||||
# remote_src: true
|
||||
# render_template: false
|
||||
# config_type: ini
|
||||
# config_overrides:
|
||||
# 'DEFAULT':
|
||||
# undercloud_debug: "{{ install_debug }}"
|
||||
# local_mtu: "{{ undercloud_local_mtu }}"
|
||||
# local_interface: "{{ undercloud_local_interface }}"
|
||||
# undercloud_enable_selinux: "{{ undercloud_enable_selinux }}"
|
||||
# 'ctlplane-subnet':
|
||||
# masquerade: true
|
||||
|
||||
- name: Install undercloud
|
||||
include_role:
|
||||
name: tripleo_undercloud_install
|
||||
vars:
|
||||
tripleo_undercloud_install_debug: "{{ install_debug }}"
|
@ -1,31 +0,0 @@
|
||||
# Collections Plugins Directory
|
||||
|
||||
This directory can be used to ship various plugins inside an Ansible collection. Each plugin is placed in a folder that
|
||||
is named after the type of plugin it is in. It can also include the `module_utils` and `modules` directory that
|
||||
would contain module utils and modules respectively.
|
||||
|
||||
Here is an example directory of the majority of plugins currently supported by Ansible:
|
||||
|
||||
```
|
||||
└── plugins
|
||||
├── action
|
||||
├── become
|
||||
├── cache
|
||||
├── callback
|
||||
├── cliconf
|
||||
├── connection
|
||||
├── filter
|
||||
├── httpapi
|
||||
├── inventory
|
||||
├── lookup
|
||||
├── module_utils
|
||||
├── modules
|
||||
├── netconf
|
||||
├── shell
|
||||
├── strategy
|
||||
├── terminal
|
||||
├── test
|
||||
└── vars
|
||||
```
|
||||
|
||||
A full list of plugin types can be found at [Working With Plugins](https://docs.ansible.com/ansible/2.9/plugins/plugins.html).
|
@ -1,164 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
__metaclass__ = type
|
||||
|
||||
from ansible.errors import AnsibleActionFail
|
||||
from ansible.errors import AnsibleActionSkip
|
||||
from ansible.module_utils.parsing.convert_bool import boolean
|
||||
from ansible.plugins.action import ActionBase
|
||||
from datetime import datetime
|
||||
|
||||
import yaml
|
||||
|
||||
ANSIBLE_METADATA = {
|
||||
'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'
|
||||
}
|
||||
|
||||
DOCUMENTATION = """
|
||||
module: timestamp_file
|
||||
author:
|
||||
- "Alex Schultz (@mwhahaha)"
|
||||
version_added: '2.9'
|
||||
short_description: Take a copy of a file and append a timestamp
|
||||
notes: []
|
||||
description:
|
||||
- Take a copy of a file and append a timestamp
|
||||
requirements:
|
||||
- None
|
||||
options:
|
||||
path:
|
||||
description:
|
||||
- Path to file
|
||||
type: str
|
||||
remove:
|
||||
description:
|
||||
- Remove original file
|
||||
default: False
|
||||
type: bool
|
||||
force:
|
||||
description:
|
||||
- Overwrite destination file if it exists
|
||||
default: False
|
||||
type: bool
|
||||
date_format:
|
||||
description:
|
||||
- Timestamp format to use when appending to destination file
|
||||
default: "%Y-%m-%d_%H:%M:%S"
|
||||
type: str
|
||||
"""
|
||||
EXAMPLES = """
|
||||
- name: Snapshot a file
|
||||
timestamp_file:
|
||||
path: /tmp/file.log
|
||||
- name: Snapshot a file and remove original
|
||||
timestamp_file:
|
||||
path: /tmp/file.log
|
||||
remove: True
|
||||
"""
|
||||
RETURN = """
|
||||
dest:
|
||||
description: Path to the new file
|
||||
returned: if changed
|
||||
type: str
|
||||
sample: "/tmp/file.log.2017-07-27_16:39:00"
|
||||
"""
|
||||
|
||||
|
||||
class ActionModule(ActionBase):
|
||||
|
||||
_VALID_ARGS = yaml.safe_load(DOCUMENTATION)['options']
|
||||
|
||||
def _get_args(self):
|
||||
missing = []
|
||||
args = {}
|
||||
|
||||
for option, vals in self._VALID_ARGS.items():
|
||||
if 'default' not in vals:
|
||||
if self._task.args.get(option, None) is None:
|
||||
missing.append(option)
|
||||
continue
|
||||
args[option] = self._task.args.get(option)
|
||||
else:
|
||||
args[option] = self._task.args.get(option, vals['default'])
|
||||
|
||||
if missing:
|
||||
raise AnsibleActionFail('Missing required parameters: {}'.format(
|
||||
', '.join(missing)))
|
||||
return args
|
||||
|
||||
def _get_date_string(self, date_format):
|
||||
return datetime.now().strftime(date_format)
|
||||
|
||||
def run(self, tmp=None, task_vars=None):
|
||||
if task_vars is None:
|
||||
task_vars = dict()
|
||||
result = super(ActionModule, self).run(tmp, task_vars)
|
||||
del tmp
|
||||
# parse args
|
||||
args = self._get_args()
|
||||
|
||||
changed = False
|
||||
src_path = args['path']
|
||||
|
||||
# check if source file exists
|
||||
file_stat = self._execute_module(
|
||||
module_name='stat',
|
||||
module_args=dict(path=src_path),
|
||||
task_vars=task_vars
|
||||
)
|
||||
timestamp = self._get_date_string(args['date_format'])
|
||||
dest_path = '.'.join([src_path, timestamp])
|
||||
if file_stat.get('stat', {}).get('exists', False) is False:
|
||||
# file doesn't exist so we're done
|
||||
raise AnsibleActionSkip("{} does not exist.".format(src_path))
|
||||
|
||||
# check if destination file exists
|
||||
file_stat = self._execute_module(
|
||||
module_name='stat',
|
||||
module_args=dict(path=dest_path),
|
||||
task_vars=task_vars
|
||||
)
|
||||
if (not args['force']
|
||||
and file_stat.get('stat', {}).get('exists', False) is True):
|
||||
raise AnsibleActionFail("Destination file {} exists. Use force "
|
||||
"option to proceed.".format(dest_path))
|
||||
|
||||
# copy file out of the way
|
||||
copy_result = self._execute_module(
|
||||
module_name='copy',
|
||||
module_args=dict(src=src_path, dest=dest_path, remote_src=True),
|
||||
task_vars=task_vars
|
||||
)
|
||||
if copy_result.get('failed', False):
|
||||
return copy_result
|
||||
changed = True
|
||||
|
||||
if boolean(args.get('remove', False), strict=False):
|
||||
# cleanup original file as requested
|
||||
file_result = self._execute_module(
|
||||
module_name='file',
|
||||
module_args=dict(path=src_path, state='absent'),
|
||||
task_vars=task_vars
|
||||
)
|
||||
if file_result.get('failed', False):
|
||||
return file_result
|
||||
|
||||
result['dest'] = copy_result['dest']
|
||||
result['changed'] = changed
|
||||
return result
|
@ -1,51 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
try: # py3
|
||||
from shlex import quote
|
||||
except ImportError: # py2
|
||||
from pipes import quote
|
||||
|
||||
|
||||
class FilterModule(object):
|
||||
def filters(self):
|
||||
return {
|
||||
'shell_arg_list': self.shell_arg_list
|
||||
}
|
||||
|
||||
def _add_to_list(self, list_item, arg, parameter):
|
||||
val = quote(arg)
|
||||
if parameter:
|
||||
list_item.append("{} {}".format(parameter, val))
|
||||
else:
|
||||
list_item.append(val)
|
||||
|
||||
def shell_arg_list(self, arg, parameter=None):
|
||||
# Nothing was passed into this, just return an empty string
|
||||
if not arg:
|
||||
return ''
|
||||
if not isinstance(arg, (list, tuple)):
|
||||
arg = [arg]
|
||||
return_value = []
|
||||
for a in arg:
|
||||
if isinstance(a, str) and a.strip():
|
||||
self._add_to_list(return_value, a, parameter)
|
||||
elif isinstance(a, (list, tuple)):
|
||||
# Deal with nested list items.
|
||||
for item in a:
|
||||
if item.strip():
|
||||
self._add_to_list(return_value, item, parameter)
|
||||
return ' '.join(return_value)
|
@ -1,144 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2020 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
__metaclass__ = type
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
|
||||
import os
|
||||
import yaml
|
||||
|
||||
try: # py3
|
||||
from shlex import quote
|
||||
except ImportError: # py2
|
||||
from pipes import quote
|
||||
|
||||
ANSIBLE_METADATA = {
|
||||
'metadata_version': '1.1',
|
||||
'status': ['preview'],
|
||||
'supported_by': 'community'
|
||||
}
|
||||
|
||||
DOCUMENTATION = """
|
||||
---
|
||||
module: tripleo_shell_script
|
||||
author:
|
||||
- Alex Schultz <aschultz@redhat.com>
|
||||
version_added: '2.8'
|
||||
short_description: Writes out a shell script with environment vars and command
|
||||
notes: []
|
||||
description:
|
||||
- This module will write out a bash script from a shell environment dict
|
||||
and a commandline string.
|
||||
options:
|
||||
dest:
|
||||
description:
|
||||
- Destination file path for the output shell script.
|
||||
required: True
|
||||
type: str
|
||||
shell_command:
|
||||
description:
|
||||
- Shell command that will be run
|
||||
required: True
|
||||
type: str
|
||||
shell_environment:
|
||||
description:
|
||||
- Environment dictionary for the shell execution.
|
||||
default: {}
|
||||
required: False
|
||||
type: dict
|
||||
"""
|
||||
|
||||
EXAMPLES = """
|
||||
- name: Undercloud install
|
||||
tripleo_shell_script:
|
||||
dest: /home/stack/undercloud_install.sh
|
||||
shell_command: "/usr/bin/openstack undercloud install"
|
||||
shell_environment: {}
|
||||
- name: Image upload
|
||||
tripleo_shell_script:
|
||||
dest: /home/stack/overcloud_image_upload.sh
|
||||
shell_command: "/usr/bin/openstack overcloud image upload"
|
||||
shell_environment:
|
||||
OS_CLOUD: undercloud
|
||||
"""
|
||||
|
||||
RETURN = """
|
||||
"""
|
||||
|
||||
_SHELL_HEADER = """#!/bin/bash
|
||||
# This file is managed by ansible
|
||||
set -xeo pipefail
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class TripleoShellScript(object):
|
||||
"""Notes about this module.
|
||||
|
||||
This module will write out a bash script from the provided parameters.
|
||||
"""
|
||||
|
||||
def __init__(self, module, results):
|
||||
|
||||
self.module = module
|
||||
self.results = results
|
||||
|
||||
# parse args
|
||||
args = self.module.params
|
||||
|
||||
# Set parameters
|
||||
dest = args['dest']
|
||||
shell_command = args['shell_command']
|
||||
shell_environment = args.get('shell_environment', {})
|
||||
|
||||
if os.path.exists(dest):
|
||||
self.module.debug('File exists, truncating %s' % dest)
|
||||
|
||||
try:
|
||||
with open(dest, 'w') as fh:
|
||||
fh.write(_SHELL_HEADER)
|
||||
for k, v in shell_environment.items():
|
||||
if v:
|
||||
val = quote(str(v))
|
||||
fh.write("export %(key)s=%(val)s\n" % {'key': k,
|
||||
'val': val})
|
||||
fh.write(shell_command)
|
||||
fh.write("\n")
|
||||
os.chmod(dest, 0o755)
|
||||
self.results['changed'] = True
|
||||
except Exception as e:
|
||||
self.results['failed'] = True
|
||||
self.results['error'] = str(e)
|
||||
self.results['msg'] = ("Unable to output shell script %s: %s" % (
|
||||
dest, e))
|
||||
|
||||
self.module.exit_json(**self.results)
|
||||
|
||||
|
||||
def main():
|
||||
module = AnsibleModule(
|
||||
argument_spec=yaml.safe_load(DOCUMENTATION)['options'],
|
||||
supports_check_mode=False
|
||||
)
|
||||
results = dict(
|
||||
changed=False
|
||||
)
|
||||
TripleoShellScript(module, results)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
@ -1,270 +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.
|
||||
#
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'openstackdocstheme',
|
||||
'reno.sphinxext',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'tripleo-operator-ansible Release Notes'
|
||||
copyright = u'2020, TripleO Developers'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = ''
|
||||
# The short X.Y version.
|
||||
version = ''
|
||||
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = []
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
#default_role = None
|
||||
|
||||
# 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
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'native'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
# If true, keep warnings as "system message" paragraphs in the built documents.
|
||||
#keep_warnings = False
|
||||
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'openstackdocs'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#html_theme_options = {}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
# directly to the root of the documentation.
|
||||
#html_extra_path = []
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'tripleo-operator-ansibleReleaseNotesdoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#'preamble': '',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
('index', 'tripleo-operator-ansibleReleaseNotes.tex', u'tripleo-operator-ansible Release Notes Documentation',
|
||||
u'2020, TripleO Developers', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'tripleo-operator-ansiblereleasenotes', u'tripleo-operator-ansible Release Notes Documentation',
|
||||
[u'2020, TripleO Developers'], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
('index', 'tripleo-operator-ansibleReleaseNotes', u'tripleo-operator-ansible Release Notes Documentation',
|
||||
u'2020, TripleO Developers', 'tripleo-operator-ansibleReleaseNotes', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#texinfo_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#texinfo_domain_indices = True
|
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||
#texinfo_show_urls = 'footnote'
|
||||
|
||||
# If true, do not generate a @detailmenu in the "Top" node's menu.
|
||||
#texinfo_no_detailmenu = False
|
||||
|
||||
# -- Options for Internationalization output ------------------------------
|
||||
locale_dirs = ['locale/']
|
||||
|
||||
# openstackdocstheme options
|
||||
openstackdocs_repo_name = 'openstack/tripleo-operator-ansible'
|
||||
openstackdocs_auto_name = False
|
||||
openstackdocs_bug_project = 'tripleo'
|
||||
openstackdocs_bug_tag = 'documentation'
|
@ -1,18 +0,0 @@
|
||||
==================================================
|
||||
Welcome to tripleo-operator-ansible Release Notes!
|
||||
==================================================
|
||||
|
||||
Contents
|
||||
========
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
unreleased
|
||||
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`search`
|
@ -1,5 +0,0 @@
|
||||
============================
|
||||
Current Series Release Notes
|
||||
============================
|
||||
|
||||
.. release-notes::
|
@ -1,94 +0,0 @@
|
||||
tripleo-operator-ansible roles
|
||||
==============================
|
||||
|
||||
These roles wrap tripleo cli functions for use in automation.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Global Variables
|
||||
----------------
|
||||
|
||||
Accross the roles, there are a few variables that can be defined and would be
|
||||
consumed by default.
|
||||
|
||||
* `tripleo_os_cloud`: (String) OS_CLOUD name to use when a command requires authentication. By default this will be used to populate any role specific os_cloud variable that may be defined. If this is defined, it will take precedence over `tripleo_rc_file`.
|
||||
* `tripleo_rc_file`: (String) File path on the remote system that contains the authentication environment variables that will be used to perform actions that require authentication.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Example Playbooks
|
||||
-----------------
|
||||
|
||||
Example undercloud installation
|
||||
|
||||
```yaml
|
||||
---
|
||||
- hosts: undercloud
|
||||
gather_facts: true
|
||||
collections:
|
||||
- tripleo.operator
|
||||
tasks:
|
||||
- name: Create dummy interface
|
||||
command: ip link add prov type dummy
|
||||
become: true
|
||||
when: not 'prov' in ansible_facts.interfaces
|
||||
|
||||
- name: Set hostname
|
||||
hostname:
|
||||
name: 'undercloud.localdomain'
|
||||
become: true
|
||||
|
||||
- name: Configure tripleo repositories
|
||||
import_role:
|
||||
name: tripleo_repos
|
||||
|
||||
- name: Install python2 tripleoclient
|
||||
package:
|
||||
name: python2-tripleoclient
|
||||
state: present
|
||||
become: true
|
||||
when: ansible_distribution_major_version|int <= 7
|
||||
|
||||
- name: Install python3 tripleoclient
|
||||
package:
|
||||
name: python3-tripleoclient
|
||||
state: present
|
||||
become: true
|
||||
when: ansible_distribution_major_version|int >= 8
|
||||
|
||||
# This uses https://opendev.org/openstack/ansible-config_template
|
||||
- name: Generate undercloud.conf
|
||||
become: True
|
||||
config_template:
|
||||
src: /usr/share/python-tripleoclient/undercloud.conf.sample
|
||||
dest: "{{ ansible_env.HOME }}/undercloud.conf"
|
||||
remote_src: true
|
||||
render_template: false
|
||||
config_overrides:
|
||||
'DEFAULT':
|
||||
undercloud_debug: true
|
||||
enable_telemetry: false
|
||||
local_mtu: 1400
|
||||
local_interface: prov
|
||||
undercloud_enable_selinux: false
|
||||
'ctlplane-subnet':
|
||||
masquerade: true
|
||||
config_type: ini
|
||||
|
||||
- name: Install undercloud
|
||||
import_role:
|
||||
name: tripleo_undercloud_install
|
||||
vars:
|
||||
tripleo_undercloud_install_debug: true
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Apache-2.0
|
@ -1,44 +0,0 @@
|
||||
test_molecule_prep
|
||||
==================
|
||||
|
||||
A role to do collection install for molecule testing. The role assumes it's being
|
||||
run from a molecule path.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
* `test_module_prep_collections_build_root`: (String) Path a directory to output the collection build to. Default: "{{ ansible_env.HOME }}/collection-buildroot"
|
||||
* `test_module_prep_execution_root`: (String) Path to the directory where the build action should run in. Default: '../../../..'
|
||||
|
||||
Output Variables
|
||||
----------------
|
||||
|
||||
None.
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Example install execution playbook
|
||||
|
||||
```yaml
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Do molecule prep actions
|
||||
import_role:
|
||||
name: test_molecule_prep
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Apache-2.0
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
# defaults file for test_molecule_prep
|
||||
test_molecule_prep_collections_build_root: "{{ ansible_env.HOME }}/collection-buildroot"
|
||||
test_molecule_prep_execution_root: "../../../.."
|
@ -1,44 +0,0 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
galaxy_info:
|
||||
role_name: test_molecule_prep
|
||||
namespace: openstack
|
||||
author: OpenStack
|
||||
description: TripleO Operator Role -- test_molecule_prep
|
||||
company: Red Hat
|
||||
license: Apache-2.0
|
||||
min_ansible_version: 2.8
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
platforms:
|
||||
- name: CentOS
|
||||
versions:
|
||||
- 7
|
||||
- 8
|
||||
|
||||
galaxy_tags:
|
||||
- tripleo
|
||||
|
||||
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
dependencies: []
|
@ -1,13 +0,0 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
tasks:
|
||||
|
||||
- name: Test known collection filter
|
||||
set_fact:
|
||||
test_var: "{{ 'test' | tripleo.operator.shell_arg_list(parameter='--test') }}"
|
||||
|
||||
- name: Assert value
|
||||
assert:
|
||||
that:
|
||||
- test_var == "--test test"
|
@ -1,19 +0,0 @@
|
||||
---
|
||||
driver:
|
||||
name: delegated
|
||||
options:
|
||||
managed: false
|
||||
ansible_connection_options:
|
||||
ansible_connection: local
|
||||
log: true
|
||||
platforms:
|
||||
- name: instance
|
||||
provisioner:
|
||||
name: ansible
|
||||
scenario:
|
||||
name: default
|
||||
test_sequence:
|
||||
- syntax
|
||||
- prepare
|
||||
- converge
|
||||
- verify
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
- name: Prepare
|
||||
hosts: all
|
||||
tasks:
|
||||
|
||||
- name: Include molecule prep
|
||||
include_role:
|
||||
name: test_molecule_prep
|
@ -1,12 +0,0 @@
|
||||
---
|
||||
- name: Build collection
|
||||
shell: >-
|
||||
pwd && ansible-galaxy collection build --force --output-path {{ test_molecule_prep_collections_build_root }}
|
||||
args:
|
||||
chdir: "{{ test_molecule_prep_execution_root }}"
|
||||
changed_when: true
|
||||
|
||||
- name: Install collection
|
||||
shell: >-
|
||||
ansible-galaxy collection install --force {{ test_molecule_prep_collections_build_root }}/tripleo-operator*
|
||||
changed_when: true
|
@ -1 +0,0 @@
|
||||
localhost
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
- hosts: localhost
|
||||
roles:
|
||||
- test_molecule_prep
|
@ -1,92 +0,0 @@
|
||||
tripleo_ceph_deploy
|
||||
=====================
|
||||
|
||||
A role to deploy Ceph on overcloud nodes before deploying the overcloud.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
* `tripleo_ceph_deploy_become`: (Boolean) Execute command with escalated privileges. Default: false
|
||||
* `tripleo_ceph_deploy_cluster`: (String) Name of the Ceph cluster. If set to 'foo', then the files /etc/ceph/<FSID>/foo.conf and /etc/ceph/<FSID>/foo.client.admin.keyring will be created. Otherwise these files will use the name 'ceph'. Changing this means changing command line calls too, e.g. 'ceph health' will become 'ceph --cluster foo health' unless export CEPH_ARGS='--cluster foo' is used. If unset `openenstack overcloud ceph deploy` will default this value to 'ceph'.
|
||||
* `tripleo_ceph_deploy_crush_hierarchy`: (String) Path to an existing crush hierarchy spec file.
|
||||
* `tripleo_ceph_deploy_debug`: (Boolean) Flag to print out the command that is run. Default: false
|
||||
* `tripleo_ceph_deploy_deployed_baremetal`: (String) Path to the environment file output from "openstack overcloud node provision". This argument may be excluded only if tripleo_ceph_deploy_standalone is True.
|
||||
* `tripleo_ceph_deploy_spec`: (String) Path to an existing Ceph spec file. If not provided a spec will be generated automatically based on `tripleo_ceph_deploy_roles_file` and `tripleo_ceph_deploy_deployed_baremetal`. The `tripleo_ceph_deploy_deployed_baremetal` parameter is optional only if `tripleo_ceph_deploy_spec` is used.
|
||||
* `tripleo_ceph_user_ssh_user`: (String) Name of the SSH user used by cephadm. Warning: if this option is used, it must be used consistently for every 'openstack overcloud ceph' call. Defaults to 'ceph-admin'. (default=Env: CEPHADM_SSH_USER)
|
||||
* `tripleo_ceph_deploy_generate_scripts_only`: (Boolean) Do not run the actual command - to be used in conjunction with `tripleo_ceph_deploy_generate_scripts`. By default uses the value of `tripleo_generate_scripts_only` or False if `tripleo_generate_scripts_only` is not defined.
|
||||
* `tripleo_ceph_deploy_generate_scripts`: (Boolean) Write out a shell script that can be used to reproduce the command being executed. By default uses the value of `tripleo_generate_scripts` or False if `tripleo_generate_scripts` is not defined.
|
||||
* `tripleo_ceph_deploy_mon_ip`: (String) IP address of the first Ceph monitor. If not set, an IP from the Ceph public_network of a server with the mon label from the Ceph spec is used. IP must already be active on server. Only supported if tripleo_ceph_deploy_standalone is True.
|
||||
* `tripleo_ceph_deploy_osd_spec`: (String) Path to an existing OSD spec file. When the Ceph spec file is generated its OSD spec defaults to {data_devices: {all: true}} for all service_type osd. Use this parameter to override the data_devices value inside the Ceph spec file.
|
||||
* `tripleo_ceph_deploy_overwrite`: (Boolean) Flag to skip yes/no prompts about overwriting the deployed_ceph.yaml from a previous run. Default: false
|
||||
* `tripleo_ceph_deploy_poll`: (Integer) Number of seconds to wait between each checks to see if the deployment command has completed. Default: 10
|
||||
* `tripleo_ceph_deploy_roles_file`: (String) Path to an alternative roles_data.yaml. Used to decide which node gets which Ceph mon, mgr, or osd service based on the node's role and `tripleo_ceph_deploy_deployed_baremetal`.
|
||||
* `tripleo_ceph_deploy_stack`: Name or ID of heat stack. Used to find the working directory. If unset `openenstack overcloud ceph deploy` will default this value to 'overcloud'.
|
||||
* `tripleo_ceph_deploy_standalone`: (Boolean) Use single host Ansible inventory. Used only for development or testing environments. Used for single server development or testing environments. Default: false
|
||||
* `tripleo_ceph_deploy_timeout_arg`: (Integer) Number in minutes for the deployment to run. Default: 90
|
||||
* `tripleo_ceph_deploy_timeout`: (Integer) Number in seconds to wait for the ansible execution of the deployment command to finish. This should be larger than the `tripleo_ceph_deploy_timeout_arg` value. Default: 5700
|
||||
* `tripleo_ceph_deploy_working_dir`: (String) The working directory for the deployment where all input, output, and generated files will be stored. Defaults to "$HOME/overcloud-deploy/<stack>"
|
||||
* `tripleo_ceph_deploy_output:`: (String) The path to the output environment file describing the Ceph deployment to pass to the overcloud deployment.
|
||||
* `tripleo_ceph_deploy_skip_user_create`: (Boolean) Do not create the cephadm SSH user. This user is necessary to deploy but may be created in a separate step via 'openstack overcloud ceph user enable'. Default: false
|
||||
* `tripleo_ceph_deploy_skip_hosts_config`: (Boolean) Do not update /etc/hosts on deployed servers. By default this is configured so overcloud nodes can reach each other and the undercloud by name. Default: false
|
||||
* `tripleo_ceph_deploy_skip_container_registry_config`: (Boolean) Do not update /etc/containers/registries.conf on deployed servers. By default this is configured so overcloud nodes can pull containers from the undercloud registry. Default: false
|
||||
* `tripleo_ceph_deploy_network_data`: (String) Path to an alternative network_data.yaml. Used to define Ceph public_network and cluster_network. This file is searched for networks with name_lower values of storage and storage_mgmt. If none found, then search repeats but with service_net_map_replace in place of name_lower. Use `tripleo_ceph_deploy_public_network_name` or `tripleo_ceph_deploy_cluster_network_name` options to override name of the searched for network from storage or storage_mgmt to a customized name. If network_data has no storage networks, both default to ctlplane. If found network has >1 subnet, they are all combined (for routed traffic). If a network has ipv6 true, then the ipv6_subnet is retrieved instead of the ip_subnet, and the Ceph global ms_bind_ipv4 is set false and the ms_bind_ipv6 is set true. Use `tripleo_ceph_deploy_config` to override these defaults if desired.
|
||||
* `tripleo_ceph_deploy_public_network_name`: (String) Name of the network defined in `tripleo_ceph_deploy_network_data` which should be used for the Ceph public_network. If undefined the client defaults this value to 'storage'.
|
||||
* `tripleo_ceph_deploy_cluster_network_name`: (String) Name of the network defined in `tripleo_ceph_deploy_network_data` which should be used for the Ceph cluster_network. If undefined the client defaults this value to 'storage_mgmt'.
|
||||
* `tripleo_ceph_deploy_config`: (String) Path to an existing ceph.conf with settings to be assimilated by the new cluster via 'cephadm bootstrap --config'
|
||||
* `tripleo_ceph_deploy_cephadm_extra_args`: (String) String of extra parameters to pass cephadm. E.g. if this parameter is set to '--log-to-file --skip-prepare-host', then cephadm boostrap will use those options. Warning: requires `tripleo_ceph_deploy_force` to be true as not all possible options ensure a functional deployment.
|
||||
* `tripleo_ceph_deploy_force`: (Boolean) Run command regardless of consequences. Default: false
|
||||
* `tripleo_ceph_deploy_ceph_vip`: (String) Path to an existing Ceph services/network mapping file.
|
||||
* `tripleo_ceph_deploy_daemons`: (String) Path to an existing Ceph daemon options definition.
|
||||
* `tripleo_ceph_deploy_single_host_defaults`: (Boolean) Adjust configuration defaults to suit a single-host Ceph cluster. Default: false
|
||||
* `tripleo_ceph_deploy_container_image_prepare`: (String) Path to an alternative container_image_prepare_defaults.yaml. Used to control which Ceph container is pulled by cephadm via the ceph_namespace, ceph_image, and ceph_tag variables in addition to registry authentication via ContainerImageRegistryCredentials.
|
||||
* `tripleo_ceph_deploy_container_cephadm_default`: (Boolean) Use the default continer defined in cephadm instead of container_image_prepare_defaults.yaml. If this is used, 'cephadm bootstrap' is not passed the --image parameter. Default: false
|
||||
* `tripleo_ceph_deploy_container_namespace`: (String) Override the namespace value set via `tripleo_ceph_deploy_continer_image_prepare`. E.g. quay.io/ceph.
|
||||
* `tripleo_ceph_deploy_container_image`: (String) Override the image value set via `tripleo_ceph_deploy_continer_image_prepare`. E.g. ceph.
|
||||
* `tripleo_ceph_deploy_container_tag`: (String) Override the tag value set via `tripleo_ceph_deploy_continer_image_prepare`. E.g. latest.
|
||||
* `tripleo_ceph_deploy_container_registry_url`: (String) Override the registry URL value set via `tripleo_ceph_deploy_continer_image_prepare`.
|
||||
* `tripleo_ceph_deploy_container_registry_username`: (String) Override the registry username value set via `tripleo_ceph_deploy_continer_image_prepare`.
|
||||
* `tripleo_ceph_deploy_container_registry_password`: (String) Override the registry password value set via `tripleo_ceph_deploy_continer_image_prepare`.
|
||||
|
||||
|
||||
Output Variables
|
||||
----------------
|
||||
|
||||
* `tripleo_ceph_deploy_output`: (String) The command standard output.
|
||||
* `tripleo_ceph_deploy_result`: (String) Ansible shell execution results
|
||||
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Example ceph spec playbook
|
||||
|
||||
```yaml
|
||||
- hosts: undercloud
|
||||
gather_facts: true
|
||||
tasks:
|
||||
- name: Deploy Ceph using 'openstack overcloud node provision' output
|
||||
include_role:
|
||||
name: tripleo_ceph_deploy
|
||||
vars:
|
||||
tripleo_ceph_deploy_debug: True
|
||||
tripleo_ceph_deploy_generate_scripts: True
|
||||
tripleo_ceph_deploy_overwrite: True
|
||||
tripleo_ceph_deploy_stack: overcloud
|
||||
tripleo_ceph_deploy_roles_file: /home/stack/custom_roles.yaml
|
||||
tripleo_ceph_deploy_deployed_baremetal: /home/stack/overcloud-baremetal-deployed.yaml
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Apache-2.0
|
@ -1,46 +0,0 @@
|
||||
---
|
||||
openstack_bin: openstack
|
||||
tripleo_ceph_deploy_become: false
|
||||
tripleo_ceph_deploy_cluster:
|
||||
tripleo_ceph_deploy_crush_hierarchy:
|
||||
tripleo_ceph_deploy_debug: false
|
||||
tripleo_ceph_deploy_deployed_baremetal:
|
||||
tripleo_ceph_deploy_spec:
|
||||
tripleo_ceph_deploy_generate_scripts: "{{ tripleo_generate_scripts | default(False) }}"
|
||||
tripleo_ceph_deploy_generate_scripts_only: "{{ tripleo_generate_scripts_only | default(False) }}"
|
||||
tripleo_ceph_deploy_mon_ip:
|
||||
tripleo_ceph_deploy_osd_spec:
|
||||
tripleo_ceph_deploy_overwrite: false
|
||||
tripleo_ceph_deploy_poll: 10
|
||||
tripleo_ceph_deploy_roles_file:
|
||||
tripleo_ceph_user_ssh_user: ceph-admin
|
||||
tripleo_ceph_deploy_stack:
|
||||
tripleo_ceph_deploy_standalone: false
|
||||
tripleo_ceph_deploy_timeout: 5700
|
||||
tripleo_ceph_deploy_timeout_arg: 90
|
||||
tripleo_ceph_deploy_working_dir:
|
||||
tripleo_ceph_deploy_output:
|
||||
tripleo_ceph_deploy_skip_user_create: false
|
||||
tripleo_ceph_deploy_skip_hosts_config: false
|
||||
tripleo_ceph_deploy_skip_container_registry_config: false
|
||||
tripleo_ceph_deploy_skip_ntp: false
|
||||
tripleo_ceph_deploy_network_data:
|
||||
tripleo_ceph_deploy_public_network_name:
|
||||
tripleo_ceph_deploy_cluster_network_name:
|
||||
tripleo_ceph_deploy_config:
|
||||
tripleo_ceph_deploy_cephadm_extra_args:
|
||||
tripleo_ceph_deploy_force: false
|
||||
tripleo_ceph_deploy_ceph_vip:
|
||||
tripleo_ceph_deploy_daemons:
|
||||
tripleo_ceph_deploy_single_host_defaults: false
|
||||
tripleo_ceph_deploy_ntp_server:
|
||||
tripleo_ceph_deploy_ntp_heat_env_file:
|
||||
tripleo_ceph_deploy_with_ntp: false
|
||||
tripleo_ceph_deploy_container_cephadm_default: false
|
||||
tripleo_ceph_deploy_container_image_prepare:
|
||||
tripleo_ceph_deploy_container_namespace:
|
||||
tripleo_ceph_deploy_container_image:
|
||||
tripleo_ceph_deploy_container_tag:
|
||||
tripleo_ceph_deploy_container_registry_url:
|
||||
tripleo_ceph_deploy_container_registry_username:
|
||||
tripleo_ceph_deploy_container_registry_password:
|
@ -1,45 +0,0 @@
|
||||
---
|
||||
# Copyright 2022 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
galaxy_info:
|
||||
role_name: tripleo_ceph_deploy
|
||||
namespace: openstack
|
||||
author: OpenStack
|
||||
description: TripleO Operator Role -- tripleo_ceph_deploy
|
||||
company: Red Hat
|
||||
license: Apache-2.0
|
||||
min_ansible_version: 2.8
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
platforms:
|
||||
- name: CentOS
|
||||
versions:
|
||||
- 7
|
||||
- 8
|
||||
- 9
|
||||
|
||||
galaxy_tags:
|
||||
- tripleo
|
||||
|
||||
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
dependencies: []
|
@ -1,30 +0,0 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
openstack_bin: echo
|
||||
tripleo_os_cloud: undercloud
|
||||
tripleo_ceph_deploy_run_debug: true
|
||||
tasks:
|
||||
|
||||
- name: Call tripleo_ceph_deploy role for standlone
|
||||
include_role:
|
||||
name: "tripleo_ceph_deploy"
|
||||
vars:
|
||||
tripleo_ceph_deploy_standalone: true
|
||||
tripleo_ceph_deploy_mon_ip: 192.168.122.42
|
||||
tripleo_ceph_deploy_spec: /home/zuul/ceph_spec.yaml
|
||||
tripleo_ceph_deploy_stack: standalone
|
||||
tripleo_ceph_deploy_output: /home/zuul/deployed_ceph.yaml
|
||||
|
||||
- name: Show result tripleo_ceph_deploy_result
|
||||
debug:
|
||||
msg: "{{ tripleo_ceph_deploy_result }}"
|
||||
|
||||
- name: Assert tripleo_ceph_deploy command for standalone
|
||||
assert:
|
||||
that:
|
||||
- tripleo_ceph_deploy_result.stdout ==
|
||||
"overcloud ceph deploy --output /home/zuul/deployed_ceph.yaml --standalone --mon-ip 192.168.122.42 --ceph-spec /home/zuul/ceph_spec.yaml --stack standalone --cephadm-ssh-user ceph-admin"
|
@ -1,19 +0,0 @@
|
||||
---
|
||||
driver:
|
||||
name: delegated
|
||||
options:
|
||||
managed: false
|
||||
ansible_connection_options:
|
||||
ansible_connection: local
|
||||
log: true
|
||||
platforms:
|
||||
- name: instance
|
||||
provisioner:
|
||||
name: ansible
|
||||
scenario:
|
||||
name: default
|
||||
test_sequence:
|
||||
- prepare
|
||||
- syntax
|
||||
- converge
|
||||
- verify
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
- name: Prepare
|
||||
hosts: all
|
||||
tasks:
|
||||
|
||||
- name: Include molecule prep
|
||||
include_role:
|
||||
name: test_molecule_prep
|
@ -1,110 +0,0 @@
|
||||
---
|
||||
- name: Setup ceph deploy facts
|
||||
set_fact:
|
||||
_deploy_cmd: >-
|
||||
{{ openstack_bin }} overcloud ceph deploy
|
||||
{{ tripleo_ceph_deploy_deployed_baremetal }}
|
||||
{{ tripleo_ceph_deploy_output | ternary('--output $DEPLOYED_CEPH', '') }}
|
||||
{{ tripleo_ceph_deploy_overwrite | ternary('--yes', '') }}
|
||||
{{ tripleo_ceph_deploy_standalone | ternary('--standalone', '') }}
|
||||
{{ tripleo_ceph_deploy_mon_ip | ternary('--mon-ip $CEPH_MON_IP', '') }}
|
||||
{{ tripleo_ceph_deploy_cluster | ternary('--cluster $CLUSTER', '') }}
|
||||
{{ tripleo_ceph_deploy_spec | ternary('--ceph-spec $CEPH_SPEC', '') }}
|
||||
{{ tripleo_ceph_deploy_stack | ternary('--stack $DEPLOY_STACK', '') }}
|
||||
{{ tripleo_ceph_deploy_working_dir | ternary('--working-dir $DEPLOY_WORKING_DIR', '') }}
|
||||
{{ tripleo_ceph_deploy_roles_file | ternary('--roles $DEPLOY_ROLES_FILE', '') }}
|
||||
{{ tripleo_ceph_deploy_osd_spec | ternary('--osd-spec $CEPH_OSD_SPEC', '') }}
|
||||
{{ tripleo_ceph_deploy_crush_hierarchy | ternary('--crush-hierarchy $CEPH_CRUSH_HIERARCHY', '') }}
|
||||
{{ tripleo_ceph_user_ssh_user | ternary('--cephadm-ssh-user $CEPHADM_SSH_USER', '') }}
|
||||
{{ tripleo_ceph_deploy_skip_user_create | ternary('--skip-user-create', '') }}
|
||||
{{ tripleo_ceph_deploy_skip_hosts_config | ternary('--skip-hosts-config', '') }}
|
||||
{{ tripleo_ceph_deploy_skip_ntp | ternary('--skip-ntp', '') }}
|
||||
{{ tripleo_ceph_deploy_skip_container_registry_config | ternary('--skip-container-registry-config', '') }}
|
||||
{{ tripleo_ceph_deploy_force | ternary('--force', '') }}
|
||||
{{ tripleo_ceph_deploy_single_host_defaults | ternary('--single-host-defaults', '') }}
|
||||
{% if tripleo_ceph_deploy_with_ntp %}
|
||||
{{ tripleo_ceph_deploy_ntp_server | ternary('--ntp-server $CEPH_NTP_SERVER', '') }}
|
||||
{{ tripleo_ceph_deploy_ntp_heat_env_file | ternary('--ntp-heat-env-file $CEPH_NTP_HEAT_ENV_FILE', '') }}
|
||||
{% endif %}
|
||||
{{ tripleo_ceph_deploy_network_data | ternary('--network-data $NETWORK_DATA', '') }}
|
||||
{{ tripleo_ceph_deploy_public_network_name | ternary('--public-network-name $PUBLIC_NETWORK_NAME', '') }}
|
||||
{{ tripleo_ceph_deploy_cluster_network_name | ternary('--cluster-network-name $CLUSTER_NETWORK_NAME', '') }}
|
||||
{{ tripleo_ceph_deploy_config | ternary('--config $CONFIG', '') }}
|
||||
{{ tripleo_ceph_deploy_cephadm_extra_args | ternary('--cephadm-extra-args "$CEPHADM_EXTRA_ARGS"', '') }}
|
||||
{{ tripleo_ceph_deploy_ceph_vip | ternary('--ceph-vip $CEPH_VIP', '') }}
|
||||
{{ tripleo_ceph_deploy_daemons | ternary('--daemons $DAEMONS', '') }}
|
||||
{{ tripleo_ceph_deploy_container_cephadm_default | ternary('--cephadm-default-container', '') }}
|
||||
{{ tripleo_ceph_deploy_container_image_prepare | ternary('--container-image-prepare $CONTAINER_IMAGE_PREPARE', '') }}
|
||||
{{ tripleo_ceph_deploy_container_namespace | ternary('--container-namespace $CONTAINER_NAMESPACE', '') }}
|
||||
{{ tripleo_ceph_deploy_container_image | ternary('--container-image $CONTAINER_IMAGE', '') }}
|
||||
{{ tripleo_ceph_deploy_container_tag | ternary('--container-tag $CONTAINER_TAG', '') }}
|
||||
{{ tripleo_ceph_deploy_container_registry_url | ternary('--registry-url $REGISTRY_URL', '') }}
|
||||
{{ tripleo_ceph_deploy_container_registry_username | ternary('--registry-username $REGISTRY_USERNAME', '') }}
|
||||
{{ tripleo_ceph_deploy_container_registry_password | ternary('--registry-password $REGISTRY_PASSWORD', '') }}
|
||||
_deploy_env:
|
||||
DEPLOYED_CEPH: "{{ tripleo_ceph_deploy_output }}"
|
||||
DEPLOY_STACK: "{{ tripleo_ceph_deploy_stack }}"
|
||||
DEPLOY_WORKING_DIR: "{{ tripleo_ceph_deploy_working_dir }}"
|
||||
DEPLOY_ROLES_FILE: "{{ tripleo_ceph_deploy_roles_file }}"
|
||||
CEPH_SPEC: "{{ tripleo_ceph_deploy_spec }}"
|
||||
CEPH_MON_IP: "{{ tripleo_ceph_deploy_mon_ip }}"
|
||||
CLUSTER: "{{ tripleo_ceph_deploy_cluster }}"
|
||||
CEPH_OSD_SPEC: "{{ tripleo_ceph_deploy_osd_spec }}"
|
||||
CEPH_NTP_SERVER: "{{ tripleo_ceph_deploy_ntp_server }}"
|
||||
CEPH_NTP_HEAT_ENV_FILE: "{{ tripleo_ceph_deploy_ntp_heat_env_file }}"
|
||||
CEPH_CRUSH_HIERARCHY: "{{ tripleo_ceph_deploy_crush_hierarchy }}"
|
||||
CEPHADM_SSH_USER: "{{ tripleo_ceph_user_ssh_user }}"
|
||||
NETWORK_DATA: "{{ tripleo_ceph_deploy_network_data }}"
|
||||
PUBLIC_NETWORK_NAME: "{{ tripleo_ceph_deploy_public_network_name }}"
|
||||
CLUSTER_NETWORK_NAME: "{{ tripleo_ceph_deploy_cluster_network_name }}"
|
||||
CONFIG: "{{ tripleo_ceph_deploy_config }}"
|
||||
CEPHADM_EXTRA_ARGS: "{{ tripleo_ceph_deploy_cephadm_extra_args }}"
|
||||
CEPH_VIP: "{{ tripleo_ceph_deploy_ceph_vip }}"
|
||||
DAEMONS: "{{ tripleo_ceph_deploy_daemons }}"
|
||||
CONTAINER_IMAGE_PREPARE: "{{ tripleo_ceph_deploy_container_image_prepare }}"
|
||||
CONTAINER_NAMESPACE: "{{ tripleo_ceph_deploy_container_namespace }}"
|
||||
CONTAINER_IMAGE: "{{ tripleo_ceph_deploy_container_image }}"
|
||||
CONTAINER_TAG: "{{ tripleo_ceph_deploy_container_tag }}"
|
||||
REGISTRY_URL: "{{ tripleo_ceph_deploy_container_registry_url }}"
|
||||
REGISTRY_USERNAME: "{{ tripleo_ceph_deploy_container_registry_username }}"
|
||||
REGISTRY_PASSWORD: "{{ tripleo_ceph_deploy_container_registry_password }}"
|
||||
|
||||
- name: Show debug information
|
||||
when:
|
||||
tripleo_ceph_deploy_debug|bool
|
||||
block:
|
||||
- name: Show openstack overcloud ceph deploy command
|
||||
debug:
|
||||
var: _deploy_cmd
|
||||
|
||||
- name: Show the openstack overcloud ceph deploy environment
|
||||
debug:
|
||||
var: _deploy_env
|
||||
|
||||
- name: Write reproducer script
|
||||
tripleo_shell_script:
|
||||
dest: "{{ ansible_env.HOME }}/openstack_overcloud_ceph_deploy.sh"
|
||||
shell_command: "{{ _deploy_cmd }}"
|
||||
shell_environment: "{{ _deploy_env }}"
|
||||
when: tripleo_ceph_deploy_generate_scripts|bool
|
||||
|
||||
- name: Run Ceph Deploy
|
||||
shell: "{{ _deploy_cmd }}" # noqa 305
|
||||
environment: "{{ _deploy_env }}"
|
||||
args:
|
||||
executable: /bin/bash
|
||||
chdir: "{{ ansible_env.HOME }}"
|
||||
become: "{{ tripleo_ceph_deploy_become }}"
|
||||
register: tripleo_ceph_deploy_result
|
||||
async: "{{ tripleo_ceph_deploy_timeout }}"
|
||||
poll: "{{ tripleo_ceph_deploy_poll }}"
|
||||
changed_when: false
|
||||
when:
|
||||
- not ansible_check_mode|bool
|
||||
- not tripleo_ceph_deploy_generate_scripts_only|bool
|
||||
|
||||
- name: Set output fact
|
||||
when:
|
||||
- tripleo_ceph_deploy_result.stdout is defined
|
||||
set_fact:
|
||||
tripleo_ceph_deploy_output: "{{ tripleo_ceph_deploy_result.stdout }}"
|
@ -1,79 +0,0 @@
|
||||
tripleo_ceph_spec
|
||||
=====================
|
||||
|
||||
A role to generate Ceph spec files.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Role Variables
|
||||
--------------
|
||||
|
||||
* `tripleo_ceph_spec_become`: (Boolean) Execute command with escalated privileges. Default: false
|
||||
* `tripleo_ceph_spec_crush_hierarchy`: (String) Path to an existing crush hierarchy spec file.
|
||||
* `tripleo_ceph_spec_debug`: (Boolean) Flag to print out the command that is run. Default: false
|
||||
* `tripleo_ceph_spec_deployed_baremetal`: (String) Path to the environment file output from "openstack overcloud node provision". This argument may be excluded only if tripleo_ceph_spec_standalone is True.
|
||||
* `tripleo_ceph_spec_file`: "{{ ansible_env.HOME }}/ceph_spec.yaml"
|
||||
* `tripleo_ceph_spec_generate_scripts_only`: (Boolean) Do not run the actual command - to be used in conjunction with `tripleo_ceph_spec_generate_scripts`. By default uses the value of `tripleo_generate_scripts_only` or False if `tripleo_generate_scripts_only` is not defined.
|
||||
* `tripleo_ceph_spec_generate_scripts`: (Boolean) Write out a shell script that can be used to reproduce the command being executed. By default uses the value of `tripleo_generate_scripts` or False if `tripleo_generate_scripts` is not defined.
|
||||
* `tripleo_ceph_spec_mon_ip`: (String) IP address of the first Ceph monitor. Only supported if tripleo_ceph_spec_standalone is True.
|
||||
* `tripleo_ceph_spec_osd_spec`: (String) Path to an existing OSD spec file. When the Ceph spec file is generated its OSD spec defaults to {data_devices: {all: true}} for all service_type osd. Use this parameter to override the data_devices value inside the Ceph spec file.
|
||||
* `tripleo_ceph_spec_overwrite`: (Boolean) Flag to skip yes/no prompts about overwriting the tripleo_ceph_spec_file from a previous run. Default: false
|
||||
* `tripleo_ceph_spec_poll`: (Integer) Number of seconds to wait between each checks to see if the deployment command has completed. Default: 10
|
||||
* `tripleo_ceph_spec_roles_file`: (String) Path to an alternative roles_data.yaml. Used to decide which node gets which Ceph mon, mgr, or osd service based on the node's role tripleo_ceph_spec_deployed_baremetal.
|
||||
* `tripleo_ceph_spec_stack`: Name or ID of heat stack. Used to find the working directory.
|
||||
* `tripleo_ceph_spec_standalone`: (Boolean) Create a spec file for a standalone deployment. Used for single server development or testing environments.
|
||||
* `tripleo_ceph_spec_timeout_arg`: (Integer) Number in minutes for the deployment to run. Default: 90
|
||||
* `tripleo_ceph_spec_timeout`: (Integer) Number in seconds to wait for the ansible execution of the deployment command to finish. This should be larger than the `tripleo_ceph_spec_timeout_arg` value. Default: 5700
|
||||
* `tripleo_ceph_spec_working_dir`: (String) The working directory for the deployment where all input, output, and generated files will be stored. Defaults to "$HOME/overcloud-deploy/<stack>"
|
||||
|
||||
|
||||
Output Variables
|
||||
----------------
|
||||
|
||||
* `tripleo_ceph_spec_output`: (String) The command standard output.
|
||||
* `tripleo_ceph_spec_result`: Ansible shell execution results
|
||||
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
Example Playbook
|
||||
----------------
|
||||
|
||||
Example ceph spec playbook
|
||||
|
||||
```yaml
|
||||
- hosts: undercloud
|
||||
gather_facts: true
|
||||
tasks:
|
||||
- name: Create Ceph Spec for Standalone
|
||||
include_role:
|
||||
name: tripleo_ceph_spec
|
||||
vars:
|
||||
tripleo_ceph_spec_standalone: True
|
||||
tripleo_ceph_spec_mon_ip: 192.168.122.42
|
||||
tripleo_ceph_spec_file: /home/stack/ceph_spec.yaml
|
||||
tripleo_ceph_spec_overwrite: True
|
||||
|
||||
- name: Create Ceph Spec from 'openstack overcloud node provision' output
|
||||
include_role:
|
||||
name: tripleo_ceph_spec
|
||||
vars:
|
||||
tripleo_ceph_spec_debug: True
|
||||
tripleo_ceph_spec_generate_scripts: True
|
||||
tripleo_ceph_spec_overwrite: True
|
||||
tripleo_ceph_spec_stack: overcloud
|
||||
tripleo_ceph_spec_roles_file: /home/stack/custom_roles.yaml
|
||||
tripleo_ceph_spec_file: /home/stack/ceph_spec.yaml
|
||||
tripleo_ceph_spec_deployed_baremetal: /home/stack/overcloud-baremetal-deployed.yaml
|
||||
```
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
Apache-2.0
|
@ -1,19 +0,0 @@
|
||||
---
|
||||
openstack_bin: openstack
|
||||
tripleo_ceph_spec_become: false
|
||||
tripleo_ceph_spec_crush_hierarchy:
|
||||
tripleo_ceph_spec_debug: false
|
||||
tripleo_ceph_spec_deployed_baremetal:
|
||||
tripleo_ceph_spec_file: "{{ ansible_env.HOME }}/ceph_spec.yaml"
|
||||
tripleo_ceph_spec_generate_scripts: "{{ tripleo_generate_scripts | default(False) }}"
|
||||
tripleo_ceph_spec_generate_scripts_only: "{{ tripleo_generate_scripts_only | default(False) }}"
|
||||
tripleo_ceph_spec_mon_ip:
|
||||
tripleo_ceph_spec_osd_spec:
|
||||
tripleo_ceph_spec_overwrite: false
|
||||
tripleo_ceph_spec_poll: 10
|
||||
tripleo_ceph_spec_roles_file:
|
||||
tripleo_ceph_spec_stack:
|
||||
tripleo_ceph_spec_standalone: false
|
||||
tripleo_ceph_spec_timeout: 5700
|
||||
tripleo_ceph_spec_timeout_arg: 90
|
||||
tripleo_ceph_spec_working_dir:
|
@ -1,45 +0,0 @@
|
||||
---
|
||||
# Copyright 2022 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
galaxy_info:
|
||||
role_name: tripleo_ceph_spec
|
||||
namespace: openstack
|
||||
author: OpenStack
|
||||
description: TripleO Operator Role -- tripleo_ceph_spec
|
||||
company: Red Hat
|
||||
license: Apache-2.0
|
||||
min_ansible_version: 2.8
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
platforms:
|
||||
- name: CentOS
|
||||
versions:
|
||||
- 7
|
||||
- 8
|
||||
- 9
|
||||
|
||||
galaxy_tags:
|
||||
- tripleo
|
||||
|
||||
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
dependencies: []
|
@ -1,28 +0,0 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
collections:
|
||||
- tripleo.operator
|
||||
vars:
|
||||
openstack_bin: echo
|
||||
tripleo_os_cloud: undercloud
|
||||
tripleo_ceph_spec_run_debug: true
|
||||
tasks:
|
||||
|
||||
- name: Call tripleo_ceph_spec role for standlone
|
||||
include_role:
|
||||
name: "tripleo_ceph_spec"
|
||||
vars:
|
||||
tripleo_ceph_spec_standalone: true
|
||||
tripleo_ceph_spec_mon_ip: 192.168.122.42
|
||||
tripleo_ceph_spec_file: /home/zuul/ceph_spec.yaml
|
||||
|
||||
- name: Show result tripleo_ceph_spec_result
|
||||
debug:
|
||||
msg: "{{ tripleo_ceph_spec_result }}"
|
||||
|
||||
- name: Assert tripleo_ceph_spec command for standalone
|
||||
assert:
|
||||
that:
|
||||
- tripleo_ceph_spec_result.stdout ==
|
||||
"overcloud ceph spec --standalone --mon-ip 192.168.122.42 --output /home/zuul/ceph_spec.yaml"
|
@ -1,19 +0,0 @@
|
||||
---
|
||||
driver:
|
||||
name: delegated
|
||||
options:
|
||||
managed: false
|
||||
ansible_connection_options:
|
||||
ansible_connection: local
|
||||
log: true
|
||||
platforms:
|
||||
- name: instance
|
||||
provisioner:
|
||||
name: ansible
|
||||
scenario:
|
||||
name: default
|
||||
test_sequence:
|
||||
- prepare
|
||||
- syntax
|
||||
- converge
|
||||
- verify
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user