Retire puppet-sahara: Remove Project Content
Depends-on: https://review.opendev.org/c/openstack/project-config/+/910452 Change-Id: Ifbcdf71f515ab24da67c9350b958cb987b1badc8
This commit is contained in:
parent
23a403b211
commit
50b3fc6ac7
|
@ -1,26 +0,0 @@
|
||||||
# Add patterns in here to exclude files created by tools integrated with this
|
|
||||||
# repository, such as test frameworks from the project's recommended workflow,
|
|
||||||
# rendered documentation and package builds.
|
|
||||||
#
|
|
||||||
# Don't add patterns to exclude files created by preferred personal tools
|
|
||||||
# (editors, IDEs, your operating system itself even). These should instead be
|
|
||||||
# maintained outside the repository, for example in a ~/.gitignore file added
|
|
||||||
# with:
|
|
||||||
#
|
|
||||||
# git config --global core.excludesfile '~/.gitignore'
|
|
||||||
|
|
||||||
pkg/
|
|
||||||
Gemfile.lock
|
|
||||||
vendor/
|
|
||||||
spec/fixtures/
|
|
||||||
.vagrant/
|
|
||||||
.bundle/
|
|
||||||
coverage/
|
|
||||||
.idea/
|
|
||||||
*.iml
|
|
||||||
/openstack
|
|
||||||
/log
|
|
||||||
|
|
||||||
# Files created by releasenotes build
|
|
||||||
releasenotes/build
|
|
||||||
.tox
|
|
52
.pdkignore
52
.pdkignore
|
@ -1,52 +0,0 @@
|
||||||
# common list used in puppetlabs repos
|
|
||||||
.git/
|
|
||||||
.*.sw[op]
|
|
||||||
.metadata
|
|
||||||
.yardoc
|
|
||||||
.yardwarns
|
|
||||||
*.iml
|
|
||||||
/.bundle/
|
|
||||||
/.idea/
|
|
||||||
/.vagrant/
|
|
||||||
/coverage/
|
|
||||||
/bin/
|
|
||||||
/doc/
|
|
||||||
/Gemfile.local
|
|
||||||
/Gemfile.lock
|
|
||||||
/junit/
|
|
||||||
/log/
|
|
||||||
/pkg/
|
|
||||||
/spec/fixtures/manifests/
|
|
||||||
/spec/fixtures/modules/*
|
|
||||||
/tmp/
|
|
||||||
/vendor/
|
|
||||||
/convert_report.txt
|
|
||||||
/update_report.txt
|
|
||||||
.DS_Store
|
|
||||||
.project
|
|
||||||
.envrc
|
|
||||||
/inventory.yaml
|
|
||||||
/spec/fixtures/litmus_inventory.yaml
|
|
||||||
/.fixtures.yml
|
|
||||||
/Gemfile
|
|
||||||
/.gitattributes
|
|
||||||
/.gitignore
|
|
||||||
/.pdkignore
|
|
||||||
/.puppet-lint.rc
|
|
||||||
/Rakefile
|
|
||||||
/rakelib/
|
|
||||||
/.rspec
|
|
||||||
/..yml
|
|
||||||
/.yardopts
|
|
||||||
/spec/
|
|
||||||
/.vscode/
|
|
||||||
/.sync.yml
|
|
||||||
/.devcontainer/
|
|
||||||
# OpenStack-specific files
|
|
||||||
/bindep.txt
|
|
||||||
/.gitreview
|
|
||||||
/releasenotes/
|
|
||||||
/setup.cfg
|
|
||||||
/setup.py
|
|
||||||
/tox.ini
|
|
||||||
/.zuul.yaml
|
|
|
@ -1,7 +0,0 @@
|
||||||
- project:
|
|
||||||
templates:
|
|
||||||
- puppet-openstack-check-jobs
|
|
||||||
- puppet-openstack-module-unit-jobs
|
|
||||||
- puppet-openstack-integration-jobs-scenario003
|
|
||||||
- puppet-openstack-litmus-jobs
|
|
||||||
- release-notes-jobs-python3
|
|
53
CHANGELOG.md
53
CHANGELOG.md
|
@ -1,53 +0,0 @@
|
||||||
## 8.0.0 and beyond
|
|
||||||
|
|
||||||
From 8.0.0 release and beyond, release notes are published on
|
|
||||||
[docs.openstack.org](https://docs.openstack.org/releasenotes/puppet-sahara/).
|
|
||||||
|
|
||||||
##2015-11-25 - 7.0.0
|
|
||||||
###Summary
|
|
||||||
|
|
||||||
This is a backwards-incompatible major release for OpenStack Liberty.
|
|
||||||
|
|
||||||
####Backwards-incompatible changes
|
|
||||||
- remove kilo deprecated parameters
|
|
||||||
|
|
||||||
####Features
|
|
||||||
- add distribute mode support
|
|
||||||
- introduce Sahara extended logging class
|
|
||||||
- remove POSIX file modes
|
|
||||||
- add tag to package and service resources
|
|
||||||
- add sahara::config class
|
|
||||||
- add sahara::db::sync
|
|
||||||
- add support of SSL
|
|
||||||
- add an ability to manage use_stderr parameter
|
|
||||||
- reflect provider change in puppet-openstacklib
|
|
||||||
- introduce sahara::db class
|
|
||||||
- db: use postgresql lib class for psycopg package
|
|
||||||
- add new parameter 'plugins' for Sahara
|
|
||||||
- configure rpc options separately from ceilometer notifications
|
|
||||||
|
|
||||||
####Bugfixes
|
|
||||||
- rely on autorequire for config resource ordering
|
|
||||||
- remove Sqlite validation for database_connection
|
|
||||||
|
|
||||||
####Maintenance
|
|
||||||
- initial msync run for all Puppet OpenStack modules
|
|
||||||
- try to use zuul-cloner to prepare fixtures
|
|
||||||
- remove class_parameter_defaults puppet-lint check
|
|
||||||
- acceptance: use common bits from puppet-openstack-integration
|
|
||||||
|
|
||||||
##2015-10-10 - 6.1.0
|
|
||||||
###Summary
|
|
||||||
|
|
||||||
This is a maintenance and features release in the Kilo series.
|
|
||||||
|
|
||||||
####Features
|
|
||||||
- Update parameters for Sahara
|
|
||||||
|
|
||||||
####Maintenance
|
|
||||||
- acceptance: checkout stable/kilo puppet modules
|
|
||||||
|
|
||||||
##2015-07-08 - 6.0.0
|
|
||||||
###Summary
|
|
||||||
|
|
||||||
- Initial release of the puppet-sahara module
|
|
|
@ -1,19 +0,0 @@
|
||||||
The source repository for this project can be found at:
|
|
||||||
|
|
||||||
https://opendev.org/openstack/puppet-sahara
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub are not monitored.
|
|
||||||
|
|
||||||
To start contributing to OpenStack, follow the steps in the contribution guide
|
|
||||||
to set up and use Gerrit:
|
|
||||||
|
|
||||||
https://docs.openstack.org/contributors/code-and-documentation/quick-start.html
|
|
||||||
|
|
||||||
Bugs should be filed on Launchpad:
|
|
||||||
|
|
||||||
https://bugs.launchpad.net/puppet-sahara
|
|
||||||
|
|
||||||
For more specific information about contributing to this repository, see the
|
|
||||||
Puppet OpenStack contributor guide:
|
|
||||||
|
|
||||||
https://docs.openstack.org/puppet-openstack-guide/latest/contributor/contributing.html
|
|
36
Gemfile
36
Gemfile
|
@ -1,36 +0,0 @@
|
||||||
source ENV['GEM_SOURCE'] || "https://rubygems.org"
|
|
||||||
|
|
||||||
group :development, :test, :system_tests do
|
|
||||||
spec_helper_dir = '/home/zuul/src/opendev.org/openstack/puppet-openstack_spec_helper'
|
|
||||||
if File.directory?(spec_helper_dir)
|
|
||||||
if ENV['ZUUL_PROJECT'] == 'openstack/puppet-openstack_spec_helper'
|
|
||||||
gem 'puppet-openstack_spec_helper',
|
|
||||||
:path => '../..',
|
|
||||||
:require => 'false'
|
|
||||||
else
|
|
||||||
gem 'puppet-openstack_spec_helper',
|
|
||||||
:path => spec_helper_dir,
|
|
||||||
:require => 'false'
|
|
||||||
end
|
|
||||||
else
|
|
||||||
spec_helper_version = ENV['ZUUL_BRANCH'] || "master"
|
|
||||||
gem 'puppet-openstack_spec_helper',
|
|
||||||
:git => 'https://opendev.org/openstack/puppet-openstack_spec_helper',
|
|
||||||
:ref => spec_helper_version,
|
|
||||||
:require => 'false'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if facterversion = ENV['FACTER_GEM_VERSION']
|
|
||||||
gem 'facter', facterversion, :require => false
|
|
||||||
else
|
|
||||||
gem 'facter', :require => false
|
|
||||||
end
|
|
||||||
|
|
||||||
if puppetversion = ENV['PUPPET_GEM_VERSION']
|
|
||||||
gem 'puppet', puppetversion, :require => false
|
|
||||||
else
|
|
||||||
gem 'puppet', :require => false
|
|
||||||
end
|
|
||||||
|
|
||||||
# vim:ft=ruby
|
|
176
LICENSE
176
LICENSE
|
@ -1,176 +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.
|
|
||||||
|
|
120
README.md
120
README.md
|
@ -1,120 +0,0 @@
|
||||||
Team and repository tags
|
|
||||||
========================
|
|
||||||
|
|
||||||
[![Team and repository tags](https://governance.openstack.org/tc/badges/puppet-sahara.svg)](https://governance.openstack.org/tc/reference/tags/index.html)
|
|
||||||
|
|
||||||
<!-- Change things from this point on -->
|
|
||||||
|
|
||||||
sahara
|
|
||||||
======
|
|
||||||
|
|
||||||
#### Table of Contents
|
|
||||||
|
|
||||||
1. [Overview - What is the sahara module?](#overview)
|
|
||||||
2. [Module Description - What does the module do?](#module-description)
|
|
||||||
3. [Setup - The basics of getting started with sahara](#setup)
|
|
||||||
4. [Implementation - An under-the-hood peek at what the module is doing](#implementation)
|
|
||||||
5. [Limitations - OS compatibility, etc.](#limitations)
|
|
||||||
6. [Development - Guide for contributing to the module](#development)
|
|
||||||
7. [Contributors - Those with commits](#contributors)
|
|
||||||
8. [Release Notes - Release notes for the project](#release-notes)
|
|
||||||
9. [Repository - The project source code repository](#repository)
|
|
||||||
|
|
||||||
Overview
|
|
||||||
--------
|
|
||||||
|
|
||||||
The sahara module is a part of [OpenStack](https://opendev.org/openstack), an effort
|
|
||||||
by the OpenStack infrastructure team to provide continuous integration testing and
|
|
||||||
code review for OpenStack and OpenStack community projects as part of the core software.
|
|
||||||
The Sahara module itself is used to flexibly configure and manage the clustering service for OpenStack.
|
|
||||||
|
|
||||||
Module Description
|
|
||||||
------------------
|
|
||||||
|
|
||||||
The sahara module is an attempt to make Puppet capable of managing the
|
|
||||||
entirety of sahara.
|
|
||||||
|
|
||||||
Setup
|
|
||||||
-----
|
|
||||||
|
|
||||||
**What the sahara module affects:**
|
|
||||||
|
|
||||||
* [Sahara](https://docs.openstack.org/sahara/latest/), the data processing service for OpenStack.
|
|
||||||
|
|
||||||
### Installing Sahara
|
|
||||||
|
|
||||||
puppet module install openstack/sahara
|
|
||||||
|
|
||||||
### Beginning with sahara
|
|
||||||
|
|
||||||
To use the sahara module's functionality you will need to declare multiple
|
|
||||||
resources. This is not an exhaustive list of all the components needed; we
|
|
||||||
recommend you consult and understand the
|
|
||||||
[core of openstack](https://docs.openstack.org) documentation.
|
|
||||||
|
|
||||||
Examples of usage can be found in the *examples* directory.
|
|
||||||
|
|
||||||
Implementation
|
|
||||||
--------------
|
|
||||||
|
|
||||||
### sahara
|
|
||||||
|
|
||||||
puppet-sahara is a combination of Puppet manifests and ruby code to deliver
|
|
||||||
configuration and extra functionality through types and providers.
|
|
||||||
|
|
||||||
### Types
|
|
||||||
|
|
||||||
#### sahara_config
|
|
||||||
|
|
||||||
The `sahara_config` provider is a children of the ini_setting provider. It allows one to write an entry in the `/etc/sahara/sahara.conf` file.
|
|
||||||
|
|
||||||
```puppet
|
|
||||||
sahara_config { 'DEFAULT/use_neutron' :
|
|
||||||
value => True,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
This will write `use_neutron=True` in the `[DEFAULT]` section.
|
|
||||||
|
|
||||||
##### name
|
|
||||||
|
|
||||||
Section/setting name to manage from `sahara.conf`
|
|
||||||
|
|
||||||
##### value
|
|
||||||
|
|
||||||
The value of the setting to be defined.
|
|
||||||
|
|
||||||
##### secret
|
|
||||||
|
|
||||||
Whether to hide the value from Puppet logs. Defaults to `false`.
|
|
||||||
|
|
||||||
##### ensure_absent_val
|
|
||||||
|
|
||||||
If value is equal to ensure_absent_val then the resource will behave as if `ensure => absent` was specified. Defaults to `<SERVICE DEFAULT>`
|
|
||||||
|
|
||||||
Limitations
|
|
||||||
-----------
|
|
||||||
|
|
||||||
None.
|
|
||||||
|
|
||||||
Development
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Developer documentation for the entire puppet-openstack project.
|
|
||||||
|
|
||||||
* https://docs.openstack.org/puppet-openstack-guide/latest/
|
|
||||||
|
|
||||||
Contributors
|
|
||||||
------------
|
|
||||||
|
|
||||||
* https://github.com/openstack/puppet-sahara/graphs/contributors
|
|
||||||
|
|
||||||
Release Notes
|
|
||||||
-------------
|
|
||||||
|
|
||||||
* https://docs.openstack.org/releasenotes/puppet-sahara
|
|
||||||
|
|
||||||
Repository
|
|
||||||
----------
|
|
||||||
|
|
||||||
* https://opendev.org/openstack/puppet-sahara
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
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.
|
12
bindep.txt
12
bindep.txt
|
@ -1,12 +0,0 @@
|
||||||
# This is a cross-platform list tracking distribution packages needed by tests;
|
|
||||||
# see https://docs.openstack.org/infra/bindep/ for additional information.
|
|
||||||
|
|
||||||
libxml2-devel [test platform:rpm]
|
|
||||||
libxml2-dev [test platform:dpkg]
|
|
||||||
libxslt-devel [test platform:rpm]
|
|
||||||
libxslt1-dev [test platform:dpkg]
|
|
||||||
ruby-devel [test platform:rpm]
|
|
||||||
ruby-dev [test platform:dpkg]
|
|
||||||
zlib1g-dev [test platform:dpkg]
|
|
||||||
zlib-devel [test platform:rpm]
|
|
||||||
puppet [build]
|
|
|
@ -1,6 +0,0 @@
|
||||||
# This is required for the docs build jobs
|
|
||||||
sphinx>=3.5.1 # BSD
|
|
||||||
openstackdocstheme>=2.2.7 # Apache-2.0
|
|
||||||
|
|
||||||
# This is required for the releasenotes build jobs
|
|
||||||
reno>=3.2.0 # Apache-2.0
|
|
|
@ -1,72 +0,0 @@
|
||||||
# First, install a mysql server
|
|
||||||
class { 'mysql::server':
|
|
||||||
# sahara documentation recommends this configuration.
|
|
||||||
override_options => {
|
|
||||||
'mysqld' => {
|
|
||||||
'max_allowed_packet' => '256M',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
# many configurations will need this line, too
|
|
||||||
package_name => 'mariadb-galera-server',
|
|
||||||
|
|
||||||
# if you're installing into an existing openstack
|
|
||||||
manage_config_file => false,
|
|
||||||
purge_conf_dir => false,
|
|
||||||
}
|
|
||||||
|
|
||||||
# Then, create a database
|
|
||||||
class { 'sahara::db::mysql':
|
|
||||||
password => 'a_big_secret',
|
|
||||||
}
|
|
||||||
|
|
||||||
# Then the common class
|
|
||||||
class { 'sahara':
|
|
||||||
database_connection => 'mysql+pymysql://sahara:a_big_secret@127.0.0.1:3306/sahara',
|
|
||||||
debug => true,
|
|
||||||
host => '0.0.0.0',
|
|
||||||
port => 8386,
|
|
||||||
use_floating_ips => true,
|
|
||||||
}
|
|
||||||
|
|
||||||
# Keystone authtoken parameters
|
|
||||||
class { 'sahara::keystone::authtoken':
|
|
||||||
password => 'a_big_secret',
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup API service in Apache
|
|
||||||
class { 'sahara::service::api':
|
|
||||||
service_name => 'httpd',
|
|
||||||
}
|
|
||||||
|
|
||||||
# On Ubuntu there are Apache configuration that is dropped when the
|
|
||||||
# sahara-api package is installed. The puppet-sahara module will remove
|
|
||||||
# these and fix the apache configuration for you but the Ubuntu packages
|
|
||||||
# requires these files to exist for upgrading the sahara-api package to not
|
|
||||||
# break.
|
|
||||||
if ($facts['os']['name'] == 'Ubuntu') {
|
|
||||||
ensure_resource('file', '/etc/apache2/sites-available/sahara-api.conf', {
|
|
||||||
'ensure' => 'present',
|
|
||||||
'content' => '',
|
|
||||||
})
|
|
||||||
ensure_resource('file', '/etc/apache2/sites-enabled/sahara-api.conf', {
|
|
||||||
'ensure' => 'present',
|
|
||||||
'content' => '',
|
|
||||||
})
|
|
||||||
|
|
||||||
Package['sahara-api'] -> File['/etc/apache2/sites-available/sahara-api.conf']
|
|
||||||
-> File['/etc/apache2/sites-enabled/sahara-api.conf'] ~> Anchor['sahara::install::end']
|
|
||||||
}
|
|
||||||
|
|
||||||
include apache
|
|
||||||
class { 'sahara::wsgi::apache':
|
|
||||||
workers => 2,
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup the engine service
|
|
||||||
class { 'sahara::service::engine': }
|
|
||||||
|
|
||||||
# Finally, make it accessible
|
|
||||||
class { 'sahara::keystone::auth':
|
|
||||||
password => 'secrete',
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
require 'puppet/provider/openstack'
|
|
||||||
require 'puppet/provider/openstack/auth'
|
|
||||||
|
|
||||||
class Puppet::Provider::Sahara < Puppet::Provider::Openstack
|
|
||||||
|
|
||||||
extend Puppet::Provider::Openstack::Auth
|
|
||||||
|
|
||||||
def self.flavors_list
|
|
||||||
unless @flavors_hash
|
|
||||||
list = request('flavor', 'list')
|
|
||||||
@flavors_hash = Hash[list.collect { |flavor| [ flavor[:id], flavor[:name] ] } ]
|
|
||||||
end
|
|
||||||
@flavors_hash
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.network_list
|
|
||||||
unless @network_hash
|
|
||||||
list = request('network', 'list')
|
|
||||||
@network_hash = Hash[list.collect { |network| [ network[:id], network[:name] ] } ]
|
|
||||||
end
|
|
||||||
@network_hash
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.reset
|
|
||||||
@flavors_hash = nil
|
|
||||||
@network_hash = nil
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,10 +0,0 @@
|
||||||
Puppet::Type.type(:sahara_api_paste_ini).provide(
|
|
||||||
:ini_setting,
|
|
||||||
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
|
|
||||||
) do
|
|
||||||
|
|
||||||
def self.file_path
|
|
||||||
'/etc/sahara/api-paste.ini'
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,8 +0,0 @@
|
||||||
Puppet::Type.type(:sahara_api_uwsgi_config).provide(
|
|
||||||
:ini_setting,
|
|
||||||
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
|
|
||||||
) do
|
|
||||||
def self.file_path
|
|
||||||
'/etc/sahara/sahara-api-uwsgi.ini'
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,84 +0,0 @@
|
||||||
require 'puppet/provider/sahara'
|
|
||||||
|
|
||||||
Puppet::Type.type(:sahara_cluster_template).provide(
|
|
||||||
:openstack,
|
|
||||||
:parent => Puppet::Provider::Sahara
|
|
||||||
) do
|
|
||||||
|
|
||||||
desc 'Provider for managing Sahara cluster templates.'
|
|
||||||
|
|
||||||
@credentials = Puppet::Provider::Openstack::CredentialsV3.new
|
|
||||||
|
|
||||||
mk_resource_methods
|
|
||||||
|
|
||||||
def initialize(value={})
|
|
||||||
super(value)
|
|
||||||
@property_flush = {}
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
options = []
|
|
||||||
options << '--name' << @resource[:name]
|
|
||||||
options << '--node-groups' << @resource[:node_groups]
|
|
||||||
options << '--autoconfig' if @resource[:auto_config]
|
|
||||||
options << '--description' << @resource[:description] if @resource[:description]
|
|
||||||
self.class.request('dataprocessing cluster template', 'create', options)
|
|
||||||
end
|
|
||||||
|
|
||||||
def exists?
|
|
||||||
@property_hash[:ensure] == :present
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
self.class.request('dataprocessing cluster template', 'delete', id)
|
|
||||||
@property_hash.clear
|
|
||||||
end
|
|
||||||
|
|
||||||
def node_groups=(value)
|
|
||||||
@property_flush[:node_groups] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def auto_config=(value)
|
|
||||||
@property_flush[:auto_config] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def description=(value)
|
|
||||||
@property_flush[:description] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.instances
|
|
||||||
list = request('dataprocessing cluster template', 'list')
|
|
||||||
list.collect do |template|
|
|
||||||
template_info = request('dataprocessing cluster template', 'show', template[:id])
|
|
||||||
new({
|
|
||||||
:name => template_info[:name],
|
|
||||||
:ensure => :present,
|
|
||||||
:id => template_info[:id],
|
|
||||||
:node_groups => template_info[:node_groups].split(',').map(&:strip),
|
|
||||||
:auto_config => template_info[:use_autoconfig].downcase.to_sym,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.prefetch(resources)
|
|
||||||
cluster_templates = instances
|
|
||||||
resources.keys.each do |name|
|
|
||||||
if provider = cluster_templates.find{ |template| template.name == name }
|
|
||||||
resources[name].provider = provider
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def flush
|
|
||||||
options = []
|
|
||||||
if @property_flush && !@property_flush.empty?
|
|
||||||
options << @property_hash[:id]
|
|
||||||
options << '--autoconfig-enable' if @property_flush[:auto_config] == :true
|
|
||||||
options << '--autoconfig-disable' if @property_flush[:auto_config] == :false
|
|
||||||
options << '--node-groups' << @property_flush[:node_groups] if @property_flush[:node_groups]
|
|
||||||
options << '--description' << @property_flush[:description] if @property_flush[:description]
|
|
||||||
self.class.request('dataprocessing cluster template', 'update', options)
|
|
||||||
@property_flush.clear
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,10 +0,0 @@
|
||||||
Puppet::Type.type(:sahara_config).provide(
|
|
||||||
:openstackconfig,
|
|
||||||
:parent => Puppet::Type.type(:openstack_config).provider(:ruby)
|
|
||||||
) do
|
|
||||||
|
|
||||||
def self.file_path
|
|
||||||
'/etc/sahara/sahara.conf'
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,156 +0,0 @@
|
||||||
require 'puppet/provider/sahara'
|
|
||||||
|
|
||||||
Puppet::Type.type(:sahara_node_group_template).provide(
|
|
||||||
:openstack,
|
|
||||||
:parent => Puppet::Provider::Sahara
|
|
||||||
) do
|
|
||||||
|
|
||||||
desc 'Provider for managing Sahara node group templates.'
|
|
||||||
|
|
||||||
@credentials = Puppet::Provider::Openstack::CredentialsV3.new
|
|
||||||
|
|
||||||
mk_resource_methods
|
|
||||||
|
|
||||||
def initialize(value={})
|
|
||||||
super(value)
|
|
||||||
@property_flush = {}
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
options = []
|
|
||||||
options << '--name' << @resource[:name]
|
|
||||||
options << '--plugin' << @resource[:plugin]
|
|
||||||
options << '--plugin-version' << @resource[:plugin_version]
|
|
||||||
options << '--description' << @resource[:description] if @resource[:description]
|
|
||||||
options << '--auto-security-group' if @resource[:auto_security_group]
|
|
||||||
|
|
||||||
if @resource[:floating_ip_pool]
|
|
||||||
# we need only <id> of network
|
|
||||||
network_id = self.class.request('network', 'show', @resource[:floating_ip_pool])[:id]
|
|
||||||
options << '--floating-ip-pool' << network_id
|
|
||||||
end
|
|
||||||
|
|
||||||
options << '--flavor' << @resource[:flavor]
|
|
||||||
options << '--processes' << @resource[:node_processes]
|
|
||||||
options << '--security-groups' << @resource[:security_groups] unless @resource[:security_groups].empty?
|
|
||||||
self.class.request('dataprocessing node group template', 'create', options)
|
|
||||||
end
|
|
||||||
|
|
||||||
def exists?
|
|
||||||
@property_hash[:ensure] == :present
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
self.class.request('dataprocessing node group template', 'delete', id)
|
|
||||||
@property_hash.clear
|
|
||||||
end
|
|
||||||
|
|
||||||
def plugin=(value)
|
|
||||||
fail('Property \'plugin\' can\'t be updated')
|
|
||||||
end
|
|
||||||
|
|
||||||
def plugin_version=(value)
|
|
||||||
fail('Property \'version\' can\'t be updated')
|
|
||||||
end
|
|
||||||
|
|
||||||
def flavor
|
|
||||||
# we can set flavor as in <id> format as in <name> format
|
|
||||||
flavors = self.class.flavors_list
|
|
||||||
if flavors[@property_hash[:flavor]] == @resource[:flavor] or
|
|
||||||
@property_hash[:flavor] == @resource[:flavor]
|
|
||||||
@resource[:flavor]
|
|
||||||
else
|
|
||||||
@property_hash[:flavor]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def floating_ip_pool
|
|
||||||
# this should be only <id>, but we can accept
|
|
||||||
# name of network as input, because user may know
|
|
||||||
# network name, but not a network <id>
|
|
||||||
networks = self.class.network_list
|
|
||||||
if networks[@property_hash[:floating_ip_pool]] == @resource[:floating_ip_pool] or
|
|
||||||
@property_hash[:floating_ip_pool] == @resource[:floating_ip_pool]
|
|
||||||
@resource[:floating_ip_pool]
|
|
||||||
else
|
|
||||||
@property_hash[:floating_ip_pool]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def flavor=(value)
|
|
||||||
@property_flush[:flavor] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def node_processes=(value)
|
|
||||||
@property_flush[:node_processes] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def floating_ip_pool=(value)
|
|
||||||
@property_flush[:floating_ip_pool] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def auto_security_group=(value)
|
|
||||||
@property_flush[:auto_security_group] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def description=(value)
|
|
||||||
@property_flush[:description] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def security_groups=(value)
|
|
||||||
@property_flush[:security_groups] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.instances
|
|
||||||
list = request('dataprocessing node group template', 'list')
|
|
||||||
list.collect do |template|
|
|
||||||
template_info = request('dataprocessing node group template', 'show', template[:id])
|
|
||||||
new({
|
|
||||||
:name => template_info[:name],
|
|
||||||
:ensure => :present,
|
|
||||||
:id => template_info[:id],
|
|
||||||
:plugin => template_info[:plugin_name],
|
|
||||||
:plugin_version => template_info[:plugin_version],
|
|
||||||
:flavor => template_info[:flavor_id],
|
|
||||||
:description => template_info[:description],
|
|
||||||
:node_processes => template_info[:node_processes].split(',').map(&:strip),
|
|
||||||
:auto_security_group => template_info[:auto_security_group].downcase.to_sym,
|
|
||||||
:floating_ip_pool => template_info[:floating_ip_pool],
|
|
||||||
:security_groups => string2list(template_info[:security_groups]),
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.string2list(input)
|
|
||||||
return [] if input.eql? "None"
|
|
||||||
return input[1..-2].split(",").map { |x| x.match(/'(.*?)'/)[1] }
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.prefetch(resources)
|
|
||||||
node_group_templates = instances
|
|
||||||
resources.keys.each do |name|
|
|
||||||
if provider = node_group_templates.find{ |template| template.name == name }
|
|
||||||
resources[name].provider = provider
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def flush
|
|
||||||
options = []
|
|
||||||
if @property_flush && !@property_flush.empty?
|
|
||||||
options << @property_hash[:id]
|
|
||||||
options << '--auto-security-group-enable' if @property_flush[:auto_security_group] == :true
|
|
||||||
options << '--auto-security-group-disable' if @property_flush[:auto_security_group] == :false
|
|
||||||
options << '--flavor' << @property_flush[:flavor] if @property_flush[:flavor]
|
|
||||||
options << '--description' << @property_flush[:description] if @property_flush[:description]
|
|
||||||
options << '--floating-ip-pool' << @property_flush[:floating_ip_pool] if @property_flush[:floating_ip_pool]
|
|
||||||
options << '--processes' << @property_flush[:node_processes] if @property_flush[:node_processes]
|
|
||||||
if @property_flush[:security_groups]
|
|
||||||
# OSC has not ability to unset security groups at all for sahara template
|
|
||||||
options << '--security-groups' << @property_flush[:security_groups] unless @property_flush[:security_groups].empty?
|
|
||||||
end
|
|
||||||
self.class.request('dataprocessing node group template', 'update', options)
|
|
||||||
@property_flush.clear
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,57 +0,0 @@
|
||||||
Puppet::Type.newtype(:sahara_api_paste_ini) do
|
|
||||||
|
|
||||||
ensurable
|
|
||||||
|
|
||||||
newparam(:name, :namevar => true) do
|
|
||||||
desc 'Section/setting name to manage from /etc/sahara/api-paste.ini'
|
|
||||||
newvalues(/\S+\/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:value) do
|
|
||||||
desc 'The value of the setting to be defined.'
|
|
||||||
munge do |value|
|
|
||||||
value = value.to_s.strip
|
|
||||||
value.capitalize! if value =~ /^(true|false)$/i
|
|
||||||
value
|
|
||||||
end
|
|
||||||
|
|
||||||
def is_to_s( currentvalue )
|
|
||||||
if resource.secret?
|
|
||||||
return '[old secret redacted]'
|
|
||||||
else
|
|
||||||
return currentvalue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def should_to_s( newvalue )
|
|
||||||
if resource.secret?
|
|
||||||
return '[new secret redacted]'
|
|
||||||
else
|
|
||||||
return newvalue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:secret, :boolean => true) do
|
|
||||||
desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
|
|
||||||
|
|
||||||
newvalues(:true, :false)
|
|
||||||
|
|
||||||
defaultto false
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:ensure_absent_val) do
|
|
||||||
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
|
|
||||||
defaultto('<SERVICE DEFAULT>')
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:key_val_separator) do
|
|
||||||
desc 'The separator string to use between each setting name and value.'
|
|
||||||
defaultto('=')
|
|
||||||
end
|
|
||||||
|
|
||||||
autorequire(:anchor) do
|
|
||||||
['sahara::install::end']
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,27 +0,0 @@
|
||||||
Puppet::Type.newtype(:sahara_api_uwsgi_config) do
|
|
||||||
|
|
||||||
ensurable
|
|
||||||
|
|
||||||
newparam(:name, :namevar => true) do
|
|
||||||
desc 'Section/setting name to manage from sahara-api-uwsgi.ini'
|
|
||||||
newvalues(/\S+\/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:ensure_absent_val) do
|
|
||||||
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
|
|
||||||
defaultto('<SERVICE DEFAULT>')
|
|
||||||
end
|
|
||||||
|
|
||||||
autorequire(:anchor) do
|
|
||||||
['sahara::install::end']
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:value) do
|
|
||||||
desc 'The value of the setting to be defined.'
|
|
||||||
munge do |value|
|
|
||||||
value = value.to_s.strip
|
|
||||||
value.capitalize! if value =~ /^(true|false)$/i
|
|
||||||
value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,61 +0,0 @@
|
||||||
Puppet::Type.newtype(:sahara_cluster_template) do
|
|
||||||
|
|
||||||
ensurable
|
|
||||||
|
|
||||||
newparam(:name, :namevar => true) do
|
|
||||||
desc 'The name of this cluster template.'
|
|
||||||
newvalues(/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:id) do
|
|
||||||
desc 'The unique Id of the cluster template.'
|
|
||||||
validate do |v|
|
|
||||||
raise ArgumentError, 'This is a read only property'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:description) do
|
|
||||||
desc 'The description of this cluster template.'
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:node_groups, :array_matching => :all) do
|
|
||||||
desc 'List of the node groups(names or IDs) and numbers of instances for each one of them.'
|
|
||||||
defaultto { fail 'Property \'node_groups\' is required.' }
|
|
||||||
validate do |group|
|
|
||||||
args = group.split(':')
|
|
||||||
raise ArgumentError, 'You should specify node_groups in format <node_group_name:count> format' unless args.count == 2
|
|
||||||
raise ArgumentError, 'Node group count should be an integer' unless args[1].to_i.to_s == args[1]
|
|
||||||
end
|
|
||||||
|
|
||||||
def insync?(is)
|
|
||||||
is.sort == should.sort
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:auto_config) do
|
|
||||||
desc 'If enabled, instances of the cluster will be automatically configured'
|
|
||||||
newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
|
|
||||||
defaultto(true)
|
|
||||||
munge do |value|
|
|
||||||
value.to_s.downcase.to_sym
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
validate do
|
|
||||||
if self[:node_groups].empty?
|
|
||||||
raise ArgumentError, 'You should specify at least one node group.'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
autorequire(:anchor) do
|
|
||||||
['sahara::service::end']
|
|
||||||
end
|
|
||||||
|
|
||||||
autorequire(:sahara_node_group_template) do
|
|
||||||
templates = []
|
|
||||||
self[:node_groups].each do |template|
|
|
||||||
templates.push(template.split(':')[0])
|
|
||||||
end
|
|
||||||
templates
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,59 +0,0 @@
|
||||||
Puppet::Type.newtype(:sahara_config) do
|
|
||||||
ensurable
|
|
||||||
|
|
||||||
newparam(:name, :namevar => true) do
|
|
||||||
desc 'Section/setting name to manage from sahara.conf'
|
|
||||||
newvalues(/\S+\/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:value, :array_matching => :all) do
|
|
||||||
desc 'The value of the setting to be defined.'
|
|
||||||
def insync?(is)
|
|
||||||
return true if @should.empty?
|
|
||||||
return false unless is.is_a? Array
|
|
||||||
return false unless is.length == @should.length
|
|
||||||
return (
|
|
||||||
is & @should == is or
|
|
||||||
is & @should.map(&:to_s) == is
|
|
||||||
)
|
|
||||||
end
|
|
||||||
munge do |value|
|
|
||||||
value = value.to_s.strip
|
|
||||||
value.capitalize! if value =~ /^(true|false)$/i
|
|
||||||
value
|
|
||||||
end
|
|
||||||
|
|
||||||
def is_to_s(currentvalue)
|
|
||||||
if resource.secret?
|
|
||||||
return '[old secret redacted]'
|
|
||||||
else
|
|
||||||
return currentvalue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def should_to_s(newvalue)
|
|
||||||
if resource.secret?
|
|
||||||
return '[new secret redacted]'
|
|
||||||
else
|
|
||||||
return newvalue
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:secret, :boolean => true) do
|
|
||||||
desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
|
|
||||||
|
|
||||||
newvalues(:true, :false)
|
|
||||||
|
|
||||||
defaultto false
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:ensure_absent_val) do
|
|
||||||
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
|
|
||||||
defaultto('<SERVICE DEFAULT>')
|
|
||||||
end
|
|
||||||
|
|
||||||
autorequire(:anchor) do
|
|
||||||
['sahara::install::end']
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,80 +0,0 @@
|
||||||
Puppet::Type.newtype(:sahara_node_group_template) do
|
|
||||||
|
|
||||||
ensurable
|
|
||||||
|
|
||||||
newparam(:name, :namevar => true) do
|
|
||||||
desc 'The name of this node group template.'
|
|
||||||
newvalues(/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:id) do
|
|
||||||
desc 'The unique Id of the node group template.'
|
|
||||||
validate do |v|
|
|
||||||
raise ArgumentError, 'This is a read only property'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:plugin) do
|
|
||||||
desc 'The plugin name for current template'
|
|
||||||
defaultto { fail 'Property \'plugin\' is required.' }
|
|
||||||
newvalues(/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:description) do
|
|
||||||
desc 'The description of this node group template.'
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:plugin_version) do
|
|
||||||
desc 'The version of plugin for this template'
|
|
||||||
defaultto { fail 'Property \'plugin_version\' is required.' }
|
|
||||||
newvalues(/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:node_processes, :array_matching => :all) do
|
|
||||||
desc 'List of the processes that will be launched on each instance'
|
|
||||||
defaultto { fail 'Property \'node_processes\' is required.' }
|
|
||||||
|
|
||||||
def insync?(is)
|
|
||||||
is.sort == should.sort
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:flavor) do
|
|
||||||
desc 'The id or name of the flavor assigned to this node group template'
|
|
||||||
defaultto { fail 'Property \'flavor\' is required.' }
|
|
||||||
newvalues(/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:floating_ip_pool) do
|
|
||||||
desc 'The id or name of floating ip pool'
|
|
||||||
newvalues(/\S+/)
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:auto_security_group) do
|
|
||||||
desc 'Indicates if an additional security group should be created for the node group'
|
|
||||||
newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
|
|
||||||
defaultto(true)
|
|
||||||
munge do |value|
|
|
||||||
value.to_s.downcase.to_sym
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
newproperty(:security_groups, :array_matching => :all) do
|
|
||||||
desc 'List of the processes that will be launched on each instance'
|
|
||||||
defaultto([])
|
|
||||||
|
|
||||||
def insync?(is)
|
|
||||||
is.sort == should.sort
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
validate do
|
|
||||||
if self[:node_processes].empty?
|
|
||||||
raise ArgumentError, 'You should specify at least one node process.'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
autorequire(:anchor) do
|
|
||||||
['sahara::service::end']
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,26 +0,0 @@
|
||||||
# == Class: sahara::client
|
|
||||||
#
|
|
||||||
# Installs the sahara python library.
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*package_ensure*]
|
|
||||||
# (Optional) Ensure state for package.
|
|
||||||
# Default: present.
|
|
||||||
#
|
|
||||||
class sahara::client (
|
|
||||||
$package_ensure = 'present'
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::params
|
|
||||||
|
|
||||||
package { 'python-saharaclient':
|
|
||||||
ensure => $package_ensure,
|
|
||||||
name => $::sahara::params::client_package_name,
|
|
||||||
tag => ['openstack', 'openstackclient'],
|
|
||||||
}
|
|
||||||
|
|
||||||
include openstacklib::openstackclient
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
# == Class: sahara::config
|
|
||||||
#
|
|
||||||
# This class is used to manage arbitrary Sahara configurations.
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*sahara_config*]
|
|
||||||
# (optional) Allow configuration of arbitrary Sahara configurations.
|
|
||||||
# The value is an hash of sahara_config resources. Example:
|
|
||||||
# { 'DEFAULT/foo' => { value => 'fooValue'},
|
|
||||||
# 'DEFAULT/bar' => { value => 'barValue'}
|
|
||||||
# }
|
|
||||||
# In yaml format, Example:
|
|
||||||
# sahara_config:
|
|
||||||
# DEFAULT/foo:
|
|
||||||
# value: fooValue
|
|
||||||
# DEFAULT/bar:
|
|
||||||
# value: barValue
|
|
||||||
#
|
|
||||||
# [*sahara_api_paste_ini*]
|
|
||||||
# (optional) Allow configuration of /etc/sahara/api-paste.ini options.
|
|
||||||
#
|
|
||||||
# NOTE: The configuration MUST NOT be already handled by this module
|
|
||||||
# or Puppet catalog compilation will fail with duplicate resources.
|
|
||||||
#
|
|
||||||
class sahara::config (
|
|
||||||
Hash $sahara_config = {},
|
|
||||||
Hash $sahara_api_paste_ini = {},
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
create_resources('sahara_config', $sahara_config)
|
|
||||||
create_resources('sahara_api_paste_ini', $sahara_api_paste_ini)
|
|
||||||
}
|
|
|
@ -1,71 +0,0 @@
|
||||||
# == Class: sahara:db
|
|
||||||
#
|
|
||||||
# Configure the Sahara database
|
|
||||||
#
|
|
||||||
# == Parameters
|
|
||||||
#
|
|
||||||
# [*database_db_max_retries*]
|
|
||||||
# (optional) Maximum retries in case of connection error or deadlock error
|
|
||||||
# before error is raised. Set to -1 to specify an infinite retry count.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*database_connection*]
|
|
||||||
# (Optional) The connection string to use to connect to the database.
|
|
||||||
# Defaults to 'mysql+pymysql://sahara:secrete@localhost:3306/sahara'
|
|
||||||
#
|
|
||||||
# [*database_max_retries*]
|
|
||||||
# (Optional) Maximum number of database connection retries during startup.
|
|
||||||
# Set to -1 to specify an infinite retry count.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*database_connection_recycle_time*]
|
|
||||||
# (Optional) Timeout before idle SQL connections are reaped.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*database_retry_interval*]
|
|
||||||
# (optional) Interval between retries of opening a database connection.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*database_max_pool_size*]
|
|
||||||
# (optional) Maximum number of SQL connections to keep open in a pool.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*database_max_overflow*]
|
|
||||||
# (optional) If set, use this value for max_overflow with sqlalchemy.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*database_pool_timeout*]
|
|
||||||
# (Optional) If set, use this value for pool_timeout with SQLAlchemy.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*mysql_enable_ndb*]
|
|
||||||
# (Optional) If True, transparently enables support for handling MySQL
|
|
||||||
# Cluster (NDB).
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
class sahara::db (
|
|
||||||
$database_db_max_retries = $facts['os_service_default'],
|
|
||||||
$database_connection = 'mysql+pymysql://sahara:secrete@localhost:3306/sahara',
|
|
||||||
$database_connection_recycle_time = $facts['os_service_default'],
|
|
||||||
$database_max_pool_size = $facts['os_service_default'],
|
|
||||||
$database_max_retries = $facts['os_service_default'],
|
|
||||||
$database_retry_interval = $facts['os_service_default'],
|
|
||||||
$database_max_overflow = $facts['os_service_default'],
|
|
||||||
$database_pool_timeout = $facts['os_service_default'],
|
|
||||||
$mysql_enable_ndb = $facts['os_service_default'],
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
oslo::db { 'sahara_config':
|
|
||||||
db_max_retries => $database_db_max_retries,
|
|
||||||
connection => $database_connection,
|
|
||||||
connection_recycle_time => $database_connection_recycle_time,
|
|
||||||
max_pool_size => $database_max_pool_size,
|
|
||||||
max_retries => $database_max_retries,
|
|
||||||
retry_interval => $database_retry_interval,
|
|
||||||
max_overflow => $database_max_overflow,
|
|
||||||
pool_timeout => $database_pool_timeout,
|
|
||||||
mysql_enable_ndb => $mysql_enable_ndb,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,61 +0,0 @@
|
||||||
# == Class: sahara::db::mysql
|
|
||||||
#
|
|
||||||
# The sahara::db::mysql class creates a MySQL database for sahara.
|
|
||||||
# It must be used on the MySQL server.
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*password*]
|
|
||||||
# (Required) Password to connect to the database.
|
|
||||||
#
|
|
||||||
# [*dbname*]
|
|
||||||
# (Optional) Name of the database.
|
|
||||||
# Defaults to 'sahara'.
|
|
||||||
#
|
|
||||||
# [*user*]
|
|
||||||
# (Optional) User to connect to the database.
|
|
||||||
# Defaults to 'sahara'.
|
|
||||||
#
|
|
||||||
# [*host*]
|
|
||||||
# (Optional) The default source host user is allowed to connect from.
|
|
||||||
# Defaults to '127.0.0.1'
|
|
||||||
#
|
|
||||||
# [*allowed_hosts*]
|
|
||||||
# (Optional) Other hosts the user is allowed to connect from.
|
|
||||||
# Defaults to 'undef'.
|
|
||||||
#
|
|
||||||
# [*charset*]
|
|
||||||
# (Optional) The database charset.
|
|
||||||
# Defaults to 'utf8'.
|
|
||||||
#
|
|
||||||
# [*collate*]
|
|
||||||
# (Optional) Charset collate of sahara database.
|
|
||||||
# Defaults to 'utf8_general_ci'.
|
|
||||||
#
|
|
||||||
class sahara::db::mysql(
|
|
||||||
String[1] $password,
|
|
||||||
$dbname = 'sahara',
|
|
||||||
$user = 'sahara',
|
|
||||||
$host = '127.0.0.1',
|
|
||||||
$allowed_hosts = undef,
|
|
||||||
$charset = 'utf8',
|
|
||||||
$collate = 'utf8_general_ci',
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
::openstacklib::db::mysql{ 'sahara':
|
|
||||||
user => $user,
|
|
||||||
password => $password,
|
|
||||||
dbname => $dbname,
|
|
||||||
host => $host,
|
|
||||||
charset => $charset,
|
|
||||||
collate => $collate,
|
|
||||||
allowed_hosts => $allowed_hosts,
|
|
||||||
}
|
|
||||||
|
|
||||||
Anchor['sahara::db::begin']
|
|
||||||
~> Class['sahara::db::mysql']
|
|
||||||
~> Anchor['sahara::db::end']
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
# == Class: sahara::db::postgresql
|
|
||||||
#
|
|
||||||
# The sahara::db::postgresql creates a PostgreSQL database for sahara.
|
|
||||||
# It must be used on the PostgreSQL server.
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*password*]
|
|
||||||
# (Required) Password to connect to the database.
|
|
||||||
#
|
|
||||||
# [*dbname*]
|
|
||||||
# (Optional) Name of the database.
|
|
||||||
# Defaults to 'sahara'.
|
|
||||||
#
|
|
||||||
# [*user*]
|
|
||||||
# (Optional) User to connect to the database.
|
|
||||||
# Defaults to 'sahara'.
|
|
||||||
#
|
|
||||||
# [*encoding*]
|
|
||||||
# (Optional) The charset to use for the database.
|
|
||||||
# Default to undef.
|
|
||||||
#
|
|
||||||
# [*privileges*]
|
|
||||||
# (Optional) Privileges given to the database user.
|
|
||||||
# Default to 'ALL'
|
|
||||||
#
|
|
||||||
class sahara::db::postgresql(
|
|
||||||
$password,
|
|
||||||
$dbname = 'sahara',
|
|
||||||
$user = 'sahara',
|
|
||||||
$encoding = undef,
|
|
||||||
$privileges = 'ALL',
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
::openstacklib::db::postgresql { 'sahara':
|
|
||||||
password => $password,
|
|
||||||
dbname => $dbname,
|
|
||||||
user => $user,
|
|
||||||
encoding => $encoding,
|
|
||||||
privileges => $privileges,
|
|
||||||
}
|
|
||||||
|
|
||||||
Anchor['sahara::db::begin']
|
|
||||||
~> Class['sahara::db::postgresql']
|
|
||||||
~> Anchor['sahara::db::end']
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
#
|
|
||||||
# Class to execute sahara dbsync
|
|
||||||
#
|
|
||||||
# == Parameters
|
|
||||||
#
|
|
||||||
# [*extra_params*]
|
|
||||||
# (Optional) String of extra command line parameters to append
|
|
||||||
# to the sahara-db-manage command.
|
|
||||||
# Defaults to '--config-file /etc/sahara/sahara.conf'
|
|
||||||
#
|
|
||||||
# [*db_sync_timeout*]
|
|
||||||
# (Optional) Timeout for the execution of the db_sync
|
|
||||||
# Defaults to 300
|
|
||||||
#
|
|
||||||
class sahara::db::sync(
|
|
||||||
$extra_params = '--config-file /etc/sahara/sahara.conf',
|
|
||||||
$db_sync_timeout = 300,
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::params
|
|
||||||
|
|
||||||
exec { 'sahara-dbmanage':
|
|
||||||
command => "sahara-db-manage ${extra_params} upgrade head",
|
|
||||||
path => '/usr/bin',
|
|
||||||
user => $::sahara::params::user,
|
|
||||||
refreshonly => true,
|
|
||||||
try_sleep => 5,
|
|
||||||
tries => 10,
|
|
||||||
timeout => $db_sync_timeout,
|
|
||||||
logoutput => on_failure,
|
|
||||||
subscribe => [
|
|
||||||
Anchor['sahara::install::end'],
|
|
||||||
Anchor['sahara::config::end'],
|
|
||||||
Anchor['sahara::dbsync::begin']
|
|
||||||
],
|
|
||||||
notify => Anchor['sahara::dbsync::end'],
|
|
||||||
tag => 'openstack-db',
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
# == Class: sahara::deps
|
|
||||||
#
|
|
||||||
# Sahara anchors and dependency management
|
|
||||||
#
|
|
||||||
class sahara::deps {
|
|
||||||
# Setup anchors for install, config and service phases of the module. These
|
|
||||||
# anchors allow external modules to hook the begin and end of any of these
|
|
||||||
# phases. Package or service management can also be replaced by ensuring the
|
|
||||||
# package is absent or turning off service management and having the
|
|
||||||
# replacement depend on the appropriate anchors. When applicable, end tags
|
|
||||||
# should be notified so that subscribers can determine if installation,
|
|
||||||
# config or service state changed and act on that if needed.
|
|
||||||
anchor { 'sahara::install::begin': }
|
|
||||||
-> Package<| tag == 'sahara-package'|>
|
|
||||||
~> anchor { 'sahara::install::end': }
|
|
||||||
-> anchor { 'sahara::config::begin': }
|
|
||||||
-> Sahara_config<||>
|
|
||||||
~> anchor { 'sahara::config::end': }
|
|
||||||
-> anchor { 'sahara::db::begin': }
|
|
||||||
-> anchor { 'sahara::db::end': }
|
|
||||||
~> anchor { 'sahara::dbsync::begin': }
|
|
||||||
-> anchor { 'sahara::dbsync::end': }
|
|
||||||
~> anchor { 'sahara::service::begin': }
|
|
||||||
~> Service<| tag == 'sahara-service' |>
|
|
||||||
~> anchor { 'sahara::service::end': }
|
|
||||||
|
|
||||||
# paste-api.ini config should occur in the config block also.
|
|
||||||
Anchor['sahara::config::begin']
|
|
||||||
-> Sahara_api_paste_ini<||>
|
|
||||||
~> Anchor['sahara::config::end']
|
|
||||||
|
|
||||||
# policy config should occur in the config block also.
|
|
||||||
Anchor['sahara::config::begin']
|
|
||||||
-> Openstacklib::Policy<| tag == 'sahara' |>
|
|
||||||
-> Anchor['sahara::config::end']
|
|
||||||
|
|
||||||
# On any uwsgi config change, we must restart Sahara API.
|
|
||||||
Anchor['sahara::config::begin']
|
|
||||||
-> Sahara_api_uwsgi_config<||>
|
|
||||||
~> Anchor['sahara::config::end']
|
|
||||||
|
|
||||||
# all db settings should be applied and all packages should be installed
|
|
||||||
# before dbsync starts
|
|
||||||
Oslo::Db<||> -> Anchor['sahara::dbsync::begin']
|
|
||||||
|
|
||||||
# We need openstackclient before marking service end so that sahara
|
|
||||||
# will have clients available to create resources. This tag handles the
|
|
||||||
# openstackclient but indirectly since the client is not available in
|
|
||||||
# all catalogs that don't need the client class (like many spec tests)
|
|
||||||
Package<| tag == 'openstackclient'|>
|
|
||||||
-> Anchor['sahara::service::end']
|
|
||||||
|
|
||||||
# Installation or config changes will always restart services.
|
|
||||||
Anchor['sahara::install::end'] ~> Anchor['sahara::service::begin']
|
|
||||||
Anchor['sahara::config::end'] ~> Anchor['sahara::service::begin']
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
# == Class: sahara::healthcheck
|
|
||||||
#
|
|
||||||
# Configure oslo_middleware options in healthcheck section
|
|
||||||
#
|
|
||||||
# == Params
|
|
||||||
#
|
|
||||||
# [*detailed*]
|
|
||||||
# (Optional) Show more detailed information as part of the response.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*backends*]
|
|
||||||
# (Optional) Additional backends that can perform health checks and report
|
|
||||||
# that information back as part of a request.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*disable_by_file_path*]
|
|
||||||
# (Optional) Check the presense of a file to determine if an application
|
|
||||||
# is running on a port.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*disable_by_file_paths*]
|
|
||||||
# (Optional) Check the presense of a file to determine if an application
|
|
||||||
# is running on a port. Expects a "port:path" list of strings.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
class sahara::healthcheck (
|
|
||||||
$detailed = $facts['os_service_default'],
|
|
||||||
$backends = $facts['os_service_default'],
|
|
||||||
$disable_by_file_path = $facts['os_service_default'],
|
|
||||||
$disable_by_file_paths = $facts['os_service_default'],
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
oslo::healthcheck { 'sahara_config':
|
|
||||||
detailed => $detailed,
|
|
||||||
backends => $backends,
|
|
||||||
disable_by_file_path => $disable_by_file_path,
|
|
||||||
disable_by_file_paths => $disable_by_file_paths,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,382 +0,0 @@
|
||||||
# == Class: sahara
|
|
||||||
#
|
|
||||||
# Sahara base package & configuration
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*package_ensure*]
|
|
||||||
# (Optional) Ensure state for package
|
|
||||||
# Defaults to 'present'.
|
|
||||||
#
|
|
||||||
# [*host*]
|
|
||||||
# (Optional) Hostname for sahara to listen on
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*port*]
|
|
||||||
# (Optional) Port for sahara to listen on
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*plugins*]
|
|
||||||
# (Optional) List of plugins to be loaded.
|
|
||||||
# Sahara preserves the order of the list when returning it.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*use_floating_ips*]
|
|
||||||
# (Optional) Whether to use floating IPs to communicate with instances.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*node_domain*]
|
|
||||||
# (Optional) The suffix of the node's FQDN.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*use_designate*]
|
|
||||||
# (Optional) Use Designate for internal and external hostnames resolution.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*nameservers*]
|
|
||||||
# (Optional) IP addresses of Designate nameservers.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*use_ssl*]
|
|
||||||
# (optional) Enable SSL on the API server
|
|
||||||
# Defaults to false
|
|
||||||
#
|
|
||||||
# [*cert_file*]
|
|
||||||
# (optinal) Certificate file to use when starting API server securely
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*key_file*]
|
|
||||||
# (optional) Private key file to use when starting API server securely
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*ca_file*]
|
|
||||||
# (optional) CA certificate file to use to verify connecting clients
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# == database configuration options
|
|
||||||
#
|
|
||||||
# [*sync_db*]
|
|
||||||
# (Optional) Enable dbsync
|
|
||||||
# Defaults to true.
|
|
||||||
#
|
|
||||||
# == rpc backend options
|
|
||||||
#
|
|
||||||
# [*default_transport_url*]
|
|
||||||
# (optional) A URL representing the messaging driver to use and its full
|
|
||||||
# configuration. Transport URLs take the form:
|
|
||||||
# transport://user:pass@host1:port[,hostN:portN]/virtual_host
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*rpc_response_timeout*]
|
|
||||||
# (Optional) Seconds to wait for a response from a call.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*control_exchange*]
|
|
||||||
# (Optional) The default exchange to scope topics.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_durable_queues*]
|
|
||||||
# (optional) Use durable queues in AMQP
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*rabbit_ha_queues*]
|
|
||||||
# (Optional) Use durable queues in RabbitMQ.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*rabbit_use_ssl*]
|
|
||||||
# (Optional) Connect over SSL for RabbitMQ.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*rabbit_login_method*]
|
|
||||||
# (Optional) Method to auth with the rabbit server.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*rabbit_retry_interval*]
|
|
||||||
# (Optional) Reconnection attempt frequency for rabbit.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*rabbit_retry_backoff*]
|
|
||||||
# (Optional) Backoff between reconnection attempts for rabbit.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*rabbit_heartbeat_in_pthread*]
|
|
||||||
# (Optional) EXPERIMENTAL: Run the health check heartbeat thread
|
|
||||||
# through a native python thread. By default if this
|
|
||||||
# option isn't provided the health check heartbeat will
|
|
||||||
# inherit the execution model from the parent process. By
|
|
||||||
# example if the parent process have monkey patched the
|
|
||||||
# stdlib by using eventlet/greenlet then the heartbeat
|
|
||||||
# will be run through a green thread.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*rabbit_quorum_queue*]
|
|
||||||
# (Optional) Use quorum queues in RabbitMQ.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*rabbit_quorum_delivery_limit*]
|
|
||||||
# (Optional) Each time a message is rdelivered to a consumer, a counter is
|
|
||||||
# incremented. Once the redelivery count exceeds the delivery limit
|
|
||||||
# the message gets dropped or dead-lettered.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*rabbit_quorum_max_memory_length*]
|
|
||||||
# (Optional) Limit the number of messages in the quorum queue.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*rabbit_quorum_max_memory_bytes*]
|
|
||||||
# (Optional) Limit the number of memory bytes used by the quorum queue.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*kombu_ssl_version*]
|
|
||||||
# (optional) SSL version to use (valid only if SSL enabled).
|
|
||||||
# Valid values are TLSv1, SSLv23 and SSLv3. SSLv2 may be
|
|
||||||
# available on some distributions.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*kombu_ssl_keyfile*]
|
|
||||||
# (Optional) SSL key file (valid only if SSL enabled).
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*kombu_ssl_certfile*]
|
|
||||||
# (Optional) SSL cert file (valid only if SSL enabled).
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*kombu_ssl_ca_certs*]
|
|
||||||
# (Optional) SSL certification authority file (valid only if SSL enabled).
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*kombu_reconnect_delay*]
|
|
||||||
# (Optional) Backoff on cancel notification (valid only if SSL enabled).
|
|
||||||
# (floating-point value)
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*kombu_failover_strategy*]
|
|
||||||
# (Optional) Determines how the next RabbitMQ node is chosen in case the one
|
|
||||||
# we are currently connected to becomes unavailable. Takes effect only if
|
|
||||||
# more than one RabbitMQ node is provided in config. (string value)
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*kombu_compression*]
|
|
||||||
# (optional) Possible values are: gzip, bz2. If not set compression will not
|
|
||||||
# be used. This option may notbe available in future versions. EXPERIMENTAL.
|
|
||||||
# (string value)
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_server_request_prefix*]
|
|
||||||
# (Optional) Address prefix used when sending to a specific server
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_broadcast_prefix*]
|
|
||||||
# (Optional) address prefix used when broadcasting to all servers
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_group_request_prefix*]
|
|
||||||
# (Optional) address prefix when sending to any server in group
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_container_name*]
|
|
||||||
# (Optional) Name for the AMQP container
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_idle_timeout*]
|
|
||||||
# (Optional) Timeout for inactive connections
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_trace*]
|
|
||||||
# (Optional) Debug: dump AMQP frames to stdout
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_ssl_ca_file*]
|
|
||||||
# (Optional) CA certificate PEM file to verify server certificate
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_ssl_cert_file*]
|
|
||||||
# (Optional) Identifying certificate PEM file to present to clients
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_ssl_key_file*]
|
|
||||||
# (Optional) Private key PEM file used to sign cert_file certificate
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_ssl_key_password*]
|
|
||||||
# (Optional) Password for decrypting ssl_key_file (if encrypted)
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_sasl_mechanisms*]
|
|
||||||
# (Optional) Space separated list of acceptable SASL mechanisms
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_sasl_config_dir*]
|
|
||||||
# (Optional) Path to directory that contains the SASL configuration
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_sasl_config_name*]
|
|
||||||
# (Optional) Name of configuration file (without .conf suffix)
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_username*]
|
|
||||||
# (Optional) User name for message broker authentication
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*amqp_password*]
|
|
||||||
# (Optional) Password for message broker authentication
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*purge_config*]
|
|
||||||
# (optional) Whether to set only the specified config options
|
|
||||||
# in the sahara config.
|
|
||||||
# Defaults to false.
|
|
||||||
#
|
|
||||||
# [*default_ntp_server*]
|
|
||||||
# (optional) default ntp server to be used by the cluster instances
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
class sahara(
|
|
||||||
$package_ensure = 'present',
|
|
||||||
$host = $facts['os_service_default'],
|
|
||||||
$port = $facts['os_service_default'],
|
|
||||||
$plugins = $facts['os_service_default'],
|
|
||||||
$use_floating_ips = $facts['os_service_default'],
|
|
||||||
$node_domain = $facts['os_service_default'],
|
|
||||||
$use_designate = $facts['os_service_default'],
|
|
||||||
$nameservers = $facts['os_service_default'],
|
|
||||||
Boolean $use_ssl = false,
|
|
||||||
$ca_file = $facts['os_service_default'],
|
|
||||||
$cert_file = $facts['os_service_default'],
|
|
||||||
$key_file = $facts['os_service_default'],
|
|
||||||
Boolean $sync_db = true,
|
|
||||||
$default_transport_url = $facts['os_service_default'],
|
|
||||||
$rpc_response_timeout = $facts['os_service_default'],
|
|
||||||
$control_exchange = $facts['os_service_default'],
|
|
||||||
$amqp_durable_queues = $facts['os_service_default'],
|
|
||||||
$rabbit_ha_queues = $facts['os_service_default'],
|
|
||||||
$rabbit_use_ssl = $facts['os_service_default'],
|
|
||||||
$rabbit_login_method = $facts['os_service_default'],
|
|
||||||
$rabbit_retry_interval = $facts['os_service_default'],
|
|
||||||
$rabbit_retry_backoff = $facts['os_service_default'],
|
|
||||||
$rabbit_heartbeat_in_pthread = $facts['os_service_default'],
|
|
||||||
$rabbit_quorum_queue = $facts['os_service_default'],
|
|
||||||
$rabbit_quorum_delivery_limit = $facts['os_service_default'],
|
|
||||||
$rabbit_quorum_max_memory_length = $facts['os_service_default'],
|
|
||||||
$rabbit_quorum_max_memory_bytes = $facts['os_service_default'],
|
|
||||||
$kombu_ssl_version = $facts['os_service_default'],
|
|
||||||
$kombu_ssl_keyfile = $facts['os_service_default'],
|
|
||||||
$kombu_ssl_certfile = $facts['os_service_default'],
|
|
||||||
$kombu_ssl_ca_certs = $facts['os_service_default'],
|
|
||||||
$kombu_reconnect_delay = $facts['os_service_default'],
|
|
||||||
$kombu_failover_strategy = $facts['os_service_default'],
|
|
||||||
$kombu_compression = $facts['os_service_default'],
|
|
||||||
$amqp_server_request_prefix = $facts['os_service_default'],
|
|
||||||
$amqp_broadcast_prefix = $facts['os_service_default'],
|
|
||||||
$amqp_group_request_prefix = $facts['os_service_default'],
|
|
||||||
$amqp_container_name = $facts['os_service_default'],
|
|
||||||
$amqp_idle_timeout = $facts['os_service_default'],
|
|
||||||
$amqp_trace = $facts['os_service_default'],
|
|
||||||
$amqp_ssl_ca_file = $facts['os_service_default'],
|
|
||||||
$amqp_ssl_cert_file = $facts['os_service_default'],
|
|
||||||
$amqp_ssl_key_file = $facts['os_service_default'],
|
|
||||||
$amqp_ssl_key_password = $facts['os_service_default'],
|
|
||||||
$amqp_sasl_mechanisms = $facts['os_service_default'],
|
|
||||||
$amqp_sasl_config_dir = $facts['os_service_default'],
|
|
||||||
$amqp_sasl_config_name = $facts['os_service_default'],
|
|
||||||
$amqp_username = $facts['os_service_default'],
|
|
||||||
$amqp_password = $facts['os_service_default'],
|
|
||||||
Boolean $purge_config = false,
|
|
||||||
$default_ntp_server = $facts['os_service_default'],
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::params
|
|
||||||
include sahara::db
|
|
||||||
|
|
||||||
package { 'sahara-common':
|
|
||||||
ensure => $package_ensure,
|
|
||||||
name => $::sahara::params::common_package_name,
|
|
||||||
tag => ['openstack', 'sahara-package'],
|
|
||||||
}
|
|
||||||
|
|
||||||
resources { 'sahara_config':
|
|
||||||
purge => $purge_config,
|
|
||||||
}
|
|
||||||
|
|
||||||
sahara_config {
|
|
||||||
'DEFAULT/plugins': value => join(any2array($plugins),',');
|
|
||||||
'DEFAULT/use_floating_ips': value => $use_floating_ips;
|
|
||||||
'DEFAULT/node_domain': value => $node_domain;
|
|
||||||
'DEFAULT/use_designate': value => $use_designate;
|
|
||||||
'DEFAULT/nameservers': value => join(any2array($nameservers), ',');
|
|
||||||
'DEFAULT/host': value => $host;
|
|
||||||
'DEFAULT/port': value => $port;
|
|
||||||
'DEFAULT/default_ntp_server': value => $default_ntp_server;
|
|
||||||
}
|
|
||||||
|
|
||||||
oslo::messaging::default { 'sahara_config':
|
|
||||||
transport_url => $default_transport_url,
|
|
||||||
rpc_response_timeout => $rpc_response_timeout,
|
|
||||||
control_exchange => $control_exchange,
|
|
||||||
}
|
|
||||||
|
|
||||||
oslo::messaging::rabbit { 'sahara_config':
|
|
||||||
rabbit_ha_queues => $rabbit_ha_queues,
|
|
||||||
rabbit_use_ssl => $rabbit_use_ssl,
|
|
||||||
kombu_failover_strategy => $kombu_failover_strategy,
|
|
||||||
kombu_compression => $kombu_compression,
|
|
||||||
kombu_reconnect_delay => $kombu_reconnect_delay,
|
|
||||||
kombu_ssl_version => $kombu_ssl_version,
|
|
||||||
kombu_ssl_keyfile => $kombu_ssl_keyfile,
|
|
||||||
kombu_ssl_certfile => $kombu_ssl_certfile,
|
|
||||||
kombu_ssl_ca_certs => $kombu_ssl_ca_certs,
|
|
||||||
amqp_durable_queues => $amqp_durable_queues,
|
|
||||||
rabbit_login_method => $rabbit_login_method,
|
|
||||||
rabbit_retry_interval => $rabbit_retry_interval,
|
|
||||||
rabbit_retry_backoff => $rabbit_retry_backoff,
|
|
||||||
heartbeat_in_pthread => $rabbit_heartbeat_in_pthread,
|
|
||||||
rabbit_quorum_queue => $rabbit_quorum_queue,
|
|
||||||
rabbit_quorum_delivery_limit => $rabbit_quorum_delivery_limit,
|
|
||||||
rabbit_quorum_max_memory_length => $rabbit_quorum_max_memory_length,
|
|
||||||
rabbit_quorum_max_memory_bytes => $rabbit_quorum_max_memory_bytes,
|
|
||||||
}
|
|
||||||
|
|
||||||
oslo::messaging::amqp { 'sahara_config':
|
|
||||||
server_request_prefix => $amqp_server_request_prefix,
|
|
||||||
broadcast_prefix => $amqp_broadcast_prefix,
|
|
||||||
group_request_prefix => $amqp_group_request_prefix,
|
|
||||||
container_name => $amqp_container_name,
|
|
||||||
idle_timeout => $amqp_idle_timeout,
|
|
||||||
trace => $amqp_trace,
|
|
||||||
ssl_ca_file => $amqp_ssl_ca_file,
|
|
||||||
ssl_cert_file => $amqp_ssl_cert_file,
|
|
||||||
ssl_key_file => $amqp_ssl_key_file,
|
|
||||||
ssl_key_password => $amqp_ssl_key_password,
|
|
||||||
sasl_mechanisms => $amqp_sasl_mechanisms,
|
|
||||||
sasl_config_dir => $amqp_sasl_config_dir,
|
|
||||||
sasl_config_name => $amqp_sasl_config_name,
|
|
||||||
username => $amqp_username,
|
|
||||||
password => $amqp_password,
|
|
||||||
}
|
|
||||||
|
|
||||||
if $use_ssl {
|
|
||||||
if is_service_default($cert_file) {
|
|
||||||
fail('The cert_file parameter is required when use_ssl is set to true')
|
|
||||||
}
|
|
||||||
if is_service_default($key_file) {
|
|
||||||
fail('The key_file parameter is required when use_ssl is set to true')
|
|
||||||
}
|
|
||||||
sahara_config {
|
|
||||||
'ssl/cert_file': value => $cert_file;
|
|
||||||
'ssl/key_file': value => $key_file;
|
|
||||||
'ssl/ca_file': value => $ca_file;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sahara_config {
|
|
||||||
'ssl/cert_file': ensure => absent;
|
|
||||||
'ssl/key_file': ensure => absent;
|
|
||||||
'ssl/ca_file': ensure => absent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if $sync_db {
|
|
||||||
include sahara::db::sync
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,129 +0,0 @@
|
||||||
# == Class: sahara::keystone::auth
|
|
||||||
#
|
|
||||||
# Configures sahara service and endpoint in Keystone.
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*password*]
|
|
||||||
# (Required) Password for Sahara user.
|
|
||||||
#
|
|
||||||
# [*service_name*]
|
|
||||||
# (Optional) Name of the service.
|
|
||||||
# Defaults to 'sahara'
|
|
||||||
#
|
|
||||||
# [*auth_name*]
|
|
||||||
# (Optional) Username for sahara service.
|
|
||||||
# Defaults to 'sahara'.
|
|
||||||
#
|
|
||||||
# [*email*]
|
|
||||||
# (Optional) Email for Sahara user.
|
|
||||||
# Defaults to 'sahara@localhost'.
|
|
||||||
#
|
|
||||||
# [*tenant*]
|
|
||||||
# (Optional) Tenant for Sahara user.
|
|
||||||
# Defaults to 'services'.
|
|
||||||
#
|
|
||||||
# [*roles*]
|
|
||||||
# (Optional) List of roles assigned to sahara user.
|
|
||||||
# Defaults to ['admin']
|
|
||||||
#
|
|
||||||
# [*system_scope*]
|
|
||||||
# (Optional) Scope for system operations.
|
|
||||||
# Defaults to 'all'
|
|
||||||
#
|
|
||||||
# [*system_roles*]
|
|
||||||
# (Optional) List of system roles assigned to sahara user.
|
|
||||||
# Defaults to []
|
|
||||||
#
|
|
||||||
# [*configure_endpoint*]
|
|
||||||
# (Optional) Should Sahara endpoint be configured?
|
|
||||||
# Defaults to true.
|
|
||||||
#
|
|
||||||
# [*configure_user*]
|
|
||||||
# (Optional) Should the service user be configured?
|
|
||||||
# Defaults to true
|
|
||||||
#
|
|
||||||
# [*configure_user_role*]
|
|
||||||
# (Optional) Should the admin role be configured for the service user?
|
|
||||||
# Defaults to true
|
|
||||||
#
|
|
||||||
# [*service_type*]
|
|
||||||
# (Optional) Type of service.
|
|
||||||
# Defaults to 'data-processing'.
|
|
||||||
#
|
|
||||||
# [*service_description*]
|
|
||||||
# (Optional) Description of service.
|
|
||||||
# Defaults to 'Sahara Data Processing'.
|
|
||||||
#
|
|
||||||
# [*region*]
|
|
||||||
# (Optional) Region for endpoint.
|
|
||||||
# Defaults to 'RegionOne'.
|
|
||||||
#
|
|
||||||
# [*public_url*]
|
|
||||||
# (Optional) The endpoint's public url.
|
|
||||||
# This url should *not* contain any trailing '/'.
|
|
||||||
# Defaults to 'http://127.0.0.1:8386'
|
|
||||||
#
|
|
||||||
# [*admin_url*]
|
|
||||||
# (Optional) The endpoint's admin url.
|
|
||||||
# This url should *not* contain any trailing '/'.
|
|
||||||
# Defaults to 'http://127.0.0.1:8386'
|
|
||||||
#
|
|
||||||
# [*internal_url*]
|
|
||||||
# (Optional) The endpoint's internal url.
|
|
||||||
# This url should *not* contain any trailing '/'.
|
|
||||||
# Defaults to 'http://127.0.0.1:8386'
|
|
||||||
#
|
|
||||||
# === Examples
|
|
||||||
#
|
|
||||||
# class { 'sahara::keystone::auth':
|
|
||||||
# password => 'secret',
|
|
||||||
# public_url => 'https://10.0.0.10:8386',
|
|
||||||
# internal_url => 'https://10.0.0.11:8386',
|
|
||||||
# admin_url => 'https://10.0.0.11:8386',
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
class sahara::keystone::auth(
|
|
||||||
$password,
|
|
||||||
$service_name = 'sahara',
|
|
||||||
$auth_name = 'sahara',
|
|
||||||
$email = 'sahara@localhost',
|
|
||||||
$tenant = 'services',
|
|
||||||
$roles = ['admin'],
|
|
||||||
$system_scope = 'all',
|
|
||||||
$system_roles = [],
|
|
||||||
$service_type = 'data-processing',
|
|
||||||
$service_description = 'Sahara Data Processing',
|
|
||||||
$configure_endpoint = true,
|
|
||||||
$configure_user = true,
|
|
||||||
$configure_user_role = true,
|
|
||||||
$region = 'RegionOne',
|
|
||||||
$public_url = 'http://127.0.0.1:8386',
|
|
||||||
$admin_url = 'http://127.0.0.1:8386',
|
|
||||||
$internal_url = 'http://127.0.0.1:8386',
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
Keystone::Resource::Service_identity['sahara'] -> Anchor['sahara::service::end']
|
|
||||||
|
|
||||||
keystone::resource::service_identity { 'sahara':
|
|
||||||
configure_user => $configure_user,
|
|
||||||
configure_user_role => $configure_user_role,
|
|
||||||
configure_endpoint => $configure_endpoint,
|
|
||||||
service_type => $service_type,
|
|
||||||
service_description => $service_description,
|
|
||||||
service_name => $service_name,
|
|
||||||
auth_name => $auth_name,
|
|
||||||
region => $region,
|
|
||||||
password => $password,
|
|
||||||
email => $email,
|
|
||||||
tenant => $tenant,
|
|
||||||
roles => $roles,
|
|
||||||
system_scope => $system_scope,
|
|
||||||
system_roles => $system_roles,
|
|
||||||
public_url => $public_url,
|
|
||||||
admin_url => $admin_url,
|
|
||||||
internal_url => $internal_url,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,284 +0,0 @@
|
||||||
# class: sahara::keystone::authtoken
|
|
||||||
#
|
|
||||||
# Configure the keystone_authtoken and the trustee sections in the
|
|
||||||
# configuration file
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*password*]
|
|
||||||
# (Required) Password to create for the service user
|
|
||||||
#
|
|
||||||
# [*username*]
|
|
||||||
# (Optional) The name of the service user
|
|
||||||
# Defaults to 'sahara'
|
|
||||||
#
|
|
||||||
# [*auth_url*]
|
|
||||||
# (Optional) The URL to use for authentication.
|
|
||||||
# Defaults to 'http:://127.0.0.1:5000'
|
|
||||||
#
|
|
||||||
# [*project_name*]
|
|
||||||
# (Optional) Service project name
|
|
||||||
# Defaults to 'services'
|
|
||||||
#
|
|
||||||
# [*user_domain_name*]
|
|
||||||
# (Optional) Name of domain for $username
|
|
||||||
# Defaults to 'Default'
|
|
||||||
#
|
|
||||||
# [*project_domain_name*]
|
|
||||||
# (Optional) Name of domain for $project_name
|
|
||||||
# Defaults to 'Default'
|
|
||||||
#
|
|
||||||
# [*system_scope*]
|
|
||||||
# (Optional) Scope for system operations
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*insecure*]
|
|
||||||
# (Optional) If true, explicitly allow TLS without checking server cert
|
|
||||||
# against any certificate authorities. WARNING: not recommended. Use with
|
|
||||||
# caution.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*auth_section*]
|
|
||||||
# (Optional) Config Section from which to load plugin specific options
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*auth_type*]
|
|
||||||
# (Optional) Authentication type to load
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*www_authenticate_uri*]
|
|
||||||
# (Optional) Complete public Identity API endpoint.
|
|
||||||
# Defaults to 'http://127.0.0.1:5000/'.
|
|
||||||
#
|
|
||||||
# [*auth_version*]
|
|
||||||
# (Optional) API version of the admin Identity API endpoint.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*cache*]
|
|
||||||
# (Optional) Env key for the swift cache.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*cafile*]
|
|
||||||
# (Optional) A PEM encoded Certificate Authority to use when verifying HTTPs
|
|
||||||
# connections.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*certfile*]
|
|
||||||
# (Optional) Required if identity server requires client certificate
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*delay_auth_decision*]
|
|
||||||
# (Optional) Do not handle authorization requests within the middleware, but
|
|
||||||
# delegate the authorization decision to downstream WSGI components. Boolean
|
|
||||||
# value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*enforce_token_bind*]
|
|
||||||
# (Optional) Used to control the use and type of token binding. Can be set
|
|
||||||
# to: "disabled" to not check token binding. "permissive" (default) to
|
|
||||||
# validate binding information if the bind type is of a form known to the
|
|
||||||
# server and ignore it if not. "strict" like "permissive" but if the bind
|
|
||||||
# type is unknown the token will be rejected. "required" any form of token
|
|
||||||
# binding is needed to be allowed. Finally the name of a binding method that
|
|
||||||
# must be present in tokens. String value.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*http_connect_timeout*]
|
|
||||||
# (Optional) Request timeout value for communicating with Identity API
|
|
||||||
# server.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*http_request_max_retries*]
|
|
||||||
# (Optional) How many times are we trying to reconnect when communicating
|
|
||||||
# with Identity API Server. Integer value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*include_service_catalog*]
|
|
||||||
# (Optional) Indicate whether to set the X-Service-Catalog header. If False,
|
|
||||||
# middleware will not ask for service catalog on token validation and will
|
|
||||||
# not set the X-Service-Catalog header. Boolean value.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*keyfile*]
|
|
||||||
# (Optional) Required if identity server requires client certificate
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_pool_conn_get_timeout*]
|
|
||||||
# (Optional) Number of seconds that an operation will wait to get a memcached
|
|
||||||
# client connection from the pool. Integer value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_pool_dead_retry*]
|
|
||||||
# (Optional) Number of seconds memcached server is considered dead before it
|
|
||||||
# is tried again. Integer value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_pool_maxsize*]
|
|
||||||
# (Optional) Maximum total number of open connections to every memcached
|
|
||||||
# server. Integer value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_pool_socket_timeout*]
|
|
||||||
# (Optional) Number of seconds a connection to memcached is held unused in
|
|
||||||
# the pool before it is closed. Integer value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_pool_unused_timeout*]
|
|
||||||
# (Optional) Number of seconds a connection to memcached is held unused in
|
|
||||||
# the pool before it is closed. Integer value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_secret_key*]
|
|
||||||
# (Optional, mandatory if memcache_security_strategy is defined) This string
|
|
||||||
# is used for key derivation.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_security_strategy*]
|
|
||||||
# (Optional) If defined, indicate whether token data should be authenticated
|
|
||||||
# or authenticated and encrypted. If MAC, token data is authenticated (with
|
|
||||||
# HMAC) in the cache. If ENCRYPT, token data is encrypted and authenticated in the
|
|
||||||
# cache. If the value is not one of these options or empty, auth_token will
|
|
||||||
# raise an exception on initialization.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcache_use_advanced_pool*]
|
|
||||||
# (Optional) Use the advanced (eventlet safe) memcached client pool. The
|
|
||||||
# advanced pool will only work under python 2.x Boolean value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*memcached_servers*]
|
|
||||||
# (Optional) Optionally specify a list of memcached server(s) to use for
|
|
||||||
# caching. If left undefined, tokens will instead be cached in-process.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*manage_memcache_package*]
|
|
||||||
# (Optional) Whether to install the python-memcache package.
|
|
||||||
# Defaults to false.
|
|
||||||
#
|
|
||||||
# [*region_name*]
|
|
||||||
# (Optional) The region in which the identity server can be found.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*token_cache_time*]
|
|
||||||
# (Optional) In order to prevent excessive effort spent validating tokens,
|
|
||||||
# the middleware caches previously-seen tokens for a configurable duration
|
|
||||||
# (in seconds). Set to -1 to disable caching completely. Integer value
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*service_token_roles*]
|
|
||||||
# (Optional) A choice of roles that must be present in a service token.
|
|
||||||
# Service tokens are allowed to request that an expired token
|
|
||||||
# can be used and so this check should tightly control that
|
|
||||||
# only actual services should be sending this token. Roles
|
|
||||||
# here are applied as an ANY check so any role in this list
|
|
||||||
# must be present. For backwards compatibility reasons this
|
|
||||||
# currently only affects the allow_expired check. (list value)
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*service_token_roles_required*]
|
|
||||||
# (optional) backwards compatibility to ensure that the service tokens are
|
|
||||||
# compared against a list of possible roles for validity
|
|
||||||
# true/false
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*service_type*]
|
|
||||||
# (Optional) The name or type of the service as it appears in the service
|
|
||||||
# catalog. This is used to validate tokens that have restricted access rules.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*interface*]
|
|
||||||
# (Optional) Interface to use for the Identity API endpoint. Valid values are
|
|
||||||
# "public", "internal" or "admin".
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
class sahara::keystone::authtoken(
|
|
||||||
String[1] $password,
|
|
||||||
$username = 'sahara',
|
|
||||||
$auth_url = 'http://127.0.0.1:5000/',
|
|
||||||
$project_name = 'services',
|
|
||||||
$user_domain_name = 'Default',
|
|
||||||
$project_domain_name = 'Default',
|
|
||||||
$system_scope = $facts['os_service_default'],
|
|
||||||
$insecure = $facts['os_service_default'],
|
|
||||||
$auth_section = $facts['os_service_default'],
|
|
||||||
$auth_type = 'password',
|
|
||||||
$www_authenticate_uri = 'http://127.0.0.1:5000/',
|
|
||||||
$auth_version = $facts['os_service_default'],
|
|
||||||
$cache = $facts['os_service_default'],
|
|
||||||
$cafile = $facts['os_service_default'],
|
|
||||||
$certfile = $facts['os_service_default'],
|
|
||||||
$delay_auth_decision = $facts['os_service_default'],
|
|
||||||
$enforce_token_bind = $facts['os_service_default'],
|
|
||||||
$http_connect_timeout = $facts['os_service_default'],
|
|
||||||
$http_request_max_retries = $facts['os_service_default'],
|
|
||||||
$include_service_catalog = $facts['os_service_default'],
|
|
||||||
$keyfile = $facts['os_service_default'],
|
|
||||||
$memcache_pool_conn_get_timeout = $facts['os_service_default'],
|
|
||||||
$memcache_pool_dead_retry = $facts['os_service_default'],
|
|
||||||
$memcache_pool_maxsize = $facts['os_service_default'],
|
|
||||||
$memcache_pool_socket_timeout = $facts['os_service_default'],
|
|
||||||
$memcache_pool_unused_timeout = $facts['os_service_default'],
|
|
||||||
$memcache_secret_key = $facts['os_service_default'],
|
|
||||||
$memcache_security_strategy = $facts['os_service_default'],
|
|
||||||
$memcache_use_advanced_pool = $facts['os_service_default'],
|
|
||||||
$memcached_servers = $facts['os_service_default'],
|
|
||||||
$manage_memcache_package = false,
|
|
||||||
$region_name = $facts['os_service_default'],
|
|
||||||
$token_cache_time = $facts['os_service_default'],
|
|
||||||
$service_token_roles = $facts['os_service_default'],
|
|
||||||
$service_token_roles_required = $facts['os_service_default'],
|
|
||||||
$service_type = $facts['os_service_default'],
|
|
||||||
$interface = $facts['os_service_default'],
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
keystone::resource::authtoken { 'sahara_config':
|
|
||||||
username => $username,
|
|
||||||
password => $password,
|
|
||||||
project_name => $project_name,
|
|
||||||
auth_url => $auth_url,
|
|
||||||
www_authenticate_uri => $www_authenticate_uri,
|
|
||||||
auth_version => $auth_version,
|
|
||||||
auth_type => $auth_type,
|
|
||||||
auth_section => $auth_section,
|
|
||||||
user_domain_name => $user_domain_name,
|
|
||||||
project_domain_name => $project_domain_name,
|
|
||||||
system_scope => $system_scope,
|
|
||||||
insecure => $insecure,
|
|
||||||
cache => $cache,
|
|
||||||
cafile => $cafile,
|
|
||||||
certfile => $certfile,
|
|
||||||
delay_auth_decision => $delay_auth_decision,
|
|
||||||
enforce_token_bind => $enforce_token_bind,
|
|
||||||
http_connect_timeout => $http_connect_timeout,
|
|
||||||
http_request_max_retries => $http_request_max_retries,
|
|
||||||
include_service_catalog => $include_service_catalog,
|
|
||||||
keyfile => $keyfile,
|
|
||||||
memcache_pool_conn_get_timeout => $memcache_pool_conn_get_timeout,
|
|
||||||
memcache_pool_dead_retry => $memcache_pool_dead_retry,
|
|
||||||
memcache_pool_maxsize => $memcache_pool_maxsize,
|
|
||||||
memcache_pool_socket_timeout => $memcache_pool_socket_timeout,
|
|
||||||
memcache_secret_key => $memcache_secret_key,
|
|
||||||
memcache_security_strategy => $memcache_security_strategy,
|
|
||||||
memcache_use_advanced_pool => $memcache_use_advanced_pool,
|
|
||||||
memcache_pool_unused_timeout => $memcache_pool_unused_timeout,
|
|
||||||
memcached_servers => $memcached_servers,
|
|
||||||
manage_memcache_package => $manage_memcache_package,
|
|
||||||
region_name => $region_name,
|
|
||||||
token_cache_time => $token_cache_time,
|
|
||||||
service_token_roles => $service_token_roles,
|
|
||||||
service_token_roles_required => $service_token_roles_required,
|
|
||||||
service_type => $service_type,
|
|
||||||
interface => $interface,
|
|
||||||
}
|
|
||||||
|
|
||||||
sahara_config {
|
|
||||||
'trustee/username' : value => $username;
|
|
||||||
'trustee/password' : value => $password, secret => true;
|
|
||||||
'trustee/project_name' : value => $project_name;
|
|
||||||
'trustee/auth_url' : value => $auth_url;
|
|
||||||
'trustee/user_domain_name' : value => $user_domain_name;
|
|
||||||
'trustee/project_domain_name' : value => $project_domain_name;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,151 +0,0 @@
|
||||||
# == Class sahara::logging
|
|
||||||
#
|
|
||||||
# sahara extended logging configuration
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*debug*]
|
|
||||||
# (Optional) Should the daemons log debug messages
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*use_syslog*]
|
|
||||||
# Use syslog for logging.
|
|
||||||
# (Optional) Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*use_json*]
|
|
||||||
# Use json for logging.
|
|
||||||
# (Optional) Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*use_journal*]
|
|
||||||
# Use journal for logging.
|
|
||||||
# (Optional) Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*use_stderr*]
|
|
||||||
# (Optional) Use stderr for logging
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*log_facility*]
|
|
||||||
# Syslog facility to receive log lines.
|
|
||||||
# (Optional) Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*log_file*]
|
|
||||||
# (optional) Where to log
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*watch_log_file*]
|
|
||||||
# (Optional) Uses logging handler designed to watch file system (boolean value).
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*log_dir*]
|
|
||||||
# (Optional) Directory where logs should be stored.
|
|
||||||
# If set to $facts['os_service_default'], it will not log to any directory.
|
|
||||||
# Defaults to '/var/log/sahara'
|
|
||||||
#
|
|
||||||
# [*logging_context_format_string*]
|
|
||||||
# (Optional) Format string to use for log messages with context.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\
|
|
||||||
# [%(request_id)s %(user_identity)s] %(instance)s%(message)s'
|
|
||||||
#
|
|
||||||
# [*logging_default_format_string*]
|
|
||||||
# (Optional) Format string to use for log messages without context.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\
|
|
||||||
# [-] %(instance)s%(message)s'
|
|
||||||
#
|
|
||||||
# [*logging_debug_format_suffix*]
|
|
||||||
# (Optional) Formatted data to append to log format when level is DEBUG.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example: '%(funcName)s %(pathname)s:%(lineno)d'
|
|
||||||
#
|
|
||||||
# [*logging_exception_prefix*]
|
|
||||||
# (Optional) Prefix each line of exception output with this format.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example: '%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s'
|
|
||||||
#
|
|
||||||
# [*log_config_append*]
|
|
||||||
# (Optional) The name of an additional logging configuration file.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# See https://docs.python.org/2/howto/logging.html
|
|
||||||
#
|
|
||||||
# [*default_log_levels*]
|
|
||||||
# (0ptional) Hash of logger (keys) and level (values) pairs.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example:
|
|
||||||
# {'amqp' => 'WARN', 'amqplib' => 'WARN', 'boto' => 'WARN',
|
|
||||||
# 'sqlalchemy' => 'WARN', 'suds' => 'INFO', 'iso8601' => 'WARN',
|
|
||||||
# 'requests.packages.urllib3.connectionpool' => 'WARN' }
|
|
||||||
#
|
|
||||||
# [*publish_errors*]
|
|
||||||
# (Optional) Publish error events (boolean value).
|
|
||||||
# Defaults to $facts['os_service_default'] (false if unconfigured).
|
|
||||||
#
|
|
||||||
# [*fatal_deprecations*]
|
|
||||||
# (Optional) Make deprecations fatal (boolean value)
|
|
||||||
# Defaults to $facts['os_service_default'] (false if unconfigured).
|
|
||||||
#
|
|
||||||
# [*instance_format*]
|
|
||||||
# (Optional) If an instance is passed with the log message, format it
|
|
||||||
# like this (string value).
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example: '[instance: %(uuid)s] '
|
|
||||||
#
|
|
||||||
# [*instance_uuid_format*]
|
|
||||||
# (Optional) If an instance UUID is passed with the log message, format
|
|
||||||
# It like this (string value).
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example: instance_uuid_format='[instance: %(uuid)s] '
|
|
||||||
|
|
||||||
# [*log_date_format*]
|
|
||||||
# (Optional) Format string for %%(asctime)s in log records.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
# Example: 'Y-%m-%d %H:%M:%S'
|
|
||||||
#
|
|
||||||
class sahara::logging(
|
|
||||||
$debug = $facts['os_service_default'],
|
|
||||||
$use_syslog = $facts['os_service_default'],
|
|
||||||
$use_json = $facts['os_service_default'],
|
|
||||||
$use_journal = $facts['os_service_default'],
|
|
||||||
$use_stderr = $facts['os_service_default'],
|
|
||||||
$log_facility = $facts['os_service_default'],
|
|
||||||
$log_file = $facts['os_service_default'],
|
|
||||||
$watch_log_file = $facts['os_service_default'],
|
|
||||||
$log_dir = '/var/log/sahara',
|
|
||||||
$logging_context_format_string = $facts['os_service_default'],
|
|
||||||
$logging_default_format_string = $facts['os_service_default'],
|
|
||||||
$logging_debug_format_suffix = $facts['os_service_default'],
|
|
||||||
$logging_exception_prefix = $facts['os_service_default'],
|
|
||||||
$log_config_append = $facts['os_service_default'],
|
|
||||||
$default_log_levels = $facts['os_service_default'],
|
|
||||||
$publish_errors = $facts['os_service_default'],
|
|
||||||
$fatal_deprecations = $facts['os_service_default'],
|
|
||||||
$instance_format = $facts['os_service_default'],
|
|
||||||
$instance_uuid_format = $facts['os_service_default'],
|
|
||||||
$log_date_format = $facts['os_service_default'],
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
oslo::log { 'sahara_config':
|
|
||||||
debug => $debug,
|
|
||||||
use_syslog => $use_syslog,
|
|
||||||
use_json => $use_json,
|
|
||||||
use_journal => $use_journal,
|
|
||||||
use_stderr => $use_stderr,
|
|
||||||
log_file => $log_file,
|
|
||||||
watch_log_file => $watch_log_file,
|
|
||||||
log_dir => $log_dir,
|
|
||||||
syslog_log_facility => $log_facility,
|
|
||||||
logging_context_format_string => $logging_context_format_string,
|
|
||||||
logging_default_format_string => $logging_default_format_string,
|
|
||||||
logging_debug_format_suffix => $logging_debug_format_suffix,
|
|
||||||
logging_exception_prefix => $logging_exception_prefix,
|
|
||||||
log_config_append => $log_config_append,
|
|
||||||
default_log_levels => $default_log_levels,
|
|
||||||
publish_errors => $publish_errors,
|
|
||||||
fatal_deprecations => $fatal_deprecations,
|
|
||||||
log_date_format => $log_date_format,
|
|
||||||
instance_format => $instance_format,
|
|
||||||
instance_uuid_format => $instance_uuid_format,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
# == Class: sahara::notify
|
|
||||||
#
|
|
||||||
# Ceilometer notifications configuration for Sahara
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*notification_transport_url*]
|
|
||||||
# (Optional) A URL representing the messaging driver to use for notifications
|
|
||||||
# and its full configuration. Transport URLs take the form:
|
|
||||||
# transport://user:pass@host1:port[,hostN:portN]/virtual_host
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*notification_driver*]
|
|
||||||
# (Optional) Notification driver to use.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*notification_topics*]
|
|
||||||
# (Optional) Topic to use for notifications.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
class sahara::notify (
|
|
||||||
$notification_transport_url = $facts['os_service_default'],
|
|
||||||
$notification_driver = $facts['os_service_default'],
|
|
||||||
$notification_topics = $facts['os_service_default'],
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
oslo::messaging::notifications { 'sahara_config':
|
|
||||||
transport_url => $notification_transport_url,
|
|
||||||
driver => $notification_driver,
|
|
||||||
topics => $notification_topics,
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
# == Class: sahara::params
|
|
||||||
#
|
|
||||||
# Parameters for puppet-sahara
|
|
||||||
#
|
|
||||||
class sahara::params {
|
|
||||||
include openstacklib::defaults
|
|
||||||
|
|
||||||
$client_package_name = 'python3-saharaclient'
|
|
||||||
$user = 'sahara'
|
|
||||||
$group = 'sahara'
|
|
||||||
|
|
||||||
case $facts['os']['family'] {
|
|
||||||
'RedHat': {
|
|
||||||
$common_package_name = 'openstack-sahara-common'
|
|
||||||
$api_package_name = 'openstack-sahara-api'
|
|
||||||
$engine_package_name = 'openstack-sahara-engine'
|
|
||||||
$api_service_name = 'openstack-sahara-api'
|
|
||||||
$engine_service_name = 'openstack-sahara-engine'
|
|
||||||
$sahara_wsgi_script_path = '/var/www/cgi-bin/sahara'
|
|
||||||
$sahara_wsgi_script_source = '/usr/bin/sahara-wsgi-api'
|
|
||||||
$plugin_package_name_base = 'python3-sahara-plugin-'
|
|
||||||
}
|
|
||||||
'Debian': {
|
|
||||||
$common_package_name = 'sahara-common'
|
|
||||||
$api_package_name = 'sahara-api'
|
|
||||||
$engine_package_name = 'sahara-engine'
|
|
||||||
$api_service_name = 'sahara-api'
|
|
||||||
$engine_service_name = 'sahara-engine'
|
|
||||||
$sahara_wsgi_script_path = '/usr/lib/cgi-bin/sahara'
|
|
||||||
$sahara_wsgi_script_source = '/usr/bin/sahara-wsgi-api'
|
|
||||||
$plugin_package_name_base = 'python3-sahara-plugin-'
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
fail("Unsupported osfamily: ${facts['os']['family']}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
# == Define: sahara::plugin
|
|
||||||
#
|
|
||||||
# Sahara plugin configuration
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*package_ensure*]
|
|
||||||
# (Optional) Ensure state for package
|
|
||||||
# Defaults to 'present'.
|
|
||||||
#
|
|
||||||
define sahara::plugin(
|
|
||||||
$package_ensure = 'present',
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::params
|
|
||||||
|
|
||||||
package { "sahara-plugin-${name}":
|
|
||||||
ensure => $package_ensure,
|
|
||||||
name => "${::sahara::params::plugin_package_name_base}${name}",
|
|
||||||
tag => ['openstack', 'sahara-package'],
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,81 +0,0 @@
|
||||||
# == Class: sahara::policy
|
|
||||||
#
|
|
||||||
# Configure the sahara policies
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*enforce_scope*]
|
|
||||||
# (Optional) Whether or not to enforce scope when evaluating policies.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*enforce_new_defaults*]
|
|
||||||
# (Optional) Whether or not to use old deprecated defaults when evaluating
|
|
||||||
# policies.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*policies*]
|
|
||||||
# (Optional) Set of policies to configure for sahara
|
|
||||||
# Example :
|
|
||||||
# {
|
|
||||||
# 'sahara-context_is_admin' => {
|
|
||||||
# 'key' => 'context_is_admin',
|
|
||||||
# 'value' => 'true'
|
|
||||||
# },
|
|
||||||
# 'sahara-default' => {
|
|
||||||
# 'key' => 'default',
|
|
||||||
# 'value' => 'rule:admin_or_owner'
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
# Defaults to empty hash.
|
|
||||||
#
|
|
||||||
# [*policy_path*]
|
|
||||||
# (Optional) Path to the sahara policy.yaml file
|
|
||||||
# Defaults to /etc/sahara/policy.yaml
|
|
||||||
#
|
|
||||||
# [*policy_default_rule*]
|
|
||||||
# (Optional) Default rule. Enforced when a requested rule is not found.
|
|
||||||
# Defaults to $facts['os_service_default'].
|
|
||||||
#
|
|
||||||
# [*policy_dirs*]
|
|
||||||
# (Optional) Path to the sahara policy folder
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*purge_config*]
|
|
||||||
# (optional) Whether to set only the specified policy rules in the policy
|
|
||||||
# file.
|
|
||||||
# Defaults to false.
|
|
||||||
#
|
|
||||||
class sahara::policy (
|
|
||||||
$enforce_scope = $facts['os_service_default'],
|
|
||||||
$enforce_new_defaults = $facts['os_service_default'],
|
|
||||||
Hash $policies = {},
|
|
||||||
$policy_path = '/etc/sahara/policy.yaml',
|
|
||||||
$policy_default_rule = $facts['os_service_default'],
|
|
||||||
$policy_dirs = $facts['os_service_default'],
|
|
||||||
Boolean $purge_config = false,
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::params
|
|
||||||
|
|
||||||
$policy_parameters = {
|
|
||||||
policies => $policies,
|
|
||||||
policy_path => $policy_path,
|
|
||||||
file_user => 'root',
|
|
||||||
file_group => $::sahara::params::group,
|
|
||||||
file_format => 'yaml',
|
|
||||||
purge_config => $purge_config,
|
|
||||||
tag => 'sahara',
|
|
||||||
}
|
|
||||||
|
|
||||||
create_resources('openstacklib::policy', { $policy_path => $policy_parameters })
|
|
||||||
|
|
||||||
oslo::policy { 'sahara_config':
|
|
||||||
enforce_scope => $enforce_scope,
|
|
||||||
enforce_new_defaults => $enforce_new_defaults,
|
|
||||||
policy_file => $policy_path,
|
|
||||||
policy_default_rule => $policy_default_rule,
|
|
||||||
policy_dirs => $policy_dirs,
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,87 +0,0 @@
|
||||||
# == Class: sahara::service::api
|
|
||||||
#
|
|
||||||
# Installs & configure the Sahara API service
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*api_workers*]
|
|
||||||
# (Optional) Number of workers for Sahara API service
|
|
||||||
# 0 means all-in-one-thread configuration
|
|
||||||
# Defaults to $facts['os_workers']
|
|
||||||
#
|
|
||||||
# [*enabled*]
|
|
||||||
# (Optional) Should the service be enabled.
|
|
||||||
# Defaults to 'true'.
|
|
||||||
#
|
|
||||||
# [*manage_service*]
|
|
||||||
# (Optional) Whether the service should be managed by Puppet.
|
|
||||||
# Defaults to 'true'.
|
|
||||||
#
|
|
||||||
# [*package_ensure*]
|
|
||||||
# (Optional) Ensure state for package.
|
|
||||||
# Defaults to 'present'
|
|
||||||
#
|
|
||||||
# [*service_name*]
|
|
||||||
# (Optional) Name of the service that will be providing the
|
|
||||||
# server functionality of sahara-api.
|
|
||||||
# If the value is 'httpd', this means sahara-api will be a web
|
|
||||||
# service, and you must use another class to configure that
|
|
||||||
# web service. For example, use class { 'sahara::wsgi::apache'...}
|
|
||||||
# to make sahara-api be a web app using apache mod_wsgi.
|
|
||||||
# Defaults to '$::sahara::params::api_service_name'
|
|
||||||
#
|
|
||||||
class sahara::service::api (
|
|
||||||
$api_workers = $facts['os_workers'],
|
|
||||||
Boolean $enabled = true,
|
|
||||||
Boolean $manage_service = true,
|
|
||||||
$package_ensure = 'present',
|
|
||||||
$service_name = $::sahara::params::api_service_name,
|
|
||||||
) inherits sahara::params {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::policy
|
|
||||||
|
|
||||||
if $facts['os']['name'] == 'Ubuntu' and $service_name == $::sahara::params::api_service_name {
|
|
||||||
fail('The Sahara API must be run with WSGI on Ubuntu')
|
|
||||||
}
|
|
||||||
|
|
||||||
package { 'sahara-api':
|
|
||||||
ensure => $package_ensure,
|
|
||||||
name => $::sahara::params::api_package_name,
|
|
||||||
tag => ['openstack', 'sahara-package'],
|
|
||||||
}
|
|
||||||
|
|
||||||
sahara_config {
|
|
||||||
'DEFAULT/api_workers': value => $api_workers;
|
|
||||||
}
|
|
||||||
|
|
||||||
if $manage_service {
|
|
||||||
if $enabled {
|
|
||||||
$service_ensure = 'running'
|
|
||||||
} else {
|
|
||||||
$service_ensure = 'stopped'
|
|
||||||
}
|
|
||||||
|
|
||||||
if $service_name == $::sahara::params::api_service_name {
|
|
||||||
service { 'sahara-api':
|
|
||||||
ensure => $service_ensure,
|
|
||||||
name => $::sahara::params::api_service_name,
|
|
||||||
enable => $enabled,
|
|
||||||
hasstatus => true,
|
|
||||||
hasrestart => true,
|
|
||||||
tag => 'sahara-service',
|
|
||||||
}
|
|
||||||
} elsif $service_name == 'httpd' {
|
|
||||||
if $facts['os']['name'] != 'Ubuntu' {
|
|
||||||
service { 'sahara-api':
|
|
||||||
ensure => 'stopped',
|
|
||||||
name => $::sahara::params::api_service_name,
|
|
||||||
enable => false,
|
|
||||||
tag => 'sahara-service',
|
|
||||||
}
|
|
||||||
Service['sahara-api'] -> Service[$service_name]
|
|
||||||
}
|
|
||||||
Service<| title == 'httpd' |> { tag +> 'sahara-service' }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,115 +0,0 @@
|
||||||
# == Class: sahara::service::engine
|
|
||||||
#
|
|
||||||
# Installs & configure the Sahara Engine service
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*enabled*]
|
|
||||||
# (Optional) Should the service be enabled.
|
|
||||||
# Defaults to 'true'.
|
|
||||||
#
|
|
||||||
# [*manage_service*]
|
|
||||||
# (Optional) Whether the service should be managed by Puppet.
|
|
||||||
# Defaults to 'true'.
|
|
||||||
#
|
|
||||||
# [*package_ensure*]
|
|
||||||
# (Optional) Ensure state for package.
|
|
||||||
# Defaults to 'present'
|
|
||||||
#
|
|
||||||
# [*periodic_enable*]
|
|
||||||
# (Optional) Enable periodic tasks.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*periodic_fuzzy_delay*]
|
|
||||||
# (Optional) Range in seconds to randomly delay when starting the periodic
|
|
||||||
# task scheduler to reduse stampending.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*periodic_interval_max*]
|
|
||||||
# (Optional) Max interval size between periodic tasks execution in seconds.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*min_transient_cluster_active_time*]
|
|
||||||
# (Optional) Minimal "lifetime" in seconds for a transient cluster.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*cleanup_time_for_incomplete_clusters*]
|
|
||||||
# (Optional) Maximal time (in hours) for clusters allowed to be in states
|
|
||||||
# other than "Active", "Deleting" or "Error".
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*periodic_coordinator_backend_url*]
|
|
||||||
# (Optional) The backend URL to use for distributed periodic tasks
|
|
||||||
# coordination.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*periodic_workers_number*]
|
|
||||||
# (Optional) Number of threads to run periodic tasks.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*coordinator_heartbeat_interval*]
|
|
||||||
# (Optional) Interval size between heartbeat execution in seconds.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
# [*hash_ring_replicas_count*]
|
|
||||||
# (Optional) Number of points that belongs to each number on a hash ring.
|
|
||||||
# Defaults to $facts['os_service_default']
|
|
||||||
#
|
|
||||||
class sahara::service::engine (
|
|
||||||
Boolean $enabled = true,
|
|
||||||
Boolean $manage_service = true,
|
|
||||||
$package_ensure = 'present',
|
|
||||||
$periodic_enable = $facts['os_service_default'],
|
|
||||||
$periodic_fuzzy_delay = $facts['os_service_default'],
|
|
||||||
$periodic_interval_max = $facts['os_service_default'],
|
|
||||||
$min_transient_cluster_active_time = $facts['os_service_default'],
|
|
||||||
$cleanup_time_for_incomplete_clusters = $facts['os_service_default'],
|
|
||||||
$periodic_coordinator_backend_url = $facts['os_service_default'],
|
|
||||||
$periodic_workers_number = $facts['os_service_default'],
|
|
||||||
$coordinator_heartbeat_interval = $facts['os_service_default'],
|
|
||||||
$hash_ring_replicas_count = $facts['os_service_default'],
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::params
|
|
||||||
|
|
||||||
package { 'sahara-engine':
|
|
||||||
ensure => $package_ensure,
|
|
||||||
name => $::sahara::params::engine_package_name,
|
|
||||||
tag => ['openstack', 'sahara-package'],
|
|
||||||
}
|
|
||||||
|
|
||||||
if $manage_service {
|
|
||||||
if $enabled {
|
|
||||||
$service_ensure = 'running'
|
|
||||||
} else {
|
|
||||||
$service_ensure = 'stopped'
|
|
||||||
}
|
|
||||||
|
|
||||||
service { 'sahara-engine':
|
|
||||||
ensure => $service_ensure,
|
|
||||||
name => $::sahara::params::engine_service_name,
|
|
||||||
enable => $enabled,
|
|
||||||
hasstatus => true,
|
|
||||||
hasrestart => true,
|
|
||||||
tag => 'sahara-service',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
oslo::coordination{ 'sahara_config':
|
|
||||||
backend_url => $periodic_coordinator_backend_url,
|
|
||||||
manage_config => false
|
|
||||||
}
|
|
||||||
|
|
||||||
sahara_config {
|
|
||||||
'DEFAULT/periodic_enable': value => $periodic_enable;
|
|
||||||
'DEFAULT/periodic_fuzzy_delay': value => $periodic_fuzzy_delay;
|
|
||||||
'DEFAULT/periodic_interval_max': value => $periodic_interval_max;
|
|
||||||
'DEFAULT/min_transient_cluster_active_time': value => $min_transient_cluster_active_time;
|
|
||||||
'DEFAULT/cleanup_time_for_incomplete_clusters': value => $cleanup_time_for_incomplete_clusters;
|
|
||||||
'DEFAULT/periodic_coordinator_backend_url': value => $periodic_coordinator_backend_url, secret => true;
|
|
||||||
'DEFAULT/periodic_workers_number': value => $periodic_workers_number;
|
|
||||||
'DEFAULT/coordinator_heartbeat_interval': value => $coordinator_heartbeat_interval;
|
|
||||||
'DEFAULT/hash_ring_replicas_count': value => $hash_ring_replicas_count;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,190 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2018 Binero
|
|
||||||
#
|
|
||||||
# Author: Tobias Urdin <tobias.urdin@binero.se>
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# == Class: sahara::wsgi::apache
|
|
||||||
#
|
|
||||||
# Install Sahara API under apache with mod_wsgi.
|
|
||||||
#
|
|
||||||
# == Parameters:
|
|
||||||
#
|
|
||||||
# [*servername*]
|
|
||||||
# (Optional) The servername for the virtualhost.
|
|
||||||
# Defaults to $facts['networking']['fqdn']
|
|
||||||
#
|
|
||||||
# [*port*]
|
|
||||||
# (Optional) The port.
|
|
||||||
# Defaults to 8386
|
|
||||||
#
|
|
||||||
# [*bind_host*]
|
|
||||||
# (Optional) The host/ip address Apache will listen on.
|
|
||||||
# Defaults to undef (listen on all ip addresses).
|
|
||||||
#
|
|
||||||
# [*path*]
|
|
||||||
# (Optional) The prefix for the endpoint.
|
|
||||||
# Defaults to '/'
|
|
||||||
#
|
|
||||||
# [*ssl*]
|
|
||||||
# (Optional) Use ssl.
|
|
||||||
# Defaults to false
|
|
||||||
#
|
|
||||||
# [*workers*]
|
|
||||||
# (Optional) Number of WSGI workers to spawn.
|
|
||||||
# Defaults to $facts['os_workers']
|
|
||||||
#
|
|
||||||
# [*priority*]
|
|
||||||
# (Optional) The priority for the vhost.
|
|
||||||
# Defaults to 10
|
|
||||||
#
|
|
||||||
# [*threads*]
|
|
||||||
# (Optional) The number of threads for the vhost.
|
|
||||||
# Defaults to 1
|
|
||||||
#
|
|
||||||
# [*wsgi_process_display_name*]
|
|
||||||
# (Optional) Name of the WSGI process display-name.
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*ssl_cert*]
|
|
||||||
# [*ssl_key*]
|
|
||||||
# [*ssl_chain*]
|
|
||||||
# [*ssl_ca*]
|
|
||||||
# [*ssl_crl_path*]
|
|
||||||
# [*ssl_crl*]
|
|
||||||
# [*ssl_certs_dir*]
|
|
||||||
# (Optional) apache::vhost ssl parameters.
|
|
||||||
# Default to apache::vhost 'ssl_*' defaults
|
|
||||||
#
|
|
||||||
# [*access_log_file*]
|
|
||||||
# (Optional) The log file name for the virtualhost.
|
|
||||||
# Defaults to undef.
|
|
||||||
#
|
|
||||||
# [*access_log_pipe*]
|
|
||||||
# (Optional) Specifies a pipe where Apache sends access logs for
|
|
||||||
# the virtualhost.
|
|
||||||
# Defaults to undef.
|
|
||||||
#
|
|
||||||
# [*access_log_syslog*]
|
|
||||||
# (Optional) Sends the virtualhost access log messages to syslog.
|
|
||||||
# Defaults to undef.
|
|
||||||
#
|
|
||||||
# [*access_log_format*]
|
|
||||||
# (Optional) The log format for the virtualhost.
|
|
||||||
# Defaults to undef.
|
|
||||||
#
|
|
||||||
# [*error_log_file*]
|
|
||||||
# (Optional) The error log file name for the virtualhost.
|
|
||||||
# Defaults to undef.
|
|
||||||
#
|
|
||||||
# [*error_log_pipe*]
|
|
||||||
# (Optional) Specifies a pipe where Apache sends error logs for
|
|
||||||
# the virtualhost.
|
|
||||||
# Defaults to undef.
|
|
||||||
#
|
|
||||||
# [*error_log_syslog*]
|
|
||||||
# (Optional) Sends the virtualhost error log messages to syslog.
|
|
||||||
# Defaults to undef.
|
|
||||||
#
|
|
||||||
# [*custom_wsgi_process_options*]
|
|
||||||
# (Optional) gives you the oportunity to add custom process options or to
|
|
||||||
# overwrite the default options for the WSGI main process.
|
|
||||||
# eg. to use a virtual python environment for the WSGI process
|
|
||||||
# you could set it to:
|
|
||||||
# { python-path => '/my/python/virtualenv' }
|
|
||||||
# Defaults to {}
|
|
||||||
#
|
|
||||||
# [*headers*]
|
|
||||||
# (Optional) Headers for the vhost.
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# [*request_headers*]
|
|
||||||
# (Optional) Modifies collected request headers in various ways.
|
|
||||||
# Defaults to undef
|
|
||||||
#
|
|
||||||
# == Example:
|
|
||||||
#
|
|
||||||
# include apache
|
|
||||||
# class { 'sahara::wsgi::apache': }
|
|
||||||
#
|
|
||||||
class sahara::wsgi::apache (
|
|
||||||
$servername = $facts['networking']['fqdn'],
|
|
||||||
$port = 8386,
|
|
||||||
$bind_host = undef,
|
|
||||||
$path = '/',
|
|
||||||
$ssl = false,
|
|
||||||
$workers = $facts['os_workers'],
|
|
||||||
$ssl_cert = undef,
|
|
||||||
$ssl_key = undef,
|
|
||||||
$ssl_chain = undef,
|
|
||||||
$ssl_ca = undef,
|
|
||||||
$ssl_crl_path = undef,
|
|
||||||
$ssl_crl = undef,
|
|
||||||
$ssl_certs_dir = undef,
|
|
||||||
$wsgi_process_display_name = undef,
|
|
||||||
$threads = 1,
|
|
||||||
$priority = 10,
|
|
||||||
$access_log_file = undef,
|
|
||||||
$access_log_pipe = undef,
|
|
||||||
$access_log_syslog = undef,
|
|
||||||
$access_log_format = undef,
|
|
||||||
$error_log_file = undef,
|
|
||||||
$error_log_pipe = undef,
|
|
||||||
$error_log_syslog = undef,
|
|
||||||
$custom_wsgi_process_options = {},
|
|
||||||
$headers = undef,
|
|
||||||
$request_headers = undef,
|
|
||||||
) {
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
include sahara::params
|
|
||||||
|
|
||||||
Anchor['sahara::install::end'] -> Class['apache']
|
|
||||||
|
|
||||||
::openstacklib::wsgi::apache { 'sahara_wsgi':
|
|
||||||
bind_host => $bind_host,
|
|
||||||
bind_port => $port,
|
|
||||||
group => $::sahara::params::group,
|
|
||||||
path => $path,
|
|
||||||
priority => $priority,
|
|
||||||
servername => $servername,
|
|
||||||
ssl => $ssl,
|
|
||||||
ssl_ca => $ssl_ca,
|
|
||||||
ssl_cert => $ssl_cert,
|
|
||||||
ssl_certs_dir => $ssl_certs_dir,
|
|
||||||
ssl_chain => $ssl_chain,
|
|
||||||
ssl_crl => $ssl_crl,
|
|
||||||
ssl_crl_path => $ssl_crl_path,
|
|
||||||
ssl_key => $ssl_key,
|
|
||||||
threads => $threads,
|
|
||||||
user => $::sahara::params::user,
|
|
||||||
workers => $workers,
|
|
||||||
wsgi_daemon_process => 'sahara',
|
|
||||||
wsgi_process_display_name => $wsgi_process_display_name,
|
|
||||||
wsgi_process_group => 'sahara',
|
|
||||||
wsgi_script_dir => $::sahara::params::sahara_wsgi_script_path,
|
|
||||||
wsgi_script_file => 'app',
|
|
||||||
wsgi_script_source => $::sahara::params::sahara_wsgi_script_source,
|
|
||||||
headers => $headers,
|
|
||||||
request_headers => $request_headers,
|
|
||||||
custom_wsgi_process_options => $custom_wsgi_process_options,
|
|
||||||
access_log_file => $access_log_file,
|
|
||||||
access_log_pipe => $access_log_pipe,
|
|
||||||
access_log_syslog => $access_log_syslog,
|
|
||||||
access_log_format => $access_log_format,
|
|
||||||
error_log_file => $error_log_file,
|
|
||||||
error_log_pipe => $error_log_pipe,
|
|
||||||
error_log_syslog => $error_log_syslog,
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright 2021 Thomas Goirand <zigo@debian.org>
|
|
||||||
#
|
|
||||||
# Author: Thomas Goirand <zigo@debian.org>
|
|
||||||
#
|
|
||||||
# == Class: sahara::wsgi::uwsgi
|
|
||||||
#
|
|
||||||
# Configure the UWSGI service for Sahara API.
|
|
||||||
#
|
|
||||||
# == Parameters
|
|
||||||
#
|
|
||||||
# [*processes*]
|
|
||||||
# (Optional) Number of processes.
|
|
||||||
# Defaults to $facts['os_workers'].
|
|
||||||
#
|
|
||||||
# [*threads*]
|
|
||||||
# (Optional) Number of threads.
|
|
||||||
# Defaults to 32.
|
|
||||||
#
|
|
||||||
# [*listen_queue_size*]
|
|
||||||
# (Optional) Socket listen queue size.
|
|
||||||
# Defaults to 100
|
|
||||||
#
|
|
||||||
class sahara::wsgi::uwsgi (
|
|
||||||
$processes = $facts['os_workers'],
|
|
||||||
$threads = 32,
|
|
||||||
$listen_queue_size = 100,
|
|
||||||
){
|
|
||||||
|
|
||||||
include sahara::deps
|
|
||||||
|
|
||||||
if $facts['os']['name'] != 'Debian'{
|
|
||||||
warning('This class is only valid for Debian, as other operating systems are not using uwsgi by default.')
|
|
||||||
}
|
|
||||||
|
|
||||||
sahara_api_uwsgi_config {
|
|
||||||
'uwsgi/processes': value => $processes;
|
|
||||||
'uwsgi/threads': value => $threads;
|
|
||||||
'uwsgi/listen': value => $listen_queue_size;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,65 +0,0 @@
|
||||||
{
|
|
||||||
"author": "Red Hat and OpenStack Contributors",
|
|
||||||
"dependencies": [
|
|
||||||
{
|
|
||||||
"name": "openstack/keystone",
|
|
||||||
"version_requirement": ">=23.0.0 <24.0.0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "puppetlabs/inifile",
|
|
||||||
"version_requirement": ">=2.0.0 <7.0.0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "puppetlabs/stdlib",
|
|
||||||
"version_requirement": ">=5.0.0 <10.0.0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openstack/openstacklib",
|
|
||||||
"version_requirement": ">=23.0.0 <24.0.0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openstack/oslo",
|
|
||||||
"version_requirement": ">=23.0.0 <24.0.0"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Installs and configures OpenStack Sahara (Data Processing).",
|
|
||||||
"issues_url": "https://bugs.launchpad.net/puppet-sahara",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"name": "openstack-sahara",
|
|
||||||
"operatingsystem_support": [
|
|
||||||
{
|
|
||||||
"operatingsystem": "Debian",
|
|
||||||
"operatingsystemrelease": [
|
|
||||||
"12"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"operatingsystem": "RedHat",
|
|
||||||
"operatingsystemrelease": [
|
|
||||||
"9"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"operatingsystem": "CentOS",
|
|
||||||
"operatingsystemrelease": [
|
|
||||||
"9"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"operatingsystem": "Ubuntu",
|
|
||||||
"operatingsystemrelease": [
|
|
||||||
"22.04"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"project_page": "https://launchpad.net/puppet-sahara",
|
|
||||||
"requirements": [
|
|
||||||
{
|
|
||||||
"name": "puppet",
|
|
||||||
"version_requirement": ">= 7.0.0 < 8.0.0"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": "https://opendev.org/openstack/puppet-sahara.git",
|
|
||||||
"summary": "Puppet module for OpenStack Sahara",
|
|
||||||
"version": "23.0.0"
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Add the log_file option for logging.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Add openstackclient installation to the client class.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Adds the pool_timeout option for configuring oslo.db. This will
|
|
||||||
configure this value for pool_timeout with SQLAlchemy.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Add support to configure service_token_roles in authtoken middleware.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Adds the use_journal option for configuring oslo.log. This will enable
|
|
||||||
passing the logs to journald.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Adds db_sync_timeout parameter to db sync.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Add new parameter "rpc_response_timeout", seconds to wait for a
|
|
||||||
response from a call
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Add mysql_enable_ndb parameter to select mysql storage engine.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Add support for oslo_messaging_amqp backend via puppet-oslo resource
|
|
|
@ -1,7 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Add oslo.messaging transport_url parameters via puppet-oslo resource
|
|
||||||
deprecations:
|
|
||||||
- control_exchange moved to sahara class definition as it is intrinsic to
|
|
||||||
default messaging configuration. It can no longer be set via the
|
|
||||||
notify class and will be removed in a future release.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::logging::watch_log_file`` parameter has been added.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The ``sahara::wsgi::apache`` class now supports customizing
|
|
||||||
request/response headers added by apache.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Add api_paste type/provider.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``key_val_separator`` parameter has been added to
|
|
||||||
the ``sahara_api_paste_ini`` resource type.
|
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Allow to configure authtoken parameters, useful when running Keystone
|
|
||||||
v3 API. This class is sahara::keystone::authtoken and parameters are
|
|
||||||
consistent with other modules.
|
|
||||||
deprecations:
|
|
||||||
- sahara::admin_user, sahara::admin_password, sahara::auth_uri,
|
|
||||||
sahara::identity_uri, sahara::admin_tenant_name and sahara::memcached_servers
|
|
||||||
are deprecated. Please use sahara::keystone::authtoken::* parameters instead.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Now this module supports CentOS 9 and Red Hat Enterprise Linux 9.
|
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The following parameters have been added to the ``sahara::keystone::auth``
|
|
||||||
class.
|
|
||||||
|
|
||||||
- ``configure_user``
|
|
||||||
- ``configure_user_role``
|
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The following two parameters have been added to
|
|
||||||
the ``sahara::service::engine`` class.
|
|
||||||
|
|
||||||
- ``coordinator_heartbeat_interval``
|
|
||||||
- ``hash_ring_replicas_count``
|
|
|
@ -1,7 +0,0 @@
|
||||||
---
|
|
||||||
issues:
|
|
||||||
- |
|
|
||||||
Keystone v2.0 API was removed so we need to set a default value
|
|
||||||
for user_domain_name and project_domain name, which will be
|
|
||||||
Default as it is already in some other classes in modules.
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
upgrade:
|
|
||||||
- |
|
|
||||||
The now deprecated sahara::service::all class that manages the sahara-all service
|
|
||||||
is not recommended to be used as the sahara-all service has minimal testing upstream.
|
|
||||||
It's recommended that deployments move to using the separate API and engine services
|
|
||||||
which can be deployed like shown in the puppet-sahara/examples/basic.pp file.
|
|
||||||
Please see below on how to move away from the sahara-all service.
|
|
||||||
|
|
||||||
- Set ```enabled``` to ```false``` in ```sahara::service::all``` will stop the sahara-all service
|
|
||||||
- Setup ```sahara::service::api``` and ```sahara::wsgi::apache``` classes
|
|
||||||
- Setup ```sahara::service::engine``` class
|
|
||||||
|
|
||||||
Full example on how this is done can be seen in the puppet-sahara/examples/basic.pp
|
|
||||||
examples file.
|
|
||||||
deprecations:
|
|
||||||
- |
|
|
||||||
The sahara::service::all class that manages the sahara-all service is deprecated.
|
|
||||||
It's recommended to not use the sahara-all service and instead use the separated
|
|
||||||
API and engine services, the sahara-all service has minimal testing upstream.
|
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- |
|
|
||||||
The following ZeroMQ parameters in ::sahara is now deprecated and has no effect:
|
|
||||||
|
|
||||||
- ``zeromq_bind_address``
|
|
||||||
- ``zeromq_contexts``
|
|
||||||
- ``zeromq_topic_backlog``
|
|
||||||
- ``zeromq_ipc_dir``
|
|
||||||
- ``zeromq_host``
|
|
||||||
- ``cast_timeout``
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- allow_insecure_clients option is now deprecated for removal, the
|
|
||||||
parameter has no effect.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- auth_uri is deprecated and will be removed in a future release.
|
|
||||||
Please use www_authenticate_uri instead.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- database_min_pool_size option is now deprecated for removal, the
|
|
||||||
parameter has no effect.
|
|
|
@ -1,12 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- |
|
|
||||||
The following options have been deprecated, as those options have been
|
|
||||||
moved to sahara::db class.
|
|
||||||
|
|
||||||
- ``sahara::database_connection``
|
|
||||||
- ``sahara::database_idle_timeout``
|
|
||||||
- ``sahara::database_max_overflow``
|
|
||||||
- ``sahara::database_max_pool_size``
|
|
||||||
- ``sahara::database_max_retries``
|
|
||||||
- ``sahara::database_retry_interval``
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- database_idle_timeout is deprecated and will be removed in a future
|
|
||||||
release. Please use database_connection_recycle_time instead.
|
|
|
@ -1,6 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- check_revocations_for_cached option is now deprecated for removal, the
|
|
||||||
parameter has no effect.
|
|
||||||
- hash_algorithms option is now deprecated for removal, the parameter
|
|
||||||
has no effect.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- |
|
|
||||||
The configuration option ``rabbit_max_retries`` is now deprecated and
|
|
||||||
will be removed in the future.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- revocation_cache_time option is now deprecated for removal, the
|
|
||||||
parameter has no effect.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- sahara::rpc_backend is deprecated and will be removed in a future
|
|
||||||
release. Please use sahara::default_transport_url instead.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- |
|
|
||||||
The configuration option ``use_neutron`` is now deprecated and
|
|
||||||
will be removed in the future.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
deprecations:
|
|
||||||
- Remove deprecated parameters since Liberty release.
|
|
|
@ -1,7 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The ``sahara`` class now supports the following two parameters.
|
|
||||||
|
|
||||||
- ``use_designate``
|
|
||||||
- ``nameservers``
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
upgrade:
|
|
||||||
- |
|
|
||||||
Fedora is no longer supported.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
other:
|
|
||||||
- Drop all Qpid support, it was removed from Oslo in Mitaka.
|
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
prelude: >
|
|
||||||
Add hooks for external install & svc management.
|
|
||||||
features:
|
|
||||||
- This adds defined anchor points for external modules to
|
|
||||||
hook into the software install, config and service dependency
|
|
||||||
chain. This allows external modules to manage software
|
|
||||||
installation (virtualenv, containers, etc) and service management
|
|
||||||
(pacemaker) without needing rely on resources that may change or
|
|
||||||
be renamed.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
fixes:
|
|
||||||
- Fixed documentation for log_dir parameter
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::healthcheck`` class has been added. This class manages
|
|
||||||
parameters of healthcheck middlware in oslo.middleware.
|
|
|
@ -1,6 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Added parameters for advanced configuration of httpd access and error log
|
|
||||||
destinations including piped logging and syslog (see `mod_syslog`). Note
|
|
||||||
that mod_syslog requires Apache2 >= 2.5.0.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
fixes:
|
|
||||||
- The keystone auth class has been updated to provide a default service_name
|
|
||||||
to allow a user to specify a custom auth_name that may not contain the
|
|
||||||
name of the service.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::keystone::authtoken::interface`` parameter has been added,
|
|
||||||
which can be used to set the interface parameter in authtoken middleware.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
fixes:
|
|
||||||
- Added the ability to manage the memcached servers
|
|
||||||
for keystone_authtoken in sahara
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::keystone::authtoken::service_type`` parameter has been
|
|
||||||
added to configure the service_type parameter in authtoken middleware.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
Expose use_json logging parameter, which enables JSON formatted logging.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
upgrade:
|
|
||||||
- |
|
|
||||||
Now policy.yaml is used by default instead of policy.json.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::node_domain`` parameter has been added.
|
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- Add openstack-db tag to Exec that run db-sync.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
other:
|
|
||||||
- Parameters that control the number of spawned child processes for
|
|
||||||
distributing processing have had their default value changed from
|
|
||||||
::processorcount to ::os_workers.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::policy::enforce_scope`` parameter has been added to
|
|
||||||
support the corresponding parameter in oslo.policy library.
|
|
|
@ -1,11 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The following parameters have been added to the ``sahara::service::engine``
|
|
||||||
class.
|
|
||||||
|
|
||||||
- ``periodic_enable``
|
|
||||||
- ``periodic_fuzzy_delay``
|
|
||||||
- ``periodic_interval_max``
|
|
||||||
- ``min_transient_cluster_active_time``
|
|
||||||
- ``cleanup_time_for_incomplete_clusters``
|
|
|
@ -1,8 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The ``sahara::service::engine`` class now support the following two
|
|
||||||
parameters.
|
|
||||||
|
|
||||||
- ``periodic_coordinator_backend_url``
|
|
||||||
- ``periodic_workers_number``
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::plugin`` defined resource type has been added. This can
|
|
||||||
be used to manage plugin packages.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
There is now a new policy_dirs parameter in the sahara::policy class,
|
|
||||||
so one can set a custom path.
|
|
|
@ -1,5 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::policy::enforce_new_defaults`` parameter has been
|
|
||||||
added.
|
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
features:
|
|
||||||
- |
|
|
||||||
The new ``sahara::policy::policy_default_rule`` parameter has been added.
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue