IRR - Implemented for setup-infrastructure
The change removes and points our role requirements to use the independent repos that are now online. Change-Id: I16f327bcdf35d5386396f9147257b5c8aca0603f Implements: blueprint independent-role-repositories Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
This commit is contained in:
parent
29c9c2c898
commit
6f443d6971
@ -1,26 +1,68 @@
|
|||||||
|
# Potential method for globally resolving plugins and libs
|
||||||
|
# - name: plugins
|
||||||
|
# src: https://github.com/os-cloud/openstack-ansible-plugins
|
||||||
|
# scm: git
|
||||||
|
# path: /etc/ansible
|
||||||
|
# version: master
|
||||||
- src: evrardjp.keepalived
|
- src: evrardjp.keepalived
|
||||||
name: keepalived
|
name: keepalived
|
||||||
version: '1.3'
|
version: '1.3'
|
||||||
- src: mattwillsher.sshd
|
- src: mattwillsher.sshd
|
||||||
name: sshd
|
name: sshd
|
||||||
- name: apt_package_pinning
|
- name: apt_package_pinning
|
||||||
src: https://github.com/openstack/openstack-ansible-apt_package_pinning
|
src: https://git.openstack.org/openstack/openstack-ansible-apt_package_pinning
|
||||||
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
- name: lxc_container_create
|
- name: lxc_container_create
|
||||||
src: https://github.com/openstack/openstack-ansible-lxc_container_create
|
src: https://git.openstack.org/openstack/openstack-ansible-lxc_container_create
|
||||||
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
- name: lxc_hosts
|
- name: lxc_hosts
|
||||||
src: https://github.com/openstack/openstack-ansible-lxc_hosts
|
src: https://git.openstack.org/openstack/openstack-ansible-lxc_hosts
|
||||||
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
- name: openstack_hosts
|
- name: openstack_hosts
|
||||||
src: https://github.com/openstack/openstack-ansible-openstack_hosts
|
src: https://git.openstack.org/openstack/openstack-ansible-openstack_hosts
|
||||||
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
- name: pip_install
|
- name: pip_install
|
||||||
src: https://github.com/openstack/openstack-ansible-pip_install
|
src: https://git.openstack.org/openstack/openstack-ansible-pip_install
|
||||||
|
scm: git
|
||||||
|
version: master
|
||||||
|
- name: pip_lock_down
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-pip_lock_down
|
||||||
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
- name: py_from_git
|
- name: py_from_git
|
||||||
src: https://github.com/openstack/openstack-ansible-py_from_git
|
src: https://git.openstack.org/openstack/openstack-ansible-py_from_git
|
||||||
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
- name: rsyslog_client
|
- name: rsyslog_client
|
||||||
src: https://github.com/openstack/openstack-ansible-rsyslog_client
|
src: https://git.openstack.org/openstack/openstack-ansible-rsyslog_client
|
||||||
|
scm: git
|
||||||
version: master
|
version: master
|
||||||
|
- name: memcached_server
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-memcached_server
|
||||||
|
scm: git
|
||||||
|
version: master
|
||||||
|
- name: repo_server
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-repo_server
|
||||||
|
scm: git
|
||||||
|
version: master
|
||||||
|
- name: rabbitmq_server
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-rabbitmq_server
|
||||||
|
scm: git
|
||||||
|
version: master
|
||||||
|
- name: galera_client
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-galera_client
|
||||||
|
scm: git
|
||||||
|
version: master
|
||||||
|
- name: galera_server
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-galera_server
|
||||||
|
scm: git
|
||||||
|
version: master
|
||||||
|
- name: rsyslog_server
|
||||||
|
src: https://git.openstack.org/openstack/openstack-ansible-rsyslog_server
|
||||||
|
scm: git
|
||||||
|
version: master
|
||||||
|
|
||||||
|
@ -3,7 +3,11 @@
|
|||||||
lookup_plugins = plugins/lookups
|
lookup_plugins = plugins/lookups
|
||||||
filter_plugins = plugins/filters
|
filter_plugins = plugins/filters
|
||||||
action_plugins = plugins/actions
|
action_plugins = plugins/actions
|
||||||
|
# Potential method for globally resolving plugins and libs
|
||||||
|
# lookup_plugins = /etc/ansible/plugins/lookups
|
||||||
|
# filter_plugins = /etc/ansible/plugins/filters
|
||||||
|
# action_plugins = /etc/ansible/plugins/actions
|
||||||
|
# library = /etc/ansible/plugins/library
|
||||||
gathering = smart
|
gathering = smart
|
||||||
|
|
||||||
# Fact caching
|
# Fact caching
|
||||||
|
@ -62,6 +62,8 @@
|
|||||||
max_fail_percentage: 20
|
max_fail_percentage: 20
|
||||||
user: root
|
user: root
|
||||||
roles:
|
roles:
|
||||||
|
- role: "pip_lock_down"
|
||||||
|
when: "(groups['repo_all'] | length) >= 1"
|
||||||
- { role: "galera_server", tags: [ "galera-server" ] }
|
- { role: "galera_server", tags: [ "galera-server" ] }
|
||||||
- role: "rsyslog_client"
|
- role: "rsyslog_client"
|
||||||
rsyslog_client_log_rotate_file: galera_log_rotate
|
rsyslog_client_log_rotate_file: galera_log_rotate
|
||||||
|
@ -65,6 +65,9 @@ pip_get_pip_options: >
|
|||||||
--find-links="{{ openstack_repo_url }}/os-releases/{{ openstack_release }}"
|
--find-links="{{ openstack_repo_url }}/os-releases/{{ openstack_release }}"
|
||||||
--trusted-host {{ openstack_repo_url | netloc_no_port }}
|
--trusted-host {{ openstack_repo_url | netloc_no_port }}
|
||||||
|
|
||||||
|
pip_links:
|
||||||
|
- { name: "openstack_release", link: "{{ openstack_repo_url }}/os-releases/{{ openstack_release }}/" }
|
||||||
|
|
||||||
|
|
||||||
## Memcached options
|
## Memcached options
|
||||||
memcached_listen: "{{ ansible_ssh_host }}"
|
memcached_listen: "{{ ansible_ssh_host }}"
|
||||||
|
@ -42,6 +42,8 @@
|
|||||||
tags:
|
tags:
|
||||||
- ssh-wait
|
- ssh-wait
|
||||||
roles:
|
roles:
|
||||||
|
- role: "pip_lock_down"
|
||||||
|
when: "(groups['repo_all'] | length) >= 1"
|
||||||
- role: "rabbitmq_server"
|
- role: "rabbitmq_server"
|
||||||
tags:
|
tags:
|
||||||
- "rabbitmq-server"
|
- "rabbitmq-server"
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
OpenStack Galera Client
|
|
||||||
#######################
|
|
||||||
:tags: openstack, galera, client, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
contributor guidelines
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Filing Bugs
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Bugs should be filed on Launchpad, not GitHub: "https://bugs.launchpad.net/openstack-ansible"
|
|
||||||
|
|
||||||
|
|
||||||
When submitting a bug, or working on a bug, please ensure the following criteria are met:
|
|
||||||
* The description clearly states or describes the original problem or root cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
||||||
|
|
||||||
|
|
||||||
Submitting Code
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Changes to the project should be submitted for review via the Gerrit tool, following
|
|
||||||
the workflow documented at: "http://docs.openstack.org/infra/manual/developers.html#development-workflow"
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub will be ignored and closed without regard.
|
|
||||||
|
|
||||||
|
|
||||||
Extra
|
|
||||||
-----
|
|
||||||
|
|
||||||
Tags:
|
|
||||||
If it's a bug that needs fixing in a branch in addition to Master, add a '\<release\>-backport-potential' tag (eg ``juno-backport-potential``). There are predefined tags that will autocomplete.
|
|
||||||
|
|
||||||
Status:
|
|
||||||
Please leave this alone, it should be New till someone triages the issue.
|
|
||||||
|
|
||||||
Importance:
|
|
||||||
Should only be touched if it is a Blocker/Gating issue. If it is, please set to High, and only use Critical if you have found a bug that can take down whole infrastructures.
|
|
||||||
|
|
||||||
|
|
||||||
Style guide
|
|
||||||
-----------
|
|
||||||
|
|
||||||
When creating tasks and other roles for use in Ansible please create then using the YAML dictionary format.
|
|
||||||
|
|
||||||
Example YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name:
|
|
||||||
thing1: "some-stuff"
|
|
||||||
thing2: "some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Example **NOT** in YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name: thing1="some-stuff" thing2="some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Usage of the ">" and "|" operators should be limited to Ansible conditionals and command modules such as the ansible ``shell`` module.
|
|
||||||
|
|
||||||
|
|
||||||
Issues
|
|
||||||
------
|
|
||||||
|
|
||||||
When submitting an issue, or working on an issue please ensure the following criteria are met:
|
|
||||||
* The description clearly states or describes the original problem or root cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* If the issue is a bug that needs fixing in a branch other than Master, add the ‘backport potential’ tag TO THE ISSUE (not the PR).
|
|
||||||
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
|
|
||||||
* If the issue is needed for a hotfix release, add the 'expedite' label.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
OpenStack Galera Client
|
|
||||||
#######################
|
|
||||||
:tags: openstack, galera, client, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
Role for the installation of the mariadb and xtrabackup clients used to interact with and manage a galera cluster.
|
|
||||||
|
|
||||||
Example Ansible play
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: Install galera server
|
|
||||||
hosts: galera_all
|
|
||||||
user: root
|
|
||||||
roles:
|
|
||||||
- { role: "galera_server", tags: [ "galera-server" ] }
|
|
||||||
vars:
|
|
||||||
galera_address: "10.0.0.1"
|
|
||||||
galera_root_password: secrete
|
|
||||||
galera_root_user: root
|
|
@ -1,62 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Default galera connection address
|
|
||||||
galera_address: 127.0.0.1
|
|
||||||
galera_root_user: root
|
|
||||||
|
|
||||||
# Galera GPG Keys
|
|
||||||
galera_client_gpg_keys:
|
|
||||||
- key_name: 'mariadb'
|
|
||||||
keyserver: 'hkp://keyserver.ubuntu.com:80'
|
|
||||||
fallback_keyserver: 'hkp://p80.pool.sks-keyservers.net:80'
|
|
||||||
hash_id: '0xcbcb082a1bb943db'
|
|
||||||
- key_name: 'percona-xtrabackup'
|
|
||||||
keyserver: 'hkp://keyserver.ubuntu.com:80'
|
|
||||||
fallback_keyserver: 'hkp://p80.pool.sks-keyservers.net:80'
|
|
||||||
hash_id: '0x1c4cbdcdcd2efd2a'
|
|
||||||
|
|
||||||
# Repositories
|
|
||||||
galera_client_apt_repo_url: "https://mirror.rackspace.com/mariadb/repo/10.0/ubuntu"
|
|
||||||
galera_client_apt_repo:
|
|
||||||
repo: "deb {{ galera_client_apt_repo_url }} {{ ansible_distribution_release }} main"
|
|
||||||
state: "present"
|
|
||||||
|
|
||||||
galera_client_apt_percona_xtrabackup_url: "https://repo.percona.com/apt"
|
|
||||||
galera_client_apt_percona_xtrabackup_repo:
|
|
||||||
repo: "deb {{ galera_client_apt_percona_xtrabackup_url }} {{ ansible_distribution_release }} main"
|
|
||||||
state: "present"
|
|
||||||
|
|
||||||
galera_client_package_url: "https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.13/binary/debian/trusty/x86_64/percona-xtrabackup-22_2.2.13-1.trusty_amd64.deb"
|
|
||||||
galera_client_package_sha256: "2f58eedefa905583f0650f77bb2b149139c4066c7fb690202124fe5c7ac83e9e"
|
|
||||||
galera_client_package_path: "/opt/{{ galera_client_package_url | basename }}"
|
|
||||||
|
|
||||||
galera_client_apt_packages:
|
|
||||||
- libaio1
|
|
||||||
- libc6
|
|
||||||
- libdbd-mysql-perl
|
|
||||||
- libgcc1
|
|
||||||
- libgcrypt11
|
|
||||||
- libmariadbclient-dev
|
|
||||||
- libstdc++6
|
|
||||||
- mariadb-client
|
|
||||||
|
|
||||||
galera_client_pip_packages:
|
|
||||||
- MySQL-python
|
|
||||||
- python-memcached
|
|
||||||
- pycrypto
|
|
||||||
|
|
||||||
## Tunable overrides
|
|
||||||
galera_client_my_cnf_overrides: {}
|
|
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: rcbops
|
|
||||||
description: Installation galera client
|
|
||||||
company: Rackspace
|
|
||||||
license: Apache2
|
|
||||||
min_ansible_version: 1.6.6
|
|
||||||
platforms:
|
|
||||||
- name: Ubuntu
|
|
||||||
versions:
|
|
||||||
- trusty
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- galera
|
|
||||||
- mariadb
|
|
||||||
- development
|
|
||||||
- openstack
|
|
||||||
dependencies:
|
|
||||||
- pip_lock_down
|
|
@ -1,74 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Update apt sources
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
cache_valid_time: 600
|
|
||||||
register: apt_update
|
|
||||||
until: apt_update|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- galera-client-apt-packages
|
|
||||||
|
|
||||||
- name: Install galera packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: latest
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_client_apt_packages
|
|
||||||
tags:
|
|
||||||
- galera-client-apt-packages
|
|
||||||
|
|
||||||
# TODO(cloudnull) -- Remove this after the Mitaka release
|
|
||||||
# This task simply removes the system version of
|
|
||||||
# percona-xtrabackup and xtrabackup if found the
|
|
||||||
# purpose is to ensure that "if" the system version
|
|
||||||
# of the binary is installed its first removed in
|
|
||||||
# favor of the actual upstream package being used in
|
|
||||||
# the next task.
|
|
||||||
- name: UnInstall system xtrabackup packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: absent
|
|
||||||
with_items:
|
|
||||||
- percona-xtrabackup
|
|
||||||
- xtrabackup
|
|
||||||
tags:
|
|
||||||
- galera-client-apt-packages
|
|
||||||
|
|
||||||
- name: Install galera package
|
|
||||||
apt:
|
|
||||||
deb: "{{ galera_client_package_path }}"
|
|
||||||
force: yes
|
|
||||||
tags:
|
|
||||||
- galera-client-apt-packages
|
|
||||||
|
|
||||||
- name: Install pip packages
|
|
||||||
pip:
|
|
||||||
name: "{{ item }}"
|
|
||||||
state: present
|
|
||||||
extra_args: "{{ pip_install_options|default('') }}"
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_client_pip_packages
|
|
||||||
tags:
|
|
||||||
- galera-client-pip-packages
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Drop local .my.cnf file
|
|
||||||
config_template:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
owner: "root"
|
|
||||||
group: "root"
|
|
||||||
mode: "0600"
|
|
||||||
config_overrides: "{{ item.config_overrides }}"
|
|
||||||
config_type: "{{ item.config_type }}"
|
|
||||||
with_items:
|
|
||||||
- src: "client.my.cnf.j2"
|
|
||||||
dest: "/root/.my.cnf"
|
|
||||||
config_overrides: "{{ galera_client_my_cnf_overrides }}"
|
|
||||||
config_type: "ini"
|
|
||||||
when: inventory_hostname in groups['galera_all'] or inventory_hostname in groups['utility_all']
|
|
||||||
tags:
|
|
||||||
- galera-client-user-config
|
|
@ -1,78 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Add galera apt-keys
|
|
||||||
apt_key:
|
|
||||||
id: "{{ item.hash_id }}"
|
|
||||||
keyserver: "{{ item.keyserver }}"
|
|
||||||
state: "present"
|
|
||||||
with_items: galera_client_gpg_keys
|
|
||||||
register: add_keys
|
|
||||||
until: add_keys|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- galera-client-apt-keys
|
|
||||||
|
|
||||||
- name: Add galera apt-keys using fallback keyserver
|
|
||||||
apt_key:
|
|
||||||
id: "{{ item.hash_id }}"
|
|
||||||
keyserver: "{{ item.fallback_keyserver }}"
|
|
||||||
state: "present"
|
|
||||||
register: add_keys_fallback
|
|
||||||
until: add_keys_fallback|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_client_gpg_keys
|
|
||||||
when: add_keys|failed and item.fallback_keyserver is defined
|
|
||||||
tags:
|
|
||||||
- galera-client-apt-keys
|
|
||||||
|
|
||||||
- name: Drop galera repo pin
|
|
||||||
template:
|
|
||||||
src: "galera_client_pin.pref.j2"
|
|
||||||
dest: "/etc/apt/preferences.d/galera_client_pin.pref"
|
|
||||||
owner: "root"
|
|
||||||
group: "root"
|
|
||||||
mode: "0644"
|
|
||||||
tags:
|
|
||||||
- galera-client-repo-pin
|
|
||||||
|
|
||||||
- name: Add galera repo(s)
|
|
||||||
apt_repository:
|
|
||||||
repo: "{{ item.repo }}"
|
|
||||||
state: "{{ item.state }}"
|
|
||||||
register: add_repos
|
|
||||||
until: add_repos|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items:
|
|
||||||
- "{{ galera_client_apt_repo }}"
|
|
||||||
- "{{ galera_client_apt_percona_xtrabackup_repo }}"
|
|
||||||
tags:
|
|
||||||
- galera-client-repos
|
|
||||||
|
|
||||||
- name: Download the galera package
|
|
||||||
get_url:
|
|
||||||
url: "{{ galera_client_package_url }}"
|
|
||||||
dest: "{{ galera_client_package_path }}"
|
|
||||||
mode: "0644"
|
|
||||||
sha256sum: "{{ galera_client_package_sha256 }}"
|
|
||||||
register: package_download
|
|
||||||
retries: 3
|
|
||||||
delay: 10
|
|
||||||
until: package_download|success
|
|
||||||
tags:
|
|
||||||
- galera-client-apt-packages
|
|
@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- include: galera_client_pre_install.yml
|
|
||||||
- include: galera_client_install.yml
|
|
||||||
- include: galera_client_post_install.yml
|
|
@ -1,6 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
[client]
|
|
||||||
host={{ galera_address }}
|
|
||||||
user={{ galera_root_user }}
|
|
||||||
password={{ galera_root_password }}
|
|
@ -1,5 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
Package: *
|
|
||||||
Pin: release o=MariaDB
|
|
||||||
Pin-Priority: 1001
|
|
@ -1,85 +0,0 @@
|
|||||||
OpenStack Galera Server
|
|
||||||
#######################
|
|
||||||
:tags: openstack, galera, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
contributor guidelines
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Filing Bugs
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Bugs should be filed on Launchpad, not GitHub: "https://bugs.launchpad.net/openstack-ansible"
|
|
||||||
|
|
||||||
|
|
||||||
When submitting a bug, or working on a bug, please ensure the following criteria are met:
|
|
||||||
* The description clearly states or describes the original problem or root cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
||||||
|
|
||||||
|
|
||||||
Submitting Code
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Changes to the project should be submitted for review via the Gerrit tool, following
|
|
||||||
the workflow documented at: "http://docs.openstack.org/infra/manual/developers.html#development-workflow"
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub will be ignored and closed without regard.
|
|
||||||
|
|
||||||
|
|
||||||
Extra
|
|
||||||
-----
|
|
||||||
|
|
||||||
Tags:
|
|
||||||
If it's a bug that needs fixing in a branch in addition to Master, add a '\<release\>-backport-potential' tag (eg ``juno-backport-potential``). There are predefined tags that will autocomplete.
|
|
||||||
|
|
||||||
Status:
|
|
||||||
Please leave this alone, it should be New till someone triages the issue.
|
|
||||||
|
|
||||||
Importance:
|
|
||||||
Should only be touched if it is a Blocker/Gating issue. If it is, please set to High, and only use Critical if you have found a bug that can take down whole infrastructures.
|
|
||||||
|
|
||||||
|
|
||||||
Style guide
|
|
||||||
-----------
|
|
||||||
|
|
||||||
When creating tasks and other roles for use in Ansible please create then using the YAML dictionary format.
|
|
||||||
|
|
||||||
Example YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name:
|
|
||||||
thing1: "some-stuff"
|
|
||||||
thing2: "some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Example **NOT** in YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name: thing1="some-stuff" thing2="some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Usage of the ">" and "|" operators should be limited to Ansible conditionals and command modules such as the ansible ``shell`` module.
|
|
||||||
|
|
||||||
|
|
||||||
Issues
|
|
||||||
------
|
|
||||||
|
|
||||||
When submitting an issue, or working on an issue please ensure the following criteria are met:
|
|
||||||
* The description clearly states or describes the original problem or root cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* If the issue is a bug that needs fixing in a branch other than Master, add the ‘backport potential’ tag TO THE ISSUE (not the PR).
|
|
||||||
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
|
|
||||||
* If the issue is needed for a hotfix release, add the 'expedite' label.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
|||||||
OpenStack Galera Server
|
|
||||||
#######################
|
|
||||||
:tags: openstack, galera, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
Role for the installation and installation of a Galera Cluster powered by MariaDB
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: Install galera server
|
|
||||||
hosts: galera_all
|
|
||||||
user: root
|
|
||||||
roles:
|
|
||||||
- { role: "galera_server", tags: [ "galera-server" ] }
|
|
||||||
vars:
|
|
||||||
container_address: "{{ ansible_ssh_host }}"
|
|
||||||
galera_wsrep_address: "10.0.0.1,10.0.0.2,10.0.0.3"
|
|
||||||
galera_wsrep_node_name: "{{ ansible_hostname }}"
|
|
||||||
galera_wsrep_cluster_address: "{{ container_address }}"
|
|
||||||
galera_address: "{{ container_address }}"
|
|
||||||
galera_root_password: secrete
|
|
||||||
galera_root_user: root
|
|
@ -1,149 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
galera_server_bootstrap_node: "{{ groups['galera_all'][0] }}"
|
|
||||||
galera_ignore_cluster_state: false
|
|
||||||
|
|
||||||
galera_lb_address: 127.0.0.1
|
|
||||||
|
|
||||||
galera_cluster_name: openstack_galera_cluster
|
|
||||||
|
|
||||||
# The galera server-id should be set on all cluster nodes to ensure
|
|
||||||
# that replication is handled correctly and the error
|
|
||||||
# "Warning: You should set server-id to a non-0 value if master_host is
|
|
||||||
# set; we will force server id to 2, but this MySQL server will not act
|
|
||||||
# as a slave." is no longer present.
|
|
||||||
# galera_server_id: 0
|
|
||||||
|
|
||||||
galera_existing_cluster: true
|
|
||||||
galera_running_and_bootstrapped: false
|
|
||||||
|
|
||||||
galera_monitoring_user: monitoring
|
|
||||||
galera_monitoring_user_password: ""
|
|
||||||
galera_root_user: root
|
|
||||||
|
|
||||||
# WARNING: This option is deprecated and will be removed in v12.0
|
|
||||||
galera_gcache_size: 1024M
|
|
||||||
|
|
||||||
galera_max_heap_table_size: 32M
|
|
||||||
galera_tmp_table_size: 32M
|
|
||||||
|
|
||||||
galera_file_limits: 65535
|
|
||||||
galera_wait_timeout: 28800
|
|
||||||
|
|
||||||
## innodb options
|
|
||||||
galera_innodb_buffer_pool_size: 4096M
|
|
||||||
galera_innodb_additional_mem_pool_size: 24M
|
|
||||||
galera_innodb_log_file_size: 1024M
|
|
||||||
galera_innodb_log_buffer_size: 128M
|
|
||||||
|
|
||||||
## wsrep configuration
|
|
||||||
galera_wsrep_address: "127.0.0.1"
|
|
||||||
galera_wsrep_cluster_address: "{{ galera_wsrep_address }}"
|
|
||||||
galera_wsrep_node_incoming_address: "{{ galera_wsrep_address }}"
|
|
||||||
galera_wsrep_slave_threads: "{{ ansible_processor_vcpus }}"
|
|
||||||
galera_wsrep_retry_autocommit: 3
|
|
||||||
galera_wsrep_debug: 0
|
|
||||||
galera_wsrep_sst_method: xtrabackup-v2
|
|
||||||
galera_wsrep_provider_options:
|
|
||||||
- { option: "gcache.size", value: "{{ galera_gcache_size }}" }
|
|
||||||
galera_wsrep_sst_auth_user: "root"
|
|
||||||
galera_wsrep_sst_auth_password: "{{ galera_root_password }}"
|
|
||||||
|
|
||||||
# xtrabackup parallel/compression/sync threads
|
|
||||||
galera_xtrabackup_threads: 4
|
|
||||||
|
|
||||||
# Galera GPG Keys
|
|
||||||
galera_gpg_keys:
|
|
||||||
- key_name: 'mariadb'
|
|
||||||
keyserver: 'hkp://keyserver.ubuntu.com:80'
|
|
||||||
fallback_keyserver: 'hkp://p80.pool.sks-keyservers.net:80'
|
|
||||||
hash_id: '0xcbcb082a1bb943db'
|
|
||||||
- key_name: 'percona-xtrabackup'
|
|
||||||
keyserver: 'hkp://keyserver.ubuntu.com:80'
|
|
||||||
fallback_keyserver: 'hkp://p80.pool.sks-keyservers.net:80'
|
|
||||||
hash_id: '0x1c4cbdcdcd2efd2a'
|
|
||||||
|
|
||||||
# Repositories
|
|
||||||
galera_apt_repo_url: "https://mirror.rackspace.com/mariadb/repo/10.0/ubuntu"
|
|
||||||
galera_apt_repo:
|
|
||||||
repo: "deb {{ galera_apt_repo_url }} {{ ansible_distribution_release }} main"
|
|
||||||
state: "present"
|
|
||||||
|
|
||||||
galera_apt_percona_xtrabackup_url: "https://repo.percona.com/apt"
|
|
||||||
galera_apt_percona_xtrabackup_repo:
|
|
||||||
repo: "deb {{ galera_apt_percona_xtrabackup_url }} {{ ansible_distribution_release }} main"
|
|
||||||
state: "present"
|
|
||||||
|
|
||||||
galera_package_url: "https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.13/binary/debian/trusty/x86_64/percona-xtrabackup-22_2.2.13-1.trusty_amd64.deb"
|
|
||||||
galera_package_sha256: "2f58eedefa905583f0650f77bb2b149139c4066c7fb690202124fe5c7ac83e9e"
|
|
||||||
galera_package_path: "/opt/{{ galera_package_url | basename }}"
|
|
||||||
|
|
||||||
galera_pip_packages:
|
|
||||||
- MySQL-python
|
|
||||||
- python-memcached
|
|
||||||
- pycrypto
|
|
||||||
|
|
||||||
galera_pre_apt_packages:
|
|
||||||
- debconf-utils
|
|
||||||
- libaio1
|
|
||||||
- libc6
|
|
||||||
- libdbd-mysql-perl
|
|
||||||
- libgcc1
|
|
||||||
- libgcrypt11
|
|
||||||
- libstdc++6
|
|
||||||
- python-software-properties
|
|
||||||
- software-properties-common
|
|
||||||
|
|
||||||
# The package name for mariaDB is set as a variable
|
|
||||||
# so that it can be used in debconf later in the
|
|
||||||
# "galera_common" role.
|
|
||||||
galera_mariadb_server_package: "mariadb-galera-server-10.0"
|
|
||||||
|
|
||||||
# NB This is specifically galera_packages as these packages only get installed
|
|
||||||
# during the galera play - this is because of the preseed task and the service
|
|
||||||
# startup control used when installing mariadb-galera-server and galera.
|
|
||||||
galera_apt_packages:
|
|
||||||
- mariadb-client
|
|
||||||
- "{{ galera_mariadb_server_package }}"
|
|
||||||
- galera-3
|
|
||||||
- qpress
|
|
||||||
- rsync
|
|
||||||
- socat
|
|
||||||
|
|
||||||
galera_debconf_items:
|
|
||||||
- question: "mysql-server/root_password"
|
|
||||||
name: "{{ galera_mariadb_server_package }}"
|
|
||||||
value: "{{ galera_root_password }}"
|
|
||||||
vtype: "string"
|
|
||||||
- question: "mysql-server/root_password_again"
|
|
||||||
name: "{{ galera_mariadb_server_package }}"
|
|
||||||
value: "{{ galera_root_password }}"
|
|
||||||
vtype: "string"
|
|
||||||
|
|
||||||
# Galera slow/unindexed query logging
|
|
||||||
galera_slow_query_logging: 0
|
|
||||||
galera_unindexed_query_logging: 0
|
|
||||||
|
|
||||||
## Tunable overrides
|
|
||||||
galera_my_cnf_overrides: {}
|
|
||||||
galera_cluster_cnf_overrides: {}
|
|
||||||
galera_debian_cnf_overrides: {}
|
|
||||||
|
|
||||||
# Set the max connections value for galera. Set this value to override the
|
|
||||||
# computed value which is (100 x vCPUs). If computed, the lowest value throughout
|
|
||||||
# the cluster will be used which is something to note if deploying galera on different
|
|
||||||
# hardware.
|
|
||||||
# galera_max_connections: 500
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
echo "All runlevel operations denied by policy" >&2
|
|
||||||
exit 101
|
|
@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Restart mysql
|
|
||||||
service:
|
|
||||||
name: mysql
|
|
||||||
state: restarted
|
|
||||||
args: "{{ (not galera_existing_cluster | bool and inventory_hostname == galera_server_bootstrap_node) | ternary('--wsrep-new-cluster', '') }}"
|
|
||||||
when: not galera_running_and_bootstrapped | bool
|
|
||||||
register: galera_restart
|
|
||||||
until: galera_restart|success
|
|
||||||
retries: 3
|
|
||||||
delay: 2
|
|
@ -1,66 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
DOCUMENTATION = """
|
|
||||||
---
|
|
||||||
module: mysql_status_facts
|
|
||||||
short_description:
|
|
||||||
- A module for gathering mysql status facts.
|
|
||||||
description:
|
|
||||||
- A module for gathering mysql status facts.
|
|
||||||
author: Rcbops
|
|
||||||
"""
|
|
||||||
|
|
||||||
EXAMPLES = """
|
|
||||||
- name: Gather mysql status facts
|
|
||||||
mysql_status_facts:
|
|
||||||
"""
|
|
||||||
|
|
||||||
import subprocess
|
|
||||||
|
|
||||||
|
|
||||||
class MysqlStatusFacts(object):
|
|
||||||
def __init__(self, module):
|
|
||||||
self.state_change = False
|
|
||||||
self.module = module
|
|
||||||
|
|
||||||
def gather_facts(self):
|
|
||||||
"""Get information about mysql status."""
|
|
||||||
try:
|
|
||||||
output = subprocess.check_output(["mysql", "-e", "show status"],
|
|
||||||
stderr=subprocess.STDOUT)
|
|
||||||
except subprocess.CalledProcessError as e:
|
|
||||||
message = 'Mysql fact collection failed: "%s".' % e.output.strip()
|
|
||||||
self.module.fail_json(msg=message)
|
|
||||||
else:
|
|
||||||
lines = output.split('\n')
|
|
||||||
facts = dict(l.split('\t') for l in lines if l)
|
|
||||||
self.module.exit_json(
|
|
||||||
changed=self.state_change,
|
|
||||||
ansible_facts={'mysql_status': facts})
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
module = AnsibleModule(
|
|
||||||
argument_spec=dict(
|
|
||||||
),
|
|
||||||
supports_check_mode=False
|
|
||||||
)
|
|
||||||
mysql_facts = MysqlStatusFacts(module)
|
|
||||||
mysql_facts.gather_facts()
|
|
||||||
|
|
||||||
from ansible.module_utils.basic import *
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: rcbops
|
|
||||||
description: Installation galera server
|
|
||||||
company: Rackspace
|
|
||||||
license: Apache2
|
|
||||||
min_ansible_version: 1.6.6
|
|
||||||
platforms:
|
|
||||||
- name: Ubuntu
|
|
||||||
versions:
|
|
||||||
- trusty
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- galera
|
|
||||||
- mariadb
|
|
||||||
- development
|
|
||||||
- openstack
|
|
||||||
dependencies:
|
|
||||||
- apt_package_pinning
|
|
||||||
- galera_client
|
|
@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Check if mysql is running
|
|
||||||
command: /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping
|
|
||||||
ignore_errors: true
|
|
||||||
changed_when: mysql_running.rc != 0
|
|
||||||
register: mysql_running
|
|
||||||
notify: Restart mysql
|
|
||||||
tags:
|
|
||||||
- galera-cluster-state-check
|
|
||||||
- galera-bootstrap
|
|
||||||
|
|
||||||
- name: Start cluster with wsrep
|
|
||||||
service:
|
|
||||||
name: mysql
|
|
||||||
state: restarted
|
|
||||||
args: "--wsrep-new-cluster"
|
|
||||||
when:
|
|
||||||
- inventory_hostname == galera_server_bootstrap_node
|
|
||||||
- mysql_running.rc != 0
|
|
||||||
tags:
|
|
||||||
- galera-bootstrap
|
|
||||||
|
|
||||||
- name: Wait for operational state
|
|
||||||
command: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'
|
|
||||||
register: galera_check_wait
|
|
||||||
until: galera_check_wait|success
|
|
||||||
failed_when: not galera_check_wait.stdout | search("OPERATIONAL")
|
|
||||||
retries: 6
|
|
||||||
delay: 5
|
|
||||||
when:
|
|
||||||
- inventory_hostname == galera_server_bootstrap_node
|
|
||||||
- mysql_running.rc != 0
|
|
||||||
tags:
|
|
||||||
- galera-operational
|
|
||||||
- galera-bootstrap
|
|
||||||
|
|
||||||
- set_fact:
|
|
||||||
galera_running_and_bootstrapped: true
|
|
||||||
when:
|
|
||||||
- inventory_hostname == galera_server_bootstrap_node
|
|
||||||
- mysql_running.rc != 0
|
|
||||||
tags:
|
|
||||||
- galera-operational
|
|
||||||
- galera-bootstrap
|
|
@ -1,75 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Check if mysql is running
|
|
||||||
command: /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping
|
|
||||||
ignore_errors: true
|
|
||||||
changed_when: mysql_running.rc != 0
|
|
||||||
register: mysql_running
|
|
||||||
notify: Restart mysql
|
|
||||||
tags:
|
|
||||||
- galera-cluster-state-check
|
|
||||||
|
|
||||||
- name: Check for cluster state failure
|
|
||||||
fail:
|
|
||||||
msg: |
|
|
||||||
The cluster may be broken, mysql is not running but appears to be
|
|
||||||
installed. Fix it before re-running the playbook or override with
|
|
||||||
'openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml'.
|
|
||||||
when:
|
|
||||||
- not galera_ignore_cluster_state | bool
|
|
||||||
- mysql_running.rc == 1
|
|
||||||
- mysql_running.stderr | search("Check that mysqld is running and that the socket")
|
|
||||||
tags:
|
|
||||||
- galera-cluster-state-check
|
|
||||||
|
|
||||||
- name: Gather mysql facts
|
|
||||||
mysql_status_facts:
|
|
||||||
ignore_errors: true
|
|
||||||
tags:
|
|
||||||
- galera-cluster-state-check
|
|
||||||
|
|
||||||
- name: Check for cluster state failure
|
|
||||||
fail:
|
|
||||||
msg: |
|
|
||||||
The cluster may be broken, mysql is running but unable to gather mysql facts.
|
|
||||||
Fix it before re-running the playbook or override with
|
|
||||||
'openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml'.
|
|
||||||
when:
|
|
||||||
- not galera_ignore_cluster_state | bool
|
|
||||||
- mysql_running.rc == 0
|
|
||||||
- mysql_status is not defined
|
|
||||||
tags:
|
|
||||||
- galera-cluster-state-check
|
|
||||||
|
|
||||||
- name: Check for cluster state failure
|
|
||||||
fail:
|
|
||||||
msg: |
|
|
||||||
wsrep_incoming_addresses does not match across the cluster. Please fix before
|
|
||||||
re-running the playbooks or override with
|
|
||||||
'openstack-ansible -e galera_ignore_cluster_state=true galera-install.yml'.
|
|
||||||
with_items: play_hosts
|
|
||||||
when:
|
|
||||||
- not galera_ignore_cluster_state | bool
|
|
||||||
- mysql_running.rc == 0
|
|
||||||
- mysql_status['wsrep_incoming_addresses'] != hostvars[item]['mysql_status']['wsrep_incoming_addresses']
|
|
||||||
tags:
|
|
||||||
- galera-cluster-state-check
|
|
||||||
|
|
||||||
- set_fact:
|
|
||||||
galera_existing_cluster: true
|
|
||||||
when: mysql_running.rc == 0
|
|
||||||
tags:
|
|
||||||
- galera-cluster-state-check
|
|
@ -1,85 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Preseed galera password(s)
|
|
||||||
debconf:
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
question: "{{ item.question }}"
|
|
||||||
value: "{{ item.value }}"
|
|
||||||
vtype: "{{ item.vtype }}"
|
|
||||||
with_items: galera_debconf_items
|
|
||||||
tags:
|
|
||||||
- galera-debconf
|
|
||||||
|
|
||||||
- name: Update apt sources
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
cache_valid_time: 600
|
|
||||||
register: apt_update
|
|
||||||
until: apt_update|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- galera-apt-packages
|
|
||||||
|
|
||||||
- name: Install galera packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: latest
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_apt_packages
|
|
||||||
notify: Restart mysql
|
|
||||||
tags:
|
|
||||||
- galera-apt-packages
|
|
||||||
|
|
||||||
# TODO(cloudnull) -- Remove this after the Mitaka release
|
|
||||||
# This task simply removes the system version of
|
|
||||||
# percona-xtrabackup and xtrabackup if found the
|
|
||||||
# purpose is to ensure that "if" the system version
|
|
||||||
# of the binary is installed its first removed in
|
|
||||||
# favor of the actual upstream package being used in
|
|
||||||
# the next task.
|
|
||||||
- name: UnInstall system xtrabackup packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: absent
|
|
||||||
with_items:
|
|
||||||
- percona-xtrabackup
|
|
||||||
- xtrabackup
|
|
||||||
tags:
|
|
||||||
- galera-apt-packages
|
|
||||||
|
|
||||||
- name: Install galera package
|
|
||||||
apt:
|
|
||||||
deb: "{{ galera_package_path }}"
|
|
||||||
force: yes
|
|
||||||
tags:
|
|
||||||
- galera-apt-packages
|
|
||||||
|
|
||||||
- name: Install pip packages
|
|
||||||
pip:
|
|
||||||
name: "{{ item }}"
|
|
||||||
state: present
|
|
||||||
extra_args: "{{ pip_install_options|default('') }}"
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_pip_packages
|
|
||||||
tags:
|
|
||||||
- galera-pip-packages
|
|
@ -1,74 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Create the local directories
|
|
||||||
file:
|
|
||||||
path: "{{ item.path }}"
|
|
||||||
state: "directory"
|
|
||||||
owner: "{{ item.owner|default('root') }}"
|
|
||||||
group: "{{ item.group|default('root') }}"
|
|
||||||
mode: "{{ item.mode|default('0755') }}"
|
|
||||||
recurse: "{{ item.recurse|default('false') }}"
|
|
||||||
with_items:
|
|
||||||
- { path: "/var/lib/mysql", owner: "mysql", mode: "2755" }
|
|
||||||
- { path: "/var/log/mysql", owner: "mysql", mode: "2755" }
|
|
||||||
- { path: "/var/log/mysql_logs/", owner: "mysql", group: "syslog", mode: "2755" }
|
|
||||||
- { path: "/etc/mysql/conf.d" }
|
|
||||||
tags:
|
|
||||||
- galera-config
|
|
||||||
|
|
||||||
- name: Drop mariadb config(s)
|
|
||||||
config_template:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
owner: "root"
|
|
||||||
group: "root"
|
|
||||||
mode: "0644"
|
|
||||||
config_overrides: "{{ item.config_overrides }}"
|
|
||||||
config_type: "{{ item.config_type }}"
|
|
||||||
with_items:
|
|
||||||
- src: my.cnf.j2
|
|
||||||
dest: /etc/mysql/my.cnf
|
|
||||||
config_overrides: "{{ galera_my_cnf_overrides }}"
|
|
||||||
config_type: "ini"
|
|
||||||
- src: cluster.cnf.j2
|
|
||||||
dest: /etc/mysql/conf.d/cluster.cnf
|
|
||||||
config_overrides: "{{ galera_cluster_cnf_overrides }}"
|
|
||||||
config_type: "ini"
|
|
||||||
- src: debian.cnf.j2
|
|
||||||
dest: /etc/mysql/debian.cnf
|
|
||||||
config_overrides: "{{ galera_debian_cnf_overrides }}"
|
|
||||||
config_type: "ini"
|
|
||||||
notify: Restart mysql
|
|
||||||
tags:
|
|
||||||
- galera-client-user-config
|
|
||||||
|
|
||||||
- name: Drop mariadb config(s)
|
|
||||||
template:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
mode: "{{ item.mode|default('0644') }}"
|
|
||||||
with_items:
|
|
||||||
- { src: mysql_defaults.j2, dest: /etc/default/mysql }
|
|
||||||
notify: Restart mysql
|
|
||||||
tags:
|
|
||||||
- galera-config
|
|
||||||
|
|
||||||
- name: Remove policy-rc
|
|
||||||
file:
|
|
||||||
path: "/usr/sbin/policy-rc.d"
|
|
||||||
state: absent
|
|
||||||
tags:
|
|
||||||
- galera-config
|
|
@ -1,119 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Update apt sources
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
cache_valid_time: 600
|
|
||||||
register: apt_update
|
|
||||||
until: apt_update|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- galera-apt-packages
|
|
||||||
|
|
||||||
- name: Install galera pre packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: latest
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_pre_apt_packages
|
|
||||||
tags:
|
|
||||||
- galera-pre-apt-packages
|
|
||||||
|
|
||||||
- name: Add galera apt-keys
|
|
||||||
apt_key:
|
|
||||||
id: "{{ item.hash_id }}"
|
|
||||||
keyserver: "{{ item.keyserver }}"
|
|
||||||
state: "present"
|
|
||||||
register: add_keys
|
|
||||||
until: add_keys|success
|
|
||||||
ignore_errors: True
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_gpg_keys
|
|
||||||
tags:
|
|
||||||
- galera-apt-keys
|
|
||||||
|
|
||||||
- name: Add galera apt-keys using fallback keyserver
|
|
||||||
apt_key:
|
|
||||||
id: "{{ item.hash_id }}"
|
|
||||||
keyserver: "{{ item.fallback_keyserver }}"
|
|
||||||
state: "present"
|
|
||||||
register: add_keys_fallback
|
|
||||||
until: add_keys_fallback|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: galera_gpg_keys
|
|
||||||
when: add_keys|failed and item.fallback_keyserver is defined
|
|
||||||
tags:
|
|
||||||
- galera-apt-keys
|
|
||||||
|
|
||||||
- name: Drop galera repo pin
|
|
||||||
template:
|
|
||||||
src: "galera_pin.pref.j2"
|
|
||||||
dest: "/etc/apt/preferences.d/galera_pin.pref"
|
|
||||||
owner: "root"
|
|
||||||
group: "root"
|
|
||||||
mode: "0644"
|
|
||||||
tags:
|
|
||||||
- galera-repo-pin
|
|
||||||
|
|
||||||
- name: Add galera repo(s)
|
|
||||||
apt_repository:
|
|
||||||
repo: "{{ item.repo }}"
|
|
||||||
state: "{{ item.state }}"
|
|
||||||
register: add_repos
|
|
||||||
until: add_repos|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items:
|
|
||||||
- "{{ galera_apt_repo }}"
|
|
||||||
- "{{ galera_apt_percona_xtrabackup_repo }}"
|
|
||||||
tags:
|
|
||||||
- galera-repos
|
|
||||||
|
|
||||||
- name: Download the galera package
|
|
||||||
get_url:
|
|
||||||
url: "{{ galera_package_url }}"
|
|
||||||
dest: "{{ galera_package_path }}"
|
|
||||||
mode: "0644"
|
|
||||||
sha256sum: "{{ galera_package_sha256 }}"
|
|
||||||
register: package_download
|
|
||||||
retries: 3
|
|
||||||
delay: 10
|
|
||||||
until: package_download|success
|
|
||||||
tags:
|
|
||||||
- galera-apt-packages
|
|
||||||
|
|
||||||
- name: Prevent galera from starting on install
|
|
||||||
copy:
|
|
||||||
src: "policy-rc.d"
|
|
||||||
dest: "/usr/sbin/policy-rc.d"
|
|
||||||
mode: "0755"
|
|
||||||
backup: yes
|
|
||||||
tags:
|
|
||||||
- galera-config
|
|
||||||
|
|
||||||
- name: Drop limits config
|
|
||||||
template:
|
|
||||||
src: "limits.conf.j2"
|
|
||||||
dest: "/etc/security/limits.conf"
|
|
||||||
notify: Restart mysql
|
|
||||||
tags:
|
|
||||||
- galera-config
|
|
@ -1,45 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Create galera users
|
|
||||||
mysql_user:
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
host: "{{ item.host }}"
|
|
||||||
password: "{{ item.password }}"
|
|
||||||
priv: "{{ item.priv }}"
|
|
||||||
state: "{{ item.state }}"
|
|
||||||
with_items:
|
|
||||||
- name: "{{ galera_root_user }}"
|
|
||||||
host: "%"
|
|
||||||
password: "{{ galera_root_password }}"
|
|
||||||
priv: "*.*:ALL,GRANT"
|
|
||||||
state: present
|
|
||||||
- name: "{{ galera_root_user }}"
|
|
||||||
host: "localhost"
|
|
||||||
password: "{{ galera_root_password }}"
|
|
||||||
priv: "*.*:ALL"
|
|
||||||
state: absent
|
|
||||||
- name: "{{ galera_monitoring_user }}"
|
|
||||||
host: '%'
|
|
||||||
password: "{{ galera_monitoring_user_password }}"
|
|
||||||
priv: "*.*:USAGE"
|
|
||||||
state: present
|
|
||||||
- name: "{{ galera_monitoring_user }}"
|
|
||||||
host: 'localhost'
|
|
||||||
password: "{{ galera_monitoring_user_password }}"
|
|
||||||
priv: "*.*:USAGE"
|
|
||||||
state: present
|
|
||||||
tags:
|
|
||||||
- galera-user-create
|
|
@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- include: galera_cluster_state.yml
|
|
||||||
- include: galera_pre_install.yml
|
|
||||||
- include: galera_install.yml
|
|
||||||
- include: galera_post_install.yml
|
|
||||||
- include: galera_bootstrap.yml
|
|
||||||
|
|
||||||
- name: Flush handlers
|
|
||||||
meta: flush_handlers
|
|
||||||
|
|
||||||
- include: galera_setup.yml
|
|
||||||
when: inventory_hostname == galera_server_bootstrap_node
|
|
@ -1,52 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
[mysqld]
|
|
||||||
# Path to Galera library
|
|
||||||
wsrep_provider = /usr/lib/galera/libgalera_smm.so
|
|
||||||
{% if galera_wsrep_provider_options is defined %}
|
|
||||||
wsrep_provider_options = "
|
|
||||||
{%- for item in galera_wsrep_provider_options -%}
|
|
||||||
{{ item.option }} = {{ item.value }}{% if not loop.last %}; {% endif -%}
|
|
||||||
{%- endfor -%}
|
|
||||||
"
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# Cluster connection URL contains the IPs of node#1, node#2 and node#3
|
|
||||||
wsrep_cluster_address = gcomm://{{ galera_wsrep_cluster_address }}
|
|
||||||
|
|
||||||
# Address for incoming client connections.
|
|
||||||
wsrep_node_incoming_address = {{ galera_wsrep_address }}
|
|
||||||
|
|
||||||
# In order for Galera to work correctly binlog format should be ROW
|
|
||||||
binlog_format = ROW
|
|
||||||
|
|
||||||
# MyISAM storage engine has only experimental support
|
|
||||||
default_storage_engine = InnoDB
|
|
||||||
|
|
||||||
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
|
|
||||||
innodb_autoinc_lock_mode = 2
|
|
||||||
|
|
||||||
# This should be the IP and DNS name for the current system on which you're editing the file.
|
|
||||||
wsrep_node_address = {{ galera_wsrep_address }}
|
|
||||||
wsrep_node_name = {{ galera_wsrep_node_name }}
|
|
||||||
|
|
||||||
# to enable debug level logging, set this to 1
|
|
||||||
wsrep_debug = {{ galera_wsrep_debug }}
|
|
||||||
|
|
||||||
# SST method
|
|
||||||
wsrep_sst_method = {{ galera_wsrep_sst_method }}
|
|
||||||
wsrep_sst_auth = {{ galera_wsrep_sst_auth_user }}:{{ galera_wsrep_sst_auth_password }}
|
|
||||||
wsrep_slave_threads = {{ galera_wsrep_slave_threads }}
|
|
||||||
|
|
||||||
# Cluster name
|
|
||||||
wsrep_cluster_name = "{{ galera_cluster_name }}"
|
|
||||||
|
|
||||||
# how many times to retry deadlocked autocommits
|
|
||||||
wsrep_retry_autocommit = {{ galera_wsrep_retry_autocommit }}
|
|
||||||
|
|
||||||
[xtrabackup]
|
|
||||||
compress
|
|
||||||
compact
|
|
||||||
parallel = {{ galera_xtrabackup_threads }}
|
|
||||||
compress-threads = {{ galera_xtrabackup_threads }}
|
|
||||||
rebuild-threads = {{ galera_xtrabackup_threads }}
|
|
@ -1,14 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
[client]
|
|
||||||
host = localhost
|
|
||||||
user = root
|
|
||||||
password = {{ galera_root_password }}
|
|
||||||
socket = /var/run/mysqld/mysqld.sock
|
|
||||||
|
|
||||||
[mysql_upgrade]
|
|
||||||
host = localhost
|
|
||||||
user = root
|
|
||||||
password = {{ galera_root_password }}
|
|
||||||
socket = /var/run/mysqld/mysqld.sock
|
|
||||||
basedir = /usr
|
|
@ -1,5 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
Package: *
|
|
||||||
Pin: release o=MariaDB
|
|
||||||
Pin-Priority: 1001
|
|
@ -1,4 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
# OpenFile limits
|
|
||||||
* - nofile {{ galera_file_limits }}
|
|
@ -1,93 +0,0 @@
|
|||||||
{%- set all_calculated_max_connections = [] %}
|
|
||||||
{%- for galera_node in groups['galera_all'] %}
|
|
||||||
{%- if all_calculated_max_connections.append(hostvars[galera_node]['ansible_processor_vcpus'] * 100) %}
|
|
||||||
{%- endif %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- set calculated_max_connections = all_calculated_max_connections|sort %}
|
|
||||||
|
|
||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
[client]
|
|
||||||
port = 3306
|
|
||||||
socket = /var/run/mysqld/mysqld.sock
|
|
||||||
|
|
||||||
|
|
||||||
[mysqld_safe]
|
|
||||||
socket = /var/run/mysqld/mysqld.sock
|
|
||||||
nice = 0
|
|
||||||
|
|
||||||
|
|
||||||
[mysql]
|
|
||||||
default-character-set = utf8
|
|
||||||
|
|
||||||
|
|
||||||
[mysqld]
|
|
||||||
user = mysql
|
|
||||||
collation-server = utf8_unicode_ci
|
|
||||||
init-connect = 'SET NAMES utf8'
|
|
||||||
character-set-server = utf8
|
|
||||||
datadir = /var/lib/mysql
|
|
||||||
{% if galera_server_id is defined %}
|
|
||||||
server-id = {{ galera_server_id }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
# LOGGING #
|
|
||||||
log-queries-not-using-indexes = {{ galera_unindexed_query_logging }}
|
|
||||||
slow-query-log = {{ galera_slow_query_logging }}
|
|
||||||
slow-query-log-file = /var/log/mysql_logs/mysql-slow.log
|
|
||||||
log_error = /var/log/mysql_logs/galera_server_error.log
|
|
||||||
log-bin = /var/lib/mysql/mariadb-bin
|
|
||||||
log-bin-index = /var/lib/mysql/mariadb-bin.index
|
|
||||||
expire-logs-days = 7
|
|
||||||
log_slave_updates = 1
|
|
||||||
|
|
||||||
# SAFETY #
|
|
||||||
max-allowed-packet = 16M
|
|
||||||
max-connect-errors = 1000000
|
|
||||||
|
|
||||||
# NOTE: The number of max connections is defined by ( host_vcpus * 100 ). This value
|
|
||||||
# is the lowest integer based on the ansible facts gathered from every galera node.
|
|
||||||
# Computing the connections value using the lowest denominator maintains cluster integrity
|
|
||||||
# by not attempting to over commit to a less capable machine.
|
|
||||||
# These are the computed max_connections based on cluster data {{ calculated_max_connections }}
|
|
||||||
max_connections = {{ galera_max_connections | default(calculated_max_connections[0]) }}
|
|
||||||
|
|
||||||
wait_timeout = {{ galera_wait_timeout }}
|
|
||||||
|
|
||||||
# CACHES AND LIMITS #
|
|
||||||
tmp-table-size = {{ galera_max_heap_table_size }}
|
|
||||||
max-heap-table-size = {{ galera_tmp_table_size }}
|
|
||||||
query-cache-type = 0
|
|
||||||
query-cache-size = 0M
|
|
||||||
thread-cache-size = 50
|
|
||||||
open-files-limit = {{ galera_file_limits }}
|
|
||||||
table-definition-cache = 4096
|
|
||||||
table-open-cache = 10240
|
|
||||||
|
|
||||||
# INNODB #
|
|
||||||
innodb-flush-method = O_DIRECT
|
|
||||||
innodb-additional-mem-pool-size = {{ galera_innodb_additional_mem_pool_size }}
|
|
||||||
innodb-log-file-size = {{ galera_innodb_log_file_size }}
|
|
||||||
innodb-flush-log-at-trx-commit = 1
|
|
||||||
innodb-file-per-table = 1
|
|
||||||
innodb-buffer-pool-size = {{ galera_innodb_buffer_pool_size }}
|
|
||||||
|
|
||||||
# Depending on number of cores and disk sub
|
|
||||||
innodb-read-io-threads = 4
|
|
||||||
innodb-write-io-threads = 4
|
|
||||||
innodb-doublewrite = 1
|
|
||||||
innodb-log-buffer-size = {{ galera_innodb_log_buffer_size }}
|
|
||||||
innodb-buffer-pool-instances = 8
|
|
||||||
innodb-log-files-in-group = 2
|
|
||||||
innodb-thread-concurrency = 64
|
|
||||||
|
|
||||||
# avoid statistics update when doing e.g show tables
|
|
||||||
innodb_stats_on_metadata = 0
|
|
||||||
|
|
||||||
[mysqldump]
|
|
||||||
quick
|
|
||||||
quote-names
|
|
||||||
max_allowed_packet = 16M
|
|
||||||
|
|
||||||
|
|
||||||
!includedir /etc/mysql/conf.d/
|
|
@ -1,15 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{%- set all_calculated_max_connections = [] %}
|
|
||||||
{%- for galera_node in groups['galera_all'] %}
|
|
||||||
{%- set _ = all_calculated_max_connections.append(hostvars[galera_node]['ansible_processor_vcpus'] * 100) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- set calculated_min_connections = all_calculated_max_connections | min %}
|
|
||||||
{%- set calculated_max_connections = galera_max_connections | default(calculated_min_connections) %}
|
|
||||||
|
|
||||||
# How long to wait for successfull mysql startup
|
|
||||||
# Startup can take a while if it requires a galera state transfer.
|
|
||||||
MYSQLD_STARTUP_TIMEOUT=1800
|
|
||||||
|
|
||||||
ulimit -n {{ calculated_max_connections }}
|
|
||||||
ulimit -Hn {{ calculated_max_connections }}
|
|
@ -1,85 +0,0 @@
|
|||||||
OpenStack memcached servers
|
|
||||||
###########################
|
|
||||||
:tags: openstack, memcached, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
contributor guidelines
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Filing Bugs
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Bugs should be filed on Launchpad, not GitHub: "https://bugs.launchpad.net/openstack-ansible"
|
|
||||||
|
|
||||||
|
|
||||||
When submitting a bug, or working on a bug, please ensure the following criteria are met:
|
|
||||||
* The description clearly states or describes the original problem or root cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
||||||
|
|
||||||
|
|
||||||
Submitting Code
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Changes to the project should be submitted for review via the Gerrit tool, following
|
|
||||||
the workflow documented at: "http://docs.openstack.org/infra/manual/developers.html#development-workflow"
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub will be ignored and closed without regard.
|
|
||||||
|
|
||||||
|
|
||||||
Extra
|
|
||||||
-----
|
|
||||||
|
|
||||||
Tags:
|
|
||||||
If it's a bug that needs fixing in a branch in addition to Master, add a '\<release\>-backport-potential' tag (eg ``juno-backport-potential``). There are predefined tags that will autocomplete.
|
|
||||||
|
|
||||||
Status:
|
|
||||||
Please leave this alone, it should be New till someone triages the issue.
|
|
||||||
|
|
||||||
Importance:
|
|
||||||
Should only be touched if it is a Blocker/Gating issue. If it is, please set to High, and only use Critical if you have found a bug that can take down whole infrastructures.
|
|
||||||
|
|
||||||
|
|
||||||
Style guide
|
|
||||||
-----------
|
|
||||||
|
|
||||||
When creating tasks and other roles for use in Ansible please create then using the YAML dictionary format.
|
|
||||||
|
|
||||||
Example YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name:
|
|
||||||
thing1: "some-stuff"
|
|
||||||
thing2: "some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Example **NOT** in YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name: thing1="some-stuff" thing2="some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Usage of the ">" and "|" operators should be limited to Ansible conditionals and command modules such as the ansible ``shell`` module.
|
|
||||||
|
|
||||||
|
|
||||||
Issues
|
|
||||||
------
|
|
||||||
|
|
||||||
When submitting an issue, or working on an issue please ensure the following criteria are met:
|
|
||||||
* The description clearly states or describes the original problem or root cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* If the issue is a bug that needs fixing in a branch other than Master, add the ‘backport potential’ tag TO THE ISSUE (not the PR).
|
|
||||||
* The provided information should be totally self-contained. External access to web services/sites should not be needed.
|
|
||||||
* If the issue is needed for a hotfix release, add the 'expedite' label.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
OpenStack memcached servers
|
|
||||||
###########################
|
|
||||||
:tags: openstack, memcached, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
Role for the deployoment and installation of Memcached
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: Install memcached
|
|
||||||
hosts: memcached
|
|
||||||
user: root
|
|
||||||
roles:
|
|
||||||
- { role: "memcached_server", tags: [ "memcached-server" ] }
|
|
||||||
vars:
|
|
||||||
memcached_listen: "10.0.0.1"
|
|
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Defines that the role will be deployed on a host machine
|
|
||||||
is_metal: true
|
|
||||||
|
|
||||||
# The default memcache memory setting is to use .25 of the available system ram
|
|
||||||
# as long as that value is < 8192. However you can set the `memcached_memory`
|
|
||||||
# value to whatever you like as an override.
|
|
||||||
base_memcached_memory: "{{ ansible_memtotal_mb | default(4096) }}"
|
|
||||||
memcached_memory: "{{ base_memcached_memory | int // 4 if base_memcached_memory | int // 4 < 8192 else 8192 }}"
|
|
||||||
|
|
||||||
memcached_port: 11211
|
|
||||||
memcached_user: memcache
|
|
||||||
memcached_listen: "127.0.0.1"
|
|
||||||
memcached_log: /var/log/memcached.log
|
|
||||||
memcached_connections: 1024
|
|
||||||
memcached_threads: 4
|
|
||||||
|
|
||||||
memcached_apt_packages:
|
|
||||||
- memcached
|
|
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Restart memcached
|
|
||||||
service:
|
|
||||||
name: "memcached"
|
|
||||||
state: "restarted"
|
|
||||||
pattern: "memcached"
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: rcbops
|
|
||||||
description: Installation and setup of memcached
|
|
||||||
company: Rackspace
|
|
||||||
license: Apache2
|
|
||||||
min_ansible_version: 1.6.6
|
|
||||||
platforms:
|
|
||||||
- name: Ubuntu
|
|
||||||
versions:
|
|
||||||
- trusty
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- memcached
|
|
||||||
- development
|
|
||||||
- openstack
|
|
||||||
dependencies:
|
|
||||||
- apt_package_pinning
|
|
@ -1,21 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- include: memcached_pre_install.yml
|
|
||||||
- include: memcached_install.yml
|
|
||||||
- include: memcached_config.yml
|
|
||||||
|
|
||||||
- name: Flush handlers
|
|
||||||
meta: flush_handlers
|
|
@ -1,38 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Apply memcached config
|
|
||||||
template:
|
|
||||||
src: "memcached.conf"
|
|
||||||
dest: "/etc/memcached.conf"
|
|
||||||
owner: "root"
|
|
||||||
group: "root"
|
|
||||||
mode: "0644"
|
|
||||||
notify: Restart memcached
|
|
||||||
tags:
|
|
||||||
- memcached-config
|
|
||||||
|
|
||||||
- name: Apply resource limits
|
|
||||||
template:
|
|
||||||
src: "memcached.j2"
|
|
||||||
dest: "/etc/default/memcached"
|
|
||||||
owner: "root"
|
|
||||||
group: "root"
|
|
||||||
mode: "0644"
|
|
||||||
when: >
|
|
||||||
memcached_connections > 1024
|
|
||||||
notify: Restart memcached
|
|
||||||
tags:
|
|
||||||
- memcached-config
|
|
@ -1,37 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Update apt sources
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
cache_valid_time: 600
|
|
||||||
register: apt_update
|
|
||||||
until: apt_update|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- memcached-apt-packages
|
|
||||||
|
|
||||||
- name: Install apt packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: present
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: memcached_apt_packages
|
|
||||||
tags:
|
|
||||||
- memcached-apt-packages
|
|
@ -1,24 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Ensure the memcache user exists
|
|
||||||
user:
|
|
||||||
name: "{{ memcached_user }}"
|
|
||||||
comment: "memcached user"
|
|
||||||
system: "yes"
|
|
||||||
shell: "/bin/false"
|
|
||||||
createhome: "no"
|
|
||||||
tags:
|
|
||||||
- memcached-user
|
|
@ -1,10 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
-d
|
|
||||||
logfile {{ memcached_log }}
|
|
||||||
-m {{ memcached_memory }}
|
|
||||||
-p {{ memcached_port }}
|
|
||||||
-u {{ memcached_user }}
|
|
||||||
-l {{ memcached_listen }}
|
|
||||||
-c {{ memcached_connections }}
|
|
||||||
-t {{ memcached_threads }}
|
|
@ -1,6 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
# Any other value will disable memcached.
|
|
||||||
ENABLE_MEMCACHED=yes
|
|
||||||
|
|
||||||
ulimit -Hn {{ memcached_connections }}
|
|
||||||
ulimit -n {{ memcached_connections }}
|
|
@ -1,103 +0,0 @@
|
|||||||
OpenStack pip lockdown
|
|
||||||
######################
|
|
||||||
:tags: openstack, pip, lockdown, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
contributor guidelines
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Filing Bugs
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Bugs should be filed on Launchpad, not GitHub:
|
|
||||||
"https://bugs.launchpad.net/openstack-ansible"
|
|
||||||
|
|
||||||
|
|
||||||
When submitting a bug, or working on a bug, please ensure the following
|
|
||||||
criteria are met:
|
|
||||||
|
|
||||||
* The description clearly states or describes the original problem or root
|
|
||||||
cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* The provided information should be totally self-contained. External access to
|
|
||||||
web services/sites should not be needed.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
||||||
|
|
||||||
|
|
||||||
Submitting Code
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Changes to the project should be submitted for review via the Gerrit tool,
|
|
||||||
following the workflow documented at:
|
|
||||||
"http://docs.openstack.org/infra/manual/developers.html#development-workflow"
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub will be ignored and closed without
|
|
||||||
regard.
|
|
||||||
|
|
||||||
|
|
||||||
Extra
|
|
||||||
-----
|
|
||||||
|
|
||||||
Tags:
|
|
||||||
If it's a bug that needs fixing in a branch in addition to Master, add a
|
|
||||||
'\<release\>-backport-potential' tag (eg ``juno-backport-potential``).
|
|
||||||
There are predefined tags that will autocomplete.
|
|
||||||
|
|
||||||
Status:
|
|
||||||
Please leave this alone, it should be New till someone triages the issue.
|
|
||||||
|
|
||||||
Importance:
|
|
||||||
Should only be touched if it is a Blocker/Gating issue. If it is, please
|
|
||||||
set to High, and only use Critical if you have found a bug that can take
|
|
||||||
down whole infrastructures.
|
|
||||||
|
|
||||||
|
|
||||||
Style guide
|
|
||||||
-----------
|
|
||||||
|
|
||||||
When creating tasks and other roles for use in Ansible please create then using
|
|
||||||
the YAML dictionary format.
|
|
||||||
|
|
||||||
Example YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name:
|
|
||||||
thing1: "some-stuff"
|
|
||||||
thing2: "some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Example **NOT** in YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name: thing1="some-stuff" thing2="some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Usage of the ">" and "|" operators should be limited to Ansible conditionals
|
|
||||||
and command modules such as the ansible ``shell`` module.
|
|
||||||
|
|
||||||
|
|
||||||
Issues
|
|
||||||
------
|
|
||||||
|
|
||||||
When submitting an issue, or working on an issue please ensure the following
|
|
||||||
criteria are met:
|
|
||||||
|
|
||||||
* The description clearly states or describes the original problem or root
|
|
||||||
cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* If the issue is a bug that needs fixing in a branch other than Master, add
|
|
||||||
the ‘backport potential’ tag TO THE ISSUE (not the PR).
|
|
||||||
* The provided information should be totally self-contained. External access to
|
|
||||||
web services/sites should not be needed.
|
|
||||||
* If the issue is needed for a hotfix release, add the 'expedite' label.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
OpenStack pip lockdown
|
|
||||||
######################
|
|
||||||
:tags: openstack, pip, lockdown, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
Role to lock pip down to a particular links repo. This will create a
|
|
||||||
``.pip.conf`` which will ensure that the only python packages installed when
|
|
||||||
using pip are from a known repository of packages.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: Basic lxc host setup
|
|
||||||
hosts: host_group
|
|
||||||
user: root
|
|
||||||
roles:
|
|
||||||
- { role: "pip_lock_down", tags: [ "pip-lock-down" ] }
|
|
||||||
vars:
|
|
||||||
pip_links:
|
|
||||||
name: openstack-release
|
|
||||||
link: https://openstack-hostname.something/python_packages/master
|
|
||||||
|
|
||||||
|
|
||||||
This was intended for use with a repository built from the repo role.
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Options for pip global
|
|
||||||
pip_no_index: true
|
|
||||||
pip_enable_pre_releases: true
|
|
||||||
pip_timeout: 120
|
|
||||||
|
|
||||||
|
|
||||||
# Options for pip install
|
|
||||||
pip_upgrade: true
|
|
||||||
pip_allow_all_external: true
|
|
||||||
|
|
||||||
|
|
||||||
# Drop link files to lock down pip
|
|
||||||
pip_links:
|
|
||||||
- { name: "openstack_release", link: "{{ openstack_repo_url }}/os-releases/{{ openstack_release }}/" }
|
|
||||||
|
|
||||||
## Tunable overrides
|
|
||||||
pip_global_conf_overrides: {}
|
|
@ -1,185 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# (c) 2014, Kevin Carter <kevin.carter@rackspace.com>
|
|
||||||
|
|
||||||
"""
|
|
||||||
This script will build a pip.conf file dynamically based on a simple
|
|
||||||
configuration layout. The purpose of this script is to allow automation to
|
|
||||||
deploy parts of the main `pip.conf` file incrementally creating links and
|
|
||||||
sections as needed.
|
|
||||||
|
|
||||||
Structure:
|
|
||||||
$HOME/.pip/
|
|
||||||
$HOME/.pip/base
|
|
||||||
$HOME/.pip/links.d
|
|
||||||
|
|
||||||
creates:
|
|
||||||
$HOME/.pip/pip.conf
|
|
||||||
|
|
||||||
|
|
||||||
* The script reads all configuration files from the base directory and then
|
|
||||||
applies the sections to the main config file at "$HOME/.pip/pip.conf"
|
|
||||||
* Within the [install] section will be generated with the value `find-links`
|
|
||||||
built from the link files found in "$HOME/.pip/links.d".
|
|
||||||
"""
|
|
||||||
|
|
||||||
import ConfigParser
|
|
||||||
import os
|
|
||||||
import urlparse
|
|
||||||
|
|
||||||
|
|
||||||
def config_files(config_dir_path, extension='.link'):
|
|
||||||
"""Discover all link files.
|
|
||||||
|
|
||||||
:param config_dir_path: ``str`` Path to link directory
|
|
||||||
:param extension: ``str`` Extension for files
|
|
||||||
:return: ``list``
|
|
||||||
"""
|
|
||||||
link_files = list()
|
|
||||||
for root_path, _, pip_files in os.walk(config_dir_path):
|
|
||||||
for f in pip_files:
|
|
||||||
if f.endswith(extension):
|
|
||||||
link_files.append(os.path.join(root_path, f))
|
|
||||||
else:
|
|
||||||
return link_files
|
|
||||||
|
|
||||||
|
|
||||||
def pip_links(links_files):
|
|
||||||
"""Read all link files.
|
|
||||||
|
|
||||||
:param links_files: ``list`` List of files to read containing links
|
|
||||||
:return: `list``
|
|
||||||
"""
|
|
||||||
links = list()
|
|
||||||
for link in links_files:
|
|
||||||
with open(link, 'rb') as f:
|
|
||||||
links.extend(f.readlines())
|
|
||||||
else:
|
|
||||||
return links
|
|
||||||
|
|
||||||
|
|
||||||
def load_config(config_file):
|
|
||||||
"""Load config from a file.
|
|
||||||
|
|
||||||
:param config_file: ``str`` path to config file
|
|
||||||
:return: ``object``
|
|
||||||
"""
|
|
||||||
config = ConfigParser.ConfigParser()
|
|
||||||
if config_file is None:
|
|
||||||
return config
|
|
||||||
|
|
||||||
try:
|
|
||||||
with open(config_file) as f:
|
|
||||||
config.readfp(f)
|
|
||||||
except IOError:
|
|
||||||
return config
|
|
||||||
else:
|
|
||||||
return config
|
|
||||||
|
|
||||||
|
|
||||||
def set_links(links):
|
|
||||||
"""Set all links and ensure there are no blank lines.
|
|
||||||
|
|
||||||
:param links: ``list`` List of all raw links
|
|
||||||
:return: ``str``
|
|
||||||
"""
|
|
||||||
pip_find_links = list()
|
|
||||||
for link in links:
|
|
||||||
if link != '\n' or not link:
|
|
||||||
pip_find_links.append(link.rstrip('\n'))
|
|
||||||
|
|
||||||
links = [i for i in list(set(pip_find_links))]
|
|
||||||
return '\n%s' % '\n'.join(links)
|
|
||||||
|
|
||||||
|
|
||||||
def build_main_config(add_conf, main_config):
|
|
||||||
"""Build configuration from all found conf files.
|
|
||||||
|
|
||||||
:param add_conf: ``object`` ConfigParser object
|
|
||||||
:param main_config: ``object`` ConfigParser object
|
|
||||||
"""
|
|
||||||
for section in add_conf.sections():
|
|
||||||
try:
|
|
||||||
main_config.add_section(section)
|
|
||||||
except ConfigParser.DuplicateSectionError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
for k, v in add_conf.items(section):
|
|
||||||
main_config.set(section, k, v)
|
|
||||||
|
|
||||||
|
|
||||||
def build_install_section(main_dir_path, main_config):
|
|
||||||
"""Build the install section with links.
|
|
||||||
|
|
||||||
:param main_dir_path: ``str`` Directory path
|
|
||||||
:param main_config: ``object`` ConfigParser object
|
|
||||||
"""
|
|
||||||
links = list()
|
|
||||||
trusted_host = list()
|
|
||||||
links_dir = os.path.join(main_dir_path, 'links.d')
|
|
||||||
if os.path.isdir(links_dir):
|
|
||||||
_link = config_files(config_dir_path=links_dir, extension='.link')
|
|
||||||
_links = pip_links(_link)
|
|
||||||
links.extend(_links)
|
|
||||||
for _link in _links:
|
|
||||||
# Make sure that just the hostname/ip is used.
|
|
||||||
trusted_host.append(urlparse.urlparse(_link).netloc.split(':')[0])
|
|
||||||
else:
|
|
||||||
main_config.set('global', 'trusted-host', set_links(trusted_host))
|
|
||||||
|
|
||||||
# Add install section if not already found
|
|
||||||
try:
|
|
||||||
main_config.add_section('install')
|
|
||||||
except ConfigParser.DuplicateSectionError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Get all items from the install section
|
|
||||||
try:
|
|
||||||
install_items = main_config.items('install')
|
|
||||||
except ConfigParser.NoSectionError:
|
|
||||||
install_items = None
|
|
||||||
|
|
||||||
link_strings = set_links(links)
|
|
||||||
if install_items:
|
|
||||||
for item in install_items:
|
|
||||||
if item[0] != 'find-links':
|
|
||||||
main_config.set('install', *item)
|
|
||||||
|
|
||||||
main_config.set('install', 'find-links', link_strings)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
"""Run the main application."""
|
|
||||||
main_file_path = os.path.expanduser('~/.pip/pip.conf')
|
|
||||||
main_config = load_config(config_file=None)
|
|
||||||
|
|
||||||
main_dir_path = os.path.dirname(main_file_path)
|
|
||||||
base_dir_path = os.path.join(main_dir_path, 'base')
|
|
||||||
if os.path.isdir(base_dir_path):
|
|
||||||
_confs = config_files(base_dir_path, extension='.conf')
|
|
||||||
for _conf in _confs:
|
|
||||||
_config = load_config(config_file=_conf)
|
|
||||||
build_main_config(_config, main_config)
|
|
||||||
|
|
||||||
build_install_section(main_dir_path, main_config)
|
|
||||||
|
|
||||||
# Write out the config file
|
|
||||||
with open(main_file_path, 'wb') as f:
|
|
||||||
main_config.write(f)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: rcbops
|
|
||||||
description: Lock pip down
|
|
||||||
company: Rackspace
|
|
||||||
license: Apache2
|
|
||||||
min_ansible_version: 1.6.6
|
|
||||||
platforms:
|
|
||||||
- name: Ubuntu
|
|
||||||
versions:
|
|
||||||
- trusty
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- python
|
|
||||||
- development
|
|
||||||
- openstack
|
|
||||||
dependencies:
|
|
||||||
- pip_install
|
|
@ -1,75 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Create pip config directory
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: "directory"
|
|
||||||
group: "{{ ansible_user_id }}"
|
|
||||||
owner: "{{ ansible_user_id }}"
|
|
||||||
with_items:
|
|
||||||
- "{{ ansible_env.HOME }}/.pip"
|
|
||||||
- "{{ ansible_env.HOME }}/.pip/base"
|
|
||||||
- "{{ ansible_env.HOME }}/.pip/links.d"
|
|
||||||
- "{{ ansible_env.HOME }}/.cache"
|
|
||||||
- "{{ ansible_env.HOME }}/.cache/pip"
|
|
||||||
tags:
|
|
||||||
- lock-directories-pip
|
|
||||||
|
|
||||||
- name: Drop pip lockdown file(s)
|
|
||||||
copy:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
owner: "{{ ansible_user_id }}"
|
|
||||||
group: "{{ ansible_user_id }}"
|
|
||||||
mode: "{{ item.mode|default('0644') }}"
|
|
||||||
with_items:
|
|
||||||
- { src: "pip-link-build.py", dest: "{{ ansible_env.HOME }}/.pip/pip-link-build.py", mode: "0755" }
|
|
||||||
tags:
|
|
||||||
- lock-pip-files
|
|
||||||
|
|
||||||
- name: Drop pip global config(s)
|
|
||||||
config_template:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
owner: "{{ ansible_user_id }}"
|
|
||||||
group: "{{ ansible_user_id }}"
|
|
||||||
mode: "0644"
|
|
||||||
config_overrides: "{{ item.config_overrides }}"
|
|
||||||
config_type: "{{ item.config_type }}"
|
|
||||||
with_items:
|
|
||||||
- src: "global.conf.j2"
|
|
||||||
dest: "{{ ansible_env.HOME }}/.pip/base/global.conf"
|
|
||||||
config_overrides: "{{ pip_global_conf_overrides }}"
|
|
||||||
config_type: "ini"
|
|
||||||
tags:
|
|
||||||
- lock-pip-files
|
|
||||||
|
|
||||||
- name: Drop pip link file(s)
|
|
||||||
template:
|
|
||||||
src: "link_file.j2"
|
|
||||||
dest: "{{ ansible_env.HOME }}/.pip/links.d/{{ item.name }}.link"
|
|
||||||
owner: "{{ ansible_user_id }}"
|
|
||||||
group: "{{ ansible_user_id }}"
|
|
||||||
mode: "{{ item.mode|default('0644') }}"
|
|
||||||
with_items: pip_links
|
|
||||||
tags:
|
|
||||||
- lock-pip-files
|
|
||||||
|
|
||||||
- name: Execute pip config builder
|
|
||||||
command: "{{ ansible_env.HOME }}/.pip/pip-link-build.py"
|
|
||||||
changed_when: false
|
|
||||||
tags:
|
|
||||||
- lock-down-pip-conf
|
|
@ -1,10 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
[global]
|
|
||||||
no-index = {{ pip_no_index }}
|
|
||||||
pre = {{ pip_enable_pre_releases }}
|
|
||||||
timeout = {{ pip_timeout }}
|
|
||||||
|
|
||||||
[install]
|
|
||||||
upgrade = {{ pip_upgrade }}
|
|
||||||
allow_all_external = {{ pip_allow_all_external }}
|
|
@ -1 +0,0 @@
|
|||||||
{{ item.link }}
|
|
@ -1,103 +0,0 @@
|
|||||||
OpenStack rabbitmq server
|
|
||||||
#########################
|
|
||||||
:tags: openstack, rabbitmq, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
contributor guidelines
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Filing Bugs
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Bugs should be filed on Launchpad, not GitHub:
|
|
||||||
"https://bugs.launchpad.net/openstack-ansible"
|
|
||||||
|
|
||||||
|
|
||||||
When submitting a bug, or working on a bug, please ensure the following
|
|
||||||
criteria are met:
|
|
||||||
|
|
||||||
* The description clearly states or describes the original problem or root
|
|
||||||
cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* The provided information should be totally self-contained. External access to
|
|
||||||
web services/sites should not be needed.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
||||||
|
|
||||||
|
|
||||||
Submitting Code
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Changes to the project should be submitted for review via the Gerrit tool,
|
|
||||||
following the workflow documented at:
|
|
||||||
"http://docs.openstack.org/infra/manual/developers.html#development-workflow"
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub will be ignored and closed without
|
|
||||||
regard.
|
|
||||||
|
|
||||||
|
|
||||||
Extra
|
|
||||||
-----
|
|
||||||
|
|
||||||
Tags:
|
|
||||||
If it's a bug that needs fixing in a branch in addition to Master, add a
|
|
||||||
'\<release\>-backport-potential' tag (eg ``juno-backport-potential``).
|
|
||||||
There are predefined tags that will autocomplete.
|
|
||||||
|
|
||||||
Status:
|
|
||||||
Please leave this alone, it should be New till someone triages the issue.
|
|
||||||
|
|
||||||
Importance:
|
|
||||||
Should only be touched if it is a Blocker/Gating issue. If it is, please
|
|
||||||
set to High, and only use Critical if you have found a bug that can take
|
|
||||||
down whole infrastructures.
|
|
||||||
|
|
||||||
|
|
||||||
Style guide
|
|
||||||
-----------
|
|
||||||
|
|
||||||
When creating tasks and other roles for use in Ansible please create then using
|
|
||||||
the YAML dictionary format.
|
|
||||||
|
|
||||||
Example YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name:
|
|
||||||
thing1: "some-stuff"
|
|
||||||
thing2: "some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Example **NOT** in YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name: thing1="some-stuff" thing2="some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Usage of the ">" and "|" operators should be limited to Ansible conditionals
|
|
||||||
and command modules such as the ansible ``shell`` module.
|
|
||||||
|
|
||||||
|
|
||||||
Issues
|
|
||||||
------
|
|
||||||
|
|
||||||
When submitting an issue, or working on an issue please ensure the following
|
|
||||||
criteria are met:
|
|
||||||
|
|
||||||
* The description clearly states or describes the original problem or root
|
|
||||||
cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* If the issue is a bug that needs fixing in a branch other than Master, add
|
|
||||||
the ‘backport potential’ tag TO THE ISSUE (not the PR).
|
|
||||||
* The provided information should be totally self-contained. External access to
|
|
||||||
web services/sites should not be needed.
|
|
||||||
* If the issue is needed for a hotfix release, add the 'expedite' label.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
|||||||
OpenStack rabbitmq server
|
|
||||||
#########################
|
|
||||||
:tags: openstack, rabbitmq, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
Role to deploy rabbitmq and cluster it when there are more than one nodes.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: Install rabbitmq server
|
|
||||||
hosts: rabbitmq_all
|
|
||||||
max_fail_percentage: 20
|
|
||||||
user: root
|
|
||||||
roles:
|
|
||||||
- { role: "rabbitmq_server", tags: [ "rabbitmq-server" ] }
|
|
||||||
vars:
|
|
||||||
rabbitmq_cookie_token: secrete
|
|
||||||
container_address: "{{ ansible_ssh_host }}"
|
|
@ -1,70 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Defines that the role will be deployed on a host machine
|
|
||||||
is_metal: true
|
|
||||||
|
|
||||||
rabbitmq_primary_cluster_node: "{{ groups['rabbitmq_all'][0] }}"
|
|
||||||
|
|
||||||
# Upgrading the RabbitMQ package requires shutting down the cluster. This variable makes upgrading
|
|
||||||
# the version an explicit action.
|
|
||||||
rabbitmq_upgrade: false
|
|
||||||
|
|
||||||
# If the user does not want to upgrade but needs to rerun the playbooks for any reason the
|
|
||||||
# upgrade/version state can be ignored by setting `rabbitmq_ignore_version_state=true`
|
|
||||||
rabbitmq_ignore_version_state: false
|
|
||||||
|
|
||||||
rabbitmq_package_url: "https://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server_3.5.6-1_all.deb"
|
|
||||||
rabbitmq_package_version: "{{ rabbitmq_package_url.split('/')[-1].split('_')[1] }}"
|
|
||||||
rabbitmq_package_sha256: "e3c377e585c123e06c88422248915f32216641d6f7dfab50d124535c8e93010d"
|
|
||||||
rabbitmq_package_path: "/opt/rabbitmq-server.deb"
|
|
||||||
|
|
||||||
rabbitmq_apt_packages:
|
|
||||||
- erlang-nox
|
|
||||||
|
|
||||||
rabbitmq_pip_packages:
|
|
||||||
- python-memcached
|
|
||||||
- pycrypto
|
|
||||||
|
|
||||||
# Name of the rabbitmq cluster
|
|
||||||
rabbitmq_cluster_name: rabbitmq_cluster1
|
|
||||||
|
|
||||||
# Specify a partition recovery strategy (autoheal | pause_minority | ignore)
|
|
||||||
rabbitmq_cluster_partition_handling: pause_minority
|
|
||||||
|
|
||||||
# Rabbitmq open file limits
|
|
||||||
rabbitmq_ulimit: 4096
|
|
||||||
|
|
||||||
# Enable the management plugin in rabbitmq
|
|
||||||
rabbitmq_plugins:
|
|
||||||
- names: rabbitmq_management
|
|
||||||
state: enabled
|
|
||||||
|
|
||||||
# RabbitMQ SSL support
|
|
||||||
rabbitmq_ssl_cert: /etc/rabbitmq/rabbitmq.pem
|
|
||||||
rabbitmq_ssl_key: /etc/rabbitmq/rabbitmq.key
|
|
||||||
rabbitmq_ssl_ca_cert: /etc/rabbitmq/rabbitmq-ca.pem
|
|
||||||
|
|
||||||
# Set rabbitmq_ssl_self_signed_regen to true if you want to generate a new
|
|
||||||
# SSL certificate for RabbitMQ when this playbook runs. You can also change
|
|
||||||
# the subject of the self-signed certificate here if you prefer.
|
|
||||||
rabbitmq_ssl_self_signed_regen: false
|
|
||||||
rabbitmq_ssl_self_signed_subject: "/C=US/ST=Texas/L=San Antonio/O=IT/CN={{ container_name }}"
|
|
||||||
|
|
||||||
# Define user-provided SSL certificates in:
|
|
||||||
# /etc/openstack_deploy/user_variables.yml
|
|
||||||
#rabbitmq_user_ssl_cert: <path to cert on ansible deployment host>
|
|
||||||
#rabbitmq_user_ssl_key: <path to cert on ansible deployment host>
|
|
||||||
#rabbitmq_user_ssl_ca_cert: <path to cert on ansible deployment host>
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
echo "All runlevel operations denied by policy" >&2
|
|
||||||
exit 101
|
|
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: rcbops
|
|
||||||
description: Install rabbitmq server
|
|
||||||
company: Rackspace
|
|
||||||
license: Apache2
|
|
||||||
min_ansible_version: 1.6.6
|
|
||||||
platforms:
|
|
||||||
- name: Ubuntu
|
|
||||||
versions:
|
|
||||||
- trusty
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- rabbitmq
|
|
||||||
- development
|
|
||||||
- openstack
|
|
||||||
dependencies:
|
|
||||||
- apt_package_pinning
|
|
||||||
- pip_lock_down
|
|
@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
|
|
||||||
- include: rabbitmq_pre_install.yml
|
|
||||||
|
|
||||||
# The install process will be skipped if `rabbitmq_ignore_version_state=true`
|
|
||||||
- include: rabbitmq_install.yml
|
|
||||||
when: not rabbitmq_ignore_version_state | bool
|
|
||||||
|
|
||||||
# RabbitMQ SSL/TLS listener configuration
|
|
||||||
#
|
|
||||||
# If the user has not specified a certificate, key and CA certificate, we will
|
|
||||||
# generate a self-signed SSL certificate and distribute it to each RabbitMQ
|
|
||||||
# container.
|
|
||||||
#
|
|
||||||
# User-provided certificates must be specified within:
|
|
||||||
#
|
|
||||||
# playbooks/roles/rabbitmq_server/defaults/main.yml
|
|
||||||
#
|
|
||||||
- include: rabbitmq_ssl_self_signed.yml
|
|
||||||
when: >
|
|
||||||
rabbitmq_user_ssl_cert is not defined or
|
|
||||||
rabbitmq_user_ssl_key is not defined
|
|
||||||
- include: rabbitmq_ssl_user_provided.yml
|
|
||||||
|
|
||||||
- include: rabbitmq_set_cookie.yml
|
|
||||||
- include: rabbitmq_post_install.yml
|
|
||||||
- include: rabbitmq_cluster.yml
|
|
||||||
|
|
||||||
- name: Flush handlers
|
|
||||||
meta: flush_handlers
|
|
@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- include: rabbitmq_cluster_create.yml
|
|
||||||
when: >
|
|
||||||
inventory_hostname == rabbitmq_primary_cluster_node
|
|
||||||
|
|
||||||
- include: rabbitmq_cluster_join.yml
|
|
||||||
when: >
|
|
||||||
inventory_hostname != rabbitmq_primary_cluster_node
|
|
@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Get rabbitmq cluster name
|
|
||||||
shell: |
|
|
||||||
rabbitmqctl cluster_status | grep -w '<<"{{ rabbitmq_cluster_name }}">>'
|
|
||||||
register: rabbitmq_cluster_status
|
|
||||||
failed_when: false
|
|
||||||
changed_when: rabbitmq_cluster_status.rc != 0
|
|
||||||
tags:
|
|
||||||
- rabbitmq-cluster
|
|
||||||
|
|
||||||
- name: Create rabbitmq cluster
|
|
||||||
shell: |
|
|
||||||
rabbitmqctl set_cluster_name {{ rabbitmq_cluster_name }}
|
|
||||||
when: rabbitmq_cluster_status.rc != 0
|
|
||||||
tags:
|
|
||||||
- rabbitmq-cluster
|
|
@ -1,54 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# If cluster name is our own hostname, we assume we're not properly clustered
|
|
||||||
# TODO(someone): implement a more robust way of checking
|
|
||||||
# if node is clustered or not
|
|
||||||
- name: Check cluster status
|
|
||||||
shell: |
|
|
||||||
rabbitmqctl -q cluster_status | grep '{cluster_name,<<"{{ rabbitmq_cluster_name }}">>}'
|
|
||||||
changed_when: result.rc != 0
|
|
||||||
failed_when: false
|
|
||||||
register: result
|
|
||||||
tags:
|
|
||||||
- rabbitmq-cluster
|
|
||||||
|
|
||||||
- name: Stop rabbitmq app
|
|
||||||
shell: |
|
|
||||||
rabbitmqctl stop_app; sleep 5
|
|
||||||
failed_when: false
|
|
||||||
when: result.rc != 0
|
|
||||||
tags:
|
|
||||||
- rabbitmq-stop-app
|
|
||||||
- rabbitmq-cluster
|
|
||||||
|
|
||||||
- name: Join rabbitmq cluster
|
|
||||||
shell: |
|
|
||||||
rabbitmqctl join_cluster "rabbit@{{ rabbitmq_primary_cluster_node.split('.')[0] }}"
|
|
||||||
when: result.rc != 0
|
|
||||||
register: rabbit_join_cluster
|
|
||||||
until: rabbit_join_cluster|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- rabbitmq-cluster
|
|
||||||
|
|
||||||
- name: Start rabbitmq app
|
|
||||||
shell: |
|
|
||||||
rabbitmqctl start_app
|
|
||||||
when: result.rc != 0
|
|
||||||
tags:
|
|
||||||
- rabbitmq-start-app
|
|
||||||
- rabbitmq-cluster
|
|
@ -1,69 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- include: rabbitmq_upgrade_check.yml
|
|
||||||
|
|
||||||
- name: Update apt sources
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
cache_valid_time: 600
|
|
||||||
register: apt_update
|
|
||||||
until: apt_update|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- rabbitmq-apt-packages
|
|
||||||
|
|
||||||
- name: Install apt packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: latest
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: rabbitmq_apt_packages
|
|
||||||
tags:
|
|
||||||
- rabbitmq-apt-packages
|
|
||||||
|
|
||||||
- name: Install the RabbitMQ package
|
|
||||||
apt:
|
|
||||||
deb: "{{ rabbitmq_package_path }}"
|
|
||||||
tags:
|
|
||||||
- rabbitmq-package-deb
|
|
||||||
- rabbitmq-apt-packages
|
|
||||||
|
|
||||||
- name: Install pip packages
|
|
||||||
pip:
|
|
||||||
name: "{{ item }}"
|
|
||||||
state: present
|
|
||||||
extra_args: "{{ pip_install_options|default('') }}"
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
with_items: rabbitmq_pip_packages
|
|
||||||
tags:
|
|
||||||
- rabbitmq-pip-packages
|
|
||||||
|
|
||||||
- name: Ensure there are no policy-rc files
|
|
||||||
file:
|
|
||||||
path: "/usr/sbin/policy-rc.d"
|
|
||||||
state: absent
|
|
||||||
tags:
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
- rabbitmq-policy-file
|
|
||||||
|
|
||||||
- include: rabbitmq_started.yml
|
|
@ -1,68 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Enable management plugin
|
|
||||||
rabbitmq_plugin:
|
|
||||||
names: rabbitmq_management
|
|
||||||
state: enabled
|
|
||||||
with_items: rabbitmq_plugins
|
|
||||||
register: rabbitmq_plugin
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
||||||
|
|
||||||
- name: Enable queue mirroring
|
|
||||||
rabbitmq_policy:
|
|
||||||
name: "HA"
|
|
||||||
pattern: '^(?!amq\.).*'
|
|
||||||
tags: "ha-mode=all"
|
|
||||||
register: rabbitmq_queue_mirror
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
||||||
- rabbitmq-cluster
|
|
||||||
|
|
||||||
- name: Create rabbitmq config
|
|
||||||
register: rabbit_config_changed
|
|
||||||
template:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
with_items:
|
|
||||||
- { src: "rabbitmq.config.j2", dest: "/etc/rabbitmq/rabbitmq.config" }
|
|
||||||
- { src: "rabbitmq-server.j2", dest: "/etc/default/rabbitmq-server" }
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
||||||
|
|
||||||
- include: rabbitmq_restart.yml
|
|
||||||
when: rabbit_config_changed|changed or rabbitmq_plugin|changed or rabbitmq_queue_mirror|changed
|
|
||||||
|
|
||||||
# This is being done because the rabbitctl command used by the module
|
|
||||||
# is not very effective at returning proper status codes for failure
|
|
||||||
# and the module does not error detection. until we can go upstream
|
|
||||||
# to fix this issue this task being being done in two parts to ensure
|
|
||||||
# that the "guest" user is eradicated.
|
|
||||||
- name: Ensure default rabbitmq guest user is removed
|
|
||||||
rabbitmq_user:
|
|
||||||
user: guest
|
|
||||||
state: absent
|
|
||||||
when: inventory_hostname == groups['rabbitmq_all'][0]
|
|
||||||
tags:
|
|
||||||
- rabbitmq-user
|
|
||||||
|
|
||||||
- name: Ensure default rabbitmq guest user is removed
|
|
||||||
rabbitmq_user:
|
|
||||||
user: guest
|
|
||||||
state: absent
|
|
||||||
when: inventory_hostname != groups['rabbitmq_all'][0]
|
|
||||||
tags:
|
|
||||||
- rabbitmq-user
|
|
@ -1,59 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Remove package rabbit if found for upgrade
|
|
||||||
file:
|
|
||||||
path: "{{ rabbitmq_package_path }}"
|
|
||||||
state: absent
|
|
||||||
tags:
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
- rabbitmq-package-deb
|
|
||||||
- rabbitmq-package-deb-get
|
|
||||||
|
|
||||||
- name: Download the RabbitMQ package
|
|
||||||
get_url:
|
|
||||||
url: "{{ rabbitmq_package_url }}"
|
|
||||||
dest: "{{ rabbitmq_package_path }}"
|
|
||||||
mode: "0644"
|
|
||||||
sha256sum: "{{ rabbitmq_package_sha256 }}"
|
|
||||||
register: package_download
|
|
||||||
retries: 3
|
|
||||||
delay: 10
|
|
||||||
until: package_download|success
|
|
||||||
tags:
|
|
||||||
- rabbitmq-package-deb
|
|
||||||
- rabbitmq-package-deb-get
|
|
||||||
|
|
||||||
- name: Fix /etc/hosts
|
|
||||||
lineinfile:
|
|
||||||
dest: /etc/hosts
|
|
||||||
state: present
|
|
||||||
line: "{{ hostvars[item]['ansible_ssh_host'] }} {{ hostvars[item]['ansible_hostname'] }} {{ hostvars[item]['ansible_hostname'].split('.')[0] }}"
|
|
||||||
with_items: groups['rabbitmq_all']
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
||||||
|
|
||||||
- name: Create the local directories
|
|
||||||
file:
|
|
||||||
path: "{{ item.path }}"
|
|
||||||
state: "directory"
|
|
||||||
group: "{{ item.owner|default('root') }}"
|
|
||||||
owner: "{{ item.group|default('root') }}"
|
|
||||||
mode: "{{ item.mode|default('0755') }}"
|
|
||||||
recurse: "{{ item.recurse|default('false') }}"
|
|
||||||
with_items:
|
|
||||||
- { path: "/etc/rabbitmq/" }
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- include: rabbitmq_stopped.yml
|
|
||||||
- include: rabbitmq_started.yml
|
|
@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Read rabbit cookie
|
|
||||||
shell: "cat /var/lib/rabbitmq/.erlang.cookie"
|
|
||||||
register: tmp_rabbit_cookie
|
|
||||||
changed_when: tmp_rabbit_cookie.rc != 0
|
|
||||||
failed_when: false
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
||||||
|
|
||||||
- include: rabbitmq_stopped.yml
|
|
||||||
when: tmp_rabbit_cookie.stdout != rabbitmq_cookie_token
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
||||||
|
|
||||||
- name: Set rabbit cookie
|
|
||||||
copy:
|
|
||||||
content: "{{ rabbitmq_cookie_token }}"
|
|
||||||
dest: /var/lib/rabbitmq/.erlang.cookie
|
|
||||||
mode: "0400"
|
|
||||||
owner: rabbitmq
|
|
||||||
group: rabbitmq
|
|
||||||
when: tmp_rabbit_cookie.stdout != rabbitmq_cookie_token
|
|
||||||
register: cookie_set
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
||||||
|
|
||||||
- include: rabbitmq_started.yml
|
|
||||||
when: tmp_rabbit_cookie.stdout != rabbitmq_cookie_token
|
|
||||||
tags:
|
|
||||||
- rabbitmq-config
|
|
@ -1,48 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Remove self signed cert for regen
|
|
||||||
file:
|
|
||||||
dest: "{{ rabbitmq_ssl_cert }}"
|
|
||||||
state: "absent"
|
|
||||||
when: rabbitmq_ssl_self_signed_regen | bool
|
|
||||||
tags:
|
|
||||||
- rabbitmq-ssl
|
|
||||||
|
|
||||||
# See playbooks/roles/rabbitmq_server/defaults/main.yml to provide custom
|
|
||||||
# subject material for certificates or specify a user-provided certificate and
|
|
||||||
# key pair.
|
|
||||||
- name: Create self-signed ssl cert
|
|
||||||
command: >
|
|
||||||
openssl req -new -nodes -sha256 -x509 -subj
|
|
||||||
"{{ rabbitmq_ssl_self_signed_subject }}"
|
|
||||||
-days 3650
|
|
||||||
-keyout {{ rabbitmq_ssl_key }}
|
|
||||||
-out {{ rabbitmq_ssl_cert }}
|
|
||||||
-extensions v3_ca
|
|
||||||
creates={{ rabbitmq_ssl_cert }}
|
|
||||||
tags:
|
|
||||||
- rabbitmq-ssl
|
|
||||||
|
|
||||||
- name: Ensure rabbitmq user owns the self-signed key and certificate
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
owner: rabbitmq
|
|
||||||
group: rabbitmq
|
|
||||||
with_items:
|
|
||||||
- "{{ rabbitmq_ssl_key }}"
|
|
||||||
- "{{ rabbitmq_ssl_cert }}"
|
|
||||||
tags:
|
|
||||||
- rabbitmq-ssl
|
|
@ -1,56 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Distribute self signed ssl
|
|
||||||
memcached:
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
file_path: "{{ item.src }}"
|
|
||||||
state: "retrieve"
|
|
||||||
file_mode: "{{ item.file_mode }}"
|
|
||||||
server: "{{ memcached_servers }}"
|
|
||||||
encrypt_string: "{{ memcached_encryption_key }}"
|
|
||||||
with_items:
|
|
||||||
- { src: "{{ rabbitmq_ssl_cert }}", name: "rabbitmq_ssl_cert", file_mode: "0640" }
|
|
||||||
- { src: "{{ rabbitmq_ssl_key }}", name: "rabbitmq_ssl_key", file_mode: "0640" }
|
|
||||||
register: memcache_keys
|
|
||||||
until: memcache_keys|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- rabbitmq-ssl
|
|
||||||
|
|
||||||
- name: Ensure rabbitmq user owns the self-signed key and certificate
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
owner: rabbitmq
|
|
||||||
group: rabbitmq
|
|
||||||
with_items:
|
|
||||||
- "{{ rabbitmq_ssl_key }}"
|
|
||||||
- "{{ rabbitmq_ssl_cert }}"
|
|
||||||
tags:
|
|
||||||
- rabbitmq-ssl
|
|
||||||
|
|
||||||
# This is here because there was a different way of configuring SSL/TLS
|
|
||||||
# for RabbitMQ that used a mode of 0750 for the RabbitMQ directory. That has
|
|
||||||
# since been updated but we need to ensure that old environments get this
|
|
||||||
# critical update during upgrades.
|
|
||||||
#
|
|
||||||
# See bug 1513668 in Launchpad for more details.
|
|
||||||
- name: Ensure /etc/rabbitmq is set to the default mode of 0755
|
|
||||||
file:
|
|
||||||
path: /etc/rabbitmq
|
|
||||||
mode: 0755
|
|
||||||
tags:
|
|
||||||
- rabbitmq-ssl
|
|
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Store self signed ssl
|
|
||||||
memcached:
|
|
||||||
name: "{{ item.name }}"
|
|
||||||
file_path: "{{ item.src }}"
|
|
||||||
state: "present"
|
|
||||||
server: "{{ memcached_servers }}"
|
|
||||||
encrypt_string: "{{ memcached_encryption_key }}"
|
|
||||||
with_items:
|
|
||||||
- { src: "{{ rabbitmq_ssl_cert }}", name: "rabbitmq_ssl_cert" }
|
|
||||||
- { src: "{{ rabbitmq_ssl_key }}", name: "rabbitmq_ssl_key" }
|
|
||||||
register: memcache_keys
|
|
||||||
until: memcache_keys|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- rabbitmq-ssl
|
|
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# We create the self-signed SSL certificate and key only on the first
|
|
||||||
# RabbitMQ container.
|
|
||||||
- include: rabbitmq_ssl_key_create.yml
|
|
||||||
when: >
|
|
||||||
inventory_hostname == groups['rabbitmq_all'][0]
|
|
||||||
|
|
||||||
# The certificate and key are stored in memcached for easy distribution.
|
|
||||||
- include: rabbitmq_ssl_key_store.yml
|
|
||||||
when: >
|
|
||||||
inventory_hostname == groups['rabbitmq_all'][0]
|
|
||||||
|
|
||||||
# The additional RabbitMQ nodes will retrieve their SSL certificates and keys
|
|
||||||
# from memcached.
|
|
||||||
- include: rabbitmq_ssl_key_distribute.yml
|
|
||||||
when: >
|
|
||||||
inventory_hostname != groups['rabbitmq_all'][0]
|
|
@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# If we have a user-provided SSL certificate from
|
|
||||||
# /etc/openstack_deploy/user_variables.yml, we should deploy that certificate
|
|
||||||
# and key to each RabbitMQ container.
|
|
||||||
- name: Deploy user provided ssl cert and key
|
|
||||||
copy:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
owner: "rabbitmq"
|
|
||||||
group: "rabbitmq"
|
|
||||||
mode: "{{ item.mode }}"
|
|
||||||
with_items:
|
|
||||||
- { src: "{{ rabbitmq_user_ssl_cert }}", dest: "{{ rabbitmq_ssl_cert }}", mode: "0644" }
|
|
||||||
- { src: "{{ rabbitmq_user_ssl_key }}", dest: "{{ rabbitmq_ssl_key }}", mode: "0600" }
|
|
||||||
when: rabbitmq_user_ssl_cert is defined and rabbitmq_user_ssl_key is defined
|
|
||||||
tags:
|
|
||||||
- rabbitmq-configs
|
|
||||||
- rabbitmq-ssl
|
|
||||||
|
|
||||||
# Deploy the user provided CA certificate as well (if the user defined it
|
|
||||||
# within /etc/openstack_deploy/user_variables.yml).
|
|
||||||
- name: Deploy user provided ssl CA cert
|
|
||||||
copy:
|
|
||||||
src: "{{ rabbitmq_user_ssl_ca_cert }}"
|
|
||||||
dest: "{{ rabbitmq_ssl_ca_cert }}"
|
|
||||||
owner: "rabbitmq"
|
|
||||||
group: "rabbitmq"
|
|
||||||
mode: "0644"
|
|
||||||
when: rabbitmq_user_ssl_ca_cert is defined
|
|
||||||
tags:
|
|
||||||
- keystone-configs
|
|
||||||
- keystone-ssl
|
|
@ -1,38 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: "Ensure RabbitMQ node [0] is started"
|
|
||||||
service:
|
|
||||||
name: rabbitmq-server
|
|
||||||
state: started
|
|
||||||
failed_when: false
|
|
||||||
when: >
|
|
||||||
inventory_hostname == rabbitmq_primary_cluster_node
|
|
||||||
tags:
|
|
||||||
- rabbitmq-server-started
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
- rabbitmq-start
|
|
||||||
|
|
||||||
- name: "Ensure RabbitMQ nodes [1:] are started"
|
|
||||||
service:
|
|
||||||
name: rabbitmq-server
|
|
||||||
state: started
|
|
||||||
failed_when: false
|
|
||||||
when: >
|
|
||||||
inventory_hostname != rabbitmq_primary_cluster_node
|
|
||||||
tags:
|
|
||||||
- rabbitmq-server-started
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
- rabbitmq-start
|
|
@ -1,38 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: "Ensure RabbitMQ nodes [1:] are stopped"
|
|
||||||
service:
|
|
||||||
name: rabbitmq-server
|
|
||||||
state: stopped
|
|
||||||
failed_when: false
|
|
||||||
when: >
|
|
||||||
inventory_hostname != rabbitmq_primary_cluster_node
|
|
||||||
tags:
|
|
||||||
- rabbitmq-server-stopped
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
- rabbitmq-stop
|
|
||||||
|
|
||||||
- name: "Ensure RabbitMQ node [0] is stopped"
|
|
||||||
service:
|
|
||||||
name: rabbitmq-server
|
|
||||||
state: stopped
|
|
||||||
failed_when: false
|
|
||||||
when: >
|
|
||||||
inventory_hostname == rabbitmq_primary_cluster_node
|
|
||||||
tags:
|
|
||||||
- rabbitmq-server-stopped
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
- rabbitmq-stop
|
|
@ -1,39 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Get version of installed RabbitMQ package
|
|
||||||
shell: |
|
|
||||||
dpkg -l | grep rabbitmq-server
|
|
||||||
failed_when: false
|
|
||||||
register: installed_rabbitmq
|
|
||||||
when:
|
|
||||||
- not rabbitmq_upgrade | bool
|
|
||||||
tags:
|
|
||||||
- rabbitmq-package-deb
|
|
||||||
- rabbitmq-apt-packages
|
|
||||||
|
|
||||||
- name: Compare installed version of RabbitMQ with new version variable
|
|
||||||
fail:
|
|
||||||
msg: "To install a new major/minor version of RabbitMQ set '-e rabbitmq_upgrade=true'."
|
|
||||||
when: >
|
|
||||||
not rabbitmq_upgrade | bool and
|
|
||||||
installed_rabbitmq.rc == 0 and
|
|
||||||
installed_rabbitmq.stdout.split()[2] != rabbitmq_package_version
|
|
||||||
tags:
|
|
||||||
- rabbitmq-package-deb
|
|
||||||
- rabbitmq-apt-packages
|
|
||||||
|
|
||||||
- include: rabbitmq_upgrade_prep.yml
|
|
||||||
when: rabbitmq_upgrade | bool
|
|
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2015, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Prevent RabbitMQ from starting on install
|
|
||||||
copy:
|
|
||||||
src: "policy-rc.d"
|
|
||||||
dest: "/usr/sbin/policy-rc.d"
|
|
||||||
mode: "0755"
|
|
||||||
backup: yes
|
|
||||||
tags:
|
|
||||||
- rabbitmq-policy-file
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
|
|
||||||
- include: rabbitmq_stopped.yml
|
|
||||||
|
|
||||||
- name: Ensure erlang epmd is stopped
|
|
||||||
shell: |
|
|
||||||
pkill $(pgrep -lf "erlang" | awk '{print $2}')
|
|
||||||
ignore_errors: true
|
|
||||||
tags:
|
|
||||||
- rabbitmq-upgrade
|
|
@ -1,4 +0,0 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
# Sets open file limit for RabbitMQ
|
|
||||||
ulimit -n {{ rabbitmq_ulimit }}
|
|
@ -1,18 +0,0 @@
|
|||||||
[
|
|
||||||
{rabbit, [
|
|
||||||
{loopback_users, []},
|
|
||||||
{ssl_listeners, [5671]},
|
|
||||||
{ssl_options, [{certfile,"{{ rabbitmq_ssl_cert }}"},
|
|
||||||
{keyfile,"{{ rabbitmq_ssl_key }}"},
|
|
||||||
{% if rabbitmq_user_ssl_ca_cert is defined -%}
|
|
||||||
{cacertfile,"{{ rabbitmq_ssl_ca_cert }}"},
|
|
||||||
{% endif -%}
|
|
||||||
{versions, ['tlsv1.2', 'tlsv1.1']},
|
|
||||||
{verify,verify_none},
|
|
||||||
{fail_if_no_peer_cert,false}]},
|
|
||||||
{% if rabbitmq_cluster_partition_handling != 'ignore' %}{cluster_partition_handling, {{ rabbitmq_cluster_partition_handling }}},{% endif %}
|
|
||||||
{cluster_nodes, {
|
|
||||||
[ {% for host in groups['rabbitmq_all'] %}'rabbit@{{ hostvars[host]['ansible_ssh_host'] }}'{% if not loop.last %}, {% endif %}{% endfor %}], disc}
|
|
||||||
}
|
|
||||||
]}
|
|
||||||
].
|
|
@ -1,102 +0,0 @@
|
|||||||
OpenStack repo server
|
|
||||||
#####################
|
|
||||||
:tags: openstack, repo, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
contributor guidelines
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Filing Bugs
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Bugs should be filed on Launchpad, not GitHub: "https://bugs.launchpad.net/openstack-ansible"
|
|
||||||
|
|
||||||
|
|
||||||
When submitting a bug, or working on a bug, please ensure the following
|
|
||||||
criteria are met:
|
|
||||||
|
|
||||||
* The description clearly states or describes the original problem or root
|
|
||||||
cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* The provided information should be totally self-contained. External access to
|
|
||||||
web services/sites should not be needed.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
||||||
|
|
||||||
|
|
||||||
Submitting Code
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Changes to the project should be submitted for review via the Gerrit tool,
|
|
||||||
following the workflow documented at:
|
|
||||||
"http://docs.openstack.org/infra/manual/developers.html#development-workflow"
|
|
||||||
|
|
||||||
Pull requests submitted through GitHub will be ignored and closed without
|
|
||||||
regard.
|
|
||||||
|
|
||||||
|
|
||||||
Extra
|
|
||||||
-----
|
|
||||||
|
|
||||||
Tags:
|
|
||||||
If it's a bug that needs fixing in a branch in addition to Master, add a
|
|
||||||
'\<release\>-backport-potential' tag (eg ``juno-backport-potential``).
|
|
||||||
There are predefined tags that will autocomplete.
|
|
||||||
|
|
||||||
Status:
|
|
||||||
Please leave this alone, it should be New till someone triages the issue.
|
|
||||||
|
|
||||||
Importance:
|
|
||||||
Should only be touched if it is a Blocker/Gating issue. If it is, please
|
|
||||||
set to High, and only use Critical if you have found a bug that can take
|
|
||||||
down whole infrastructures.
|
|
||||||
|
|
||||||
|
|
||||||
Style guide
|
|
||||||
-----------
|
|
||||||
|
|
||||||
When creating tasks and other roles for use in Ansible please create then using
|
|
||||||
the YAML dictionary format.
|
|
||||||
|
|
||||||
Example YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name:
|
|
||||||
thing1: "some-stuff"
|
|
||||||
thing2: "some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Example **NOT** in YAML dictionary format:
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: The name of the tasks
|
|
||||||
module_name: thing1="some-stuff" thing2="some-other-stuff"
|
|
||||||
tags:
|
|
||||||
- some-tag
|
|
||||||
- some-other-tag
|
|
||||||
|
|
||||||
|
|
||||||
Usage of the ">" and "|" operators should be limited to Ansible conditionals
|
|
||||||
and command modules such as the ansible ``shell`` module.
|
|
||||||
|
|
||||||
|
|
||||||
Issues
|
|
||||||
------
|
|
||||||
|
|
||||||
When submitting an issue, or working on an issue please ensure the following
|
|
||||||
criteria are met:
|
|
||||||
|
|
||||||
* The description clearly states or describes the original problem or root
|
|
||||||
cause of the problem.
|
|
||||||
* Include historical information on how the problem was identified.
|
|
||||||
* Any relevant logs are included.
|
|
||||||
* If the issue is a bug that needs fixing in a branch other than Master, add
|
|
||||||
the ‘backport potential’ tag TO THE ISSUE (not the PR).
|
|
||||||
* The provided information should be totally self-contained. External access to
|
|
||||||
web services/sites should not be needed.
|
|
||||||
* If the issue is needed for a hotfix release, add the 'expedite' label.
|
|
||||||
* Steps to reproduce the problem if possible.
|
|
@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright {yyyy} {name of copyright owner}
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
|||||||
OpenStack repo server
|
|
||||||
#####################
|
|
||||||
:tags: openstack, repo, server, cloud, ansible
|
|
||||||
:category: \*nix
|
|
||||||
|
|
||||||
Role to deploy a repository server for both python packages and git sources.
|
|
||||||
|
|
||||||
.. code-block:: yaml
|
|
||||||
|
|
||||||
- name: Setup repo servers
|
|
||||||
hosts: repo_all
|
|
||||||
user: root
|
|
||||||
roles:
|
|
||||||
- { role: "repo_server", tags: [ "repo-server" ] }
|
|
||||||
vars:
|
|
||||||
memcached_servers: 127.0.0.1:11211
|
|
||||||
memcached_encryption_key: secrete
|
|
@ -1,92 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# If ``repo_nginx_threads`` is unset the system will use half the number of available VCPUS to
|
|
||||||
# compute the number of api workers to use.
|
|
||||||
# repo_nginx_threads: 16
|
|
||||||
|
|
||||||
# Defines that the role will be deployed on a host machine
|
|
||||||
is_metal: true
|
|
||||||
|
|
||||||
repo_worker_connections: 1024
|
|
||||||
repo_server_name: openstack-slushee
|
|
||||||
|
|
||||||
repo_service_home_folder: /var/www
|
|
||||||
repo_service_user_name: nginx
|
|
||||||
repo_service_group_name: www-data
|
|
||||||
|
|
||||||
repo_auto_rebuild: false
|
|
||||||
|
|
||||||
repo_memcached_servers: "{% for host in groups['repo_all'] %}{{ hostvars[host]['ansible_ssh_host'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}"
|
|
||||||
|
|
||||||
# If you want to regenerate the repo users SSH keys, on each run, set this var to True
|
|
||||||
# Otherwise keys will be generated on the first run and not regenerated each run.
|
|
||||||
repo_recreate_keys: False
|
|
||||||
|
|
||||||
repo_apt_packages:
|
|
||||||
- aptitude
|
|
||||||
- bridge-utils
|
|
||||||
- build-essential
|
|
||||||
- cgroup-lite
|
|
||||||
- cmake
|
|
||||||
- dmeventd
|
|
||||||
- fcgiwrap
|
|
||||||
- git-core
|
|
||||||
- iptables
|
|
||||||
- lsyncd
|
|
||||||
- lynx
|
|
||||||
- nginx-extras
|
|
||||||
- rsync
|
|
||||||
- sshpass
|
|
||||||
- tmux
|
|
||||||
- liberasurecode1
|
|
||||||
- liberasurecode-dev
|
|
||||||
- libldap2-dev
|
|
||||||
- libsasl2-dev
|
|
||||||
- libssl-dev
|
|
||||||
- libxslt1.1
|
|
||||||
- libpq-dev
|
|
||||||
- libffi-dev
|
|
||||||
- libsqlite3-dev
|
|
||||||
- libxml2-dev
|
|
||||||
- libxslt1-dev
|
|
||||||
- libkmod-dev
|
|
||||||
- libkrb5-dev
|
|
||||||
- libkmod2
|
|
||||||
- libvirt-dev
|
|
||||||
- libmariadbclient-dev
|
|
||||||
- lxc-dev
|
|
||||||
- lvm2
|
|
||||||
- python-dev
|
|
||||||
- python-software-properties
|
|
||||||
- sqlite3
|
|
||||||
- swig
|
|
||||||
- vlan
|
|
||||||
- uuid-dev
|
|
||||||
|
|
||||||
repo_pip_packages:
|
|
||||||
- cloudlib
|
|
||||||
- PyCrypto
|
|
||||||
- python-memcached
|
|
||||||
- PyYAML
|
|
||||||
- requests
|
|
||||||
- turbolift
|
|
||||||
- wheel
|
|
||||||
- yaprt
|
|
||||||
- virtualenv
|
|
||||||
- virtualenv-tools
|
|
||||||
|
|
||||||
# Main web server port
|
|
||||||
repo_server_port: 8181
|
|
@ -1,408 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
#
|
|
||||||
# (c) 2015, Kevin Carter <kevin.carter@rackspace.com>
|
|
||||||
|
|
||||||
import os
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
import yaml
|
|
||||||
|
|
||||||
from cloudlib import arguments
|
|
||||||
from cloudlib import shell
|
|
||||||
|
|
||||||
|
|
||||||
REQUIREMENTS_FILE_TYPES = [
|
|
||||||
'requirements.txt',
|
|
||||||
'global-requirements.txt',
|
|
||||||
'test-requirements.txt',
|
|
||||||
'dev-requirements.txt'
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# List of variable names that could be used within the yaml files that
|
|
||||||
# represent lists of python packages.
|
|
||||||
BUILT_IN_PIP_PACKAGE_VARS = [
|
|
||||||
'service_pip_dependencies',
|
|
||||||
'pip_common_packages',
|
|
||||||
'pip_container_packages',
|
|
||||||
'pip_packages'
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class DependencyFileProcessor(object):
|
|
||||||
def __init__(self, local_path):
|
|
||||||
"""Find and process dependent files from a local_path.
|
|
||||||
|
|
||||||
:type local_path: ``str``
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
self.pip = dict()
|
|
||||||
self.pip['git_package'] = list()
|
|
||||||
self.pip['py_package'] = list()
|
|
||||||
self.git_pip_install = 'git+%s@%s'
|
|
||||||
self.file_names = self._get_files(path=local_path)
|
|
||||||
|
|
||||||
# Process everything simply by calling the method
|
|
||||||
self._process_files(ext=('yaml', 'yml'))
|
|
||||||
|
|
||||||
def _filter_files(self, file_names, ext):
|
|
||||||
"""Filter the files and return a sorted list.
|
|
||||||
|
|
||||||
:type file_names:
|
|
||||||
:type ext: ``str`` or ``tuple``
|
|
||||||
:returns: ``list``
|
|
||||||
"""
|
|
||||||
_file_names = list()
|
|
||||||
for file_name in file_names:
|
|
||||||
if file_name.endswith(ext):
|
|
||||||
if '/defaults/' in file_name or '/vars/' in file_name:
|
|
||||||
_file_names.append(file_name)
|
|
||||||
else:
|
|
||||||
continue
|
|
||||||
elif os.path.basename(file_name) in REQUIREMENTS_FILE_TYPES:
|
|
||||||
with open(file_name, 'rb') as f:
|
|
||||||
packages = [
|
|
||||||
i.split()[0] for i in f.read().splitlines()
|
|
||||||
if i
|
|
||||||
if not i.startswith('#')
|
|
||||||
]
|
|
||||||
self.pip['py_package'].extend(packages)
|
|
||||||
else:
|
|
||||||
return sorted(_file_names, reverse=True)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def _get_files(path):
|
|
||||||
"""Return a list of all files in the defaults/repo_packages directory.
|
|
||||||
|
|
||||||
:type path: ``str``
|
|
||||||
:returns: ``list``
|
|
||||||
"""
|
|
||||||
paths = os.walk(os.path.abspath(path))
|
|
||||||
files = list()
|
|
||||||
for fpath, _, afiles in paths:
|
|
||||||
for afile in afiles:
|
|
||||||
files.append(os.path.join(fpath, afile))
|
|
||||||
else:
|
|
||||||
return files
|
|
||||||
|
|
||||||
def _check_plugins(self, git_repo_plugins, git_data):
|
|
||||||
"""Check if the git url is a plugin type.
|
|
||||||
|
|
||||||
:type git_repo_plugins: ``dict``
|
|
||||||
:type git_data: ``dict``
|
|
||||||
"""
|
|
||||||
for repo_plugin in git_repo_plugins:
|
|
||||||
plugin = '%s/%s' % (
|
|
||||||
repo_plugin['path'].strip('/'),
|
|
||||||
repo_plugin['package'].lstrip('/')
|
|
||||||
)
|
|
||||||
|
|
||||||
package = self.git_pip_install % (
|
|
||||||
git_data['repo'],
|
|
||||||
'%s#egg=%s&subdirectory=%s' % (
|
|
||||||
git_data['branch'],
|
|
||||||
repo_plugin['package'].strip('/'),
|
|
||||||
plugin
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
self.pip['git_package'].append(package)
|
|
||||||
|
|
||||||
def _process_git(self, loaded_yaml, git_item):
|
|
||||||
"""Process git repos.
|
|
||||||
|
|
||||||
:type loaded_yaml: ``dict``
|
|
||||||
:type git_item: ``str``
|
|
||||||
"""
|
|
||||||
git_data = dict()
|
|
||||||
if git_item.split('_')[0] == 'git':
|
|
||||||
var_name = 'git'
|
|
||||||
else:
|
|
||||||
var_name = git_item.split('_')[0]
|
|
||||||
|
|
||||||
git_data['repo'] = loaded_yaml.get(git_item)
|
|
||||||
git_data['branch'] = loaded_yaml.get(
|
|
||||||
'%s_git_install_branch' % var_name.replace('.', '_')
|
|
||||||
)
|
|
||||||
if not git_data['branch']:
|
|
||||||
git_data['branch'] = loaded_yaml.get(
|
|
||||||
'git_install_branch',
|
|
||||||
'master'
|
|
||||||
)
|
|
||||||
|
|
||||||
package = self.git_pip_install % (
|
|
||||||
git_data['repo'], git_data['branch']
|
|
||||||
)
|
|
||||||
|
|
||||||
self.pip['git_package'].append(package)
|
|
||||||
|
|
||||||
git_repo_plugins = loaded_yaml.get('%s_repo_plugins' % var_name)
|
|
||||||
if git_repo_plugins:
|
|
||||||
self._check_plugins(
|
|
||||||
git_repo_plugins=git_repo_plugins,
|
|
||||||
git_data=git_data
|
|
||||||
)
|
|
||||||
|
|
||||||
def _process_files(self, ext):
|
|
||||||
"""Process files.
|
|
||||||
|
|
||||||
:type ext: ``tuple``
|
|
||||||
"""
|
|
||||||
file_names = self._filter_files(
|
|
||||||
file_names=self.file_names,
|
|
||||||
ext=ext
|
|
||||||
)
|
|
||||||
|
|
||||||
for file_name in file_names:
|
|
||||||
with open(file_name, 'rb') as f:
|
|
||||||
loaded_config = yaml.safe_load(f.read())
|
|
||||||
|
|
||||||
for key, values in loaded_config.items():
|
|
||||||
if key.endswith('git_repo'):
|
|
||||||
self._process_git(
|
|
||||||
loaded_yaml=loaded_config,
|
|
||||||
git_item=key
|
|
||||||
)
|
|
||||||
|
|
||||||
if [i for i in BUILT_IN_PIP_PACKAGE_VARS if i in key]:
|
|
||||||
self.pip['py_package'].extend(values)
|
|
||||||
|
|
||||||
|
|
||||||
def _arguments():
|
|
||||||
"""Return CLI arguments."""
|
|
||||||
|
|
||||||
arguments_dict = {
|
|
||||||
'optional_args': {
|
|
||||||
'local_path': {
|
|
||||||
'commands': [
|
|
||||||
'--local-path'
|
|
||||||
],
|
|
||||||
'help': 'Local path to cloned code.',
|
|
||||||
'metavar': '[PATH]',
|
|
||||||
'required': True
|
|
||||||
},
|
|
||||||
'report_file': {
|
|
||||||
'commands': [
|
|
||||||
'--report-file'
|
|
||||||
],
|
|
||||||
'help': 'Full path to write the package report to',
|
|
||||||
'metavar': '[FILE_PATH]',
|
|
||||||
'required': True
|
|
||||||
},
|
|
||||||
'storage_pool': {
|
|
||||||
'commands': [
|
|
||||||
'--storage-pool'
|
|
||||||
],
|
|
||||||
'help': 'Full path to the directory where you want to store'
|
|
||||||
' built wheels.',
|
|
||||||
'metavar': '[PATH]',
|
|
||||||
'required': True
|
|
||||||
},
|
|
||||||
'release_directory': {
|
|
||||||
'commands': [
|
|
||||||
'--release-directory'
|
|
||||||
],
|
|
||||||
'help': 'Full path to the directory where the releaesed links'
|
|
||||||
' will be stored.',
|
|
||||||
'metavar': '[PATH]',
|
|
||||||
'required': True
|
|
||||||
},
|
|
||||||
'add_on_repos': {
|
|
||||||
'commands': [
|
|
||||||
'--add-on-repos'
|
|
||||||
],
|
|
||||||
'help': 'Full repo path to require as an additional add on'
|
|
||||||
' repo. Example:'
|
|
||||||
' "git+https://github.com/rcbops/other-repo@master"',
|
|
||||||
'metavar': '[REPO_NAME]',
|
|
||||||
'nargs': '+'
|
|
||||||
},
|
|
||||||
'link_pool': {
|
|
||||||
'commands': [
|
|
||||||
'--link-pool'
|
|
||||||
],
|
|
||||||
'help': 'Full path to the directory links are stored.',
|
|
||||||
'metavar': '[PATH]',
|
|
||||||
'required': True
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return arguments.ArgumentParserator(
|
|
||||||
arguments_dict=arguments_dict,
|
|
||||||
epilog='Licensed Apache2',
|
|
||||||
title='Discover all of the requirements within the'
|
|
||||||
' openstack-ansible project.',
|
|
||||||
detail='Requirement lookup',
|
|
||||||
description='Discover all of the requirements within the'
|
|
||||||
' openstack-ansible project.',
|
|
||||||
env_name='OS_ANSIBLE'
|
|
||||||
).arg_parser()
|
|
||||||
|
|
||||||
|
|
||||||
def _abs_path(path):
|
|
||||||
return os.path.abspath(
|
|
||||||
os.path.expanduser(
|
|
||||||
path
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _run_command(command):
|
|
||||||
print('Running "%s"' % command[2])
|
|
||||||
run_command = shell.ShellCommands(debug=True)
|
|
||||||
info, success = run_command.run_command(' '.join(command))
|
|
||||||
if not success:
|
|
||||||
raise SystemExit(info)
|
|
||||||
else:
|
|
||||||
print(info)
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
"""Run the main application."""
|
|
||||||
user_vars = _arguments()
|
|
||||||
return_list = list()
|
|
||||||
try:
|
|
||||||
dfp = DependencyFileProcessor(
|
|
||||||
local_path=_abs_path(user_vars['local_path'])
|
|
||||||
)
|
|
||||||
return_list.extend(dfp.pip['py_package'])
|
|
||||||
return_list.extend(dfp.pip['git_package'])
|
|
||||||
except Exception as exp:
|
|
||||||
raise SystemExit(
|
|
||||||
'Execution failure. Path: "%s", Error: "%s", Trace:\n%s' % (
|
|
||||||
user_vars['local_path'],
|
|
||||||
str(exp),
|
|
||||||
traceback.format_exc()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return_data = {
|
|
||||||
'packages': list(),
|
|
||||||
'remote_packages': list()
|
|
||||||
}
|
|
||||||
for file_name in sorted(set(return_list)):
|
|
||||||
is_url = file_name.startswith(('http:', 'https:', 'git+'))
|
|
||||||
if is_url:
|
|
||||||
if '@' not in file_name:
|
|
||||||
return_data['packages'].append(file_name)
|
|
||||||
else:
|
|
||||||
return_data['remote_packages'].append(file_name)
|
|
||||||
else:
|
|
||||||
return_data['packages'].append(file_name)
|
|
||||||
else:
|
|
||||||
return_data['packages'] = ' '.join(
|
|
||||||
['"%s"' % i for i in set(return_data['packages'])]
|
|
||||||
)
|
|
||||||
|
|
||||||
if user_vars['add_on_repos']:
|
|
||||||
return_data['remote_packages'].extend(
|
|
||||||
[i.strip() for i in user_vars['add_on_repos']]
|
|
||||||
)
|
|
||||||
|
|
||||||
return_data['remote_packages'] = ' '.join(
|
|
||||||
['"%s"' % i for i in set(return_data['remote_packages'])]
|
|
||||||
)
|
|
||||||
|
|
||||||
# Build report
|
|
||||||
report_command = [
|
|
||||||
'yaprt',
|
|
||||||
'--debug',
|
|
||||||
'create-report',
|
|
||||||
'--report-file',
|
|
||||||
_abs_path(user_vars['report_file']),
|
|
||||||
'--git-install-repos',
|
|
||||||
return_data['remote_packages'],
|
|
||||||
'--packages',
|
|
||||||
return_data['packages']
|
|
||||||
]
|
|
||||||
_run_command(report_command)
|
|
||||||
|
|
||||||
# Build requirements wheels
|
|
||||||
requirements_command = [
|
|
||||||
'yaprt',
|
|
||||||
'--debug',
|
|
||||||
'build-wheels',
|
|
||||||
'--report-file',
|
|
||||||
_abs_path(user_vars['report_file']),
|
|
||||||
'--storage-pool',
|
|
||||||
_abs_path(user_vars['storage_pool']),
|
|
||||||
'--link-dir',
|
|
||||||
_abs_path(user_vars['release_directory']),
|
|
||||||
'--pip-extra-link-dirs',
|
|
||||||
_abs_path(user_vars['link_pool']),
|
|
||||||
'--pip-index',
|
|
||||||
'https://rpc-repo.rackspace.com/pools',
|
|
||||||
'--pip-extra-index',
|
|
||||||
'https://pypi.python.org/simple',
|
|
||||||
'--pip-bulk-operation',
|
|
||||||
'--build-output',
|
|
||||||
'/tmp/openstack-wheel-output',
|
|
||||||
'--build-dir',
|
|
||||||
'/tmp/openstack-builder',
|
|
||||||
'--build-requirements',
|
|
||||||
'--force-clean'
|
|
||||||
]
|
|
||||||
_run_command(requirements_command)
|
|
||||||
|
|
||||||
# Build wheels from git-repos
|
|
||||||
requirements_command = [
|
|
||||||
'yaprt',
|
|
||||||
'--debug',
|
|
||||||
'build-wheels',
|
|
||||||
'--report-file',
|
|
||||||
_abs_path(user_vars['report_file']),
|
|
||||||
'--storage-pool',
|
|
||||||
_abs_path(user_vars['storage_pool']),
|
|
||||||
'--link-dir',
|
|
||||||
_abs_path(user_vars['release_directory']),
|
|
||||||
'--pip-extra-link-dirs',
|
|
||||||
_abs_path(user_vars['link_pool']),
|
|
||||||
'--pip-no-deps',
|
|
||||||
'--pip-no-index',
|
|
||||||
'--build-output',
|
|
||||||
'/tmp/openstack-wheel-output',
|
|
||||||
'--build-dir',
|
|
||||||
'/tmp/openstack-builder',
|
|
||||||
'--build-branches',
|
|
||||||
'--build-releases',
|
|
||||||
'--force-clean'
|
|
||||||
]
|
|
||||||
_run_command(requirements_command)
|
|
||||||
|
|
||||||
# Create HTML index for all files in the release directory
|
|
||||||
index_command = [
|
|
||||||
'yaprt',
|
|
||||||
'--debug',
|
|
||||||
'create-html-indexes',
|
|
||||||
'--repo-dir',
|
|
||||||
_abs_path(user_vars['release_directory'])
|
|
||||||
]
|
|
||||||
_run_command(index_command)
|
|
||||||
|
|
||||||
# Store the git repositories
|
|
||||||
index_command = [
|
|
||||||
'yaprt',
|
|
||||||
'store-repos',
|
|
||||||
'--report-file',
|
|
||||||
_abs_path(user_vars['report_file']),
|
|
||||||
'--git-repo-path',
|
|
||||||
'/var/www/repo/openstackgit'
|
|
||||||
]
|
|
||||||
_run_command(index_command)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
@ -1,169 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Notes:
|
|
||||||
# To use this script you MUST move it to some path that will be called.
|
|
||||||
# I recommend that the script be stored and executed from
|
|
||||||
# "/opt/openstack-wheel-builder.sh". This script is a wrapper script that relies
|
|
||||||
# on the "openstack-wheel-builder.py" and is execute from
|
|
||||||
# "/opt/openstack-wheel-builder.py".
|
|
||||||
|
|
||||||
# Overrides:
|
|
||||||
# This script has several things that can be overriden via environment
|
|
||||||
# variables.
|
|
||||||
# Git repository that the rcbops ansible lxc source code will be cloned from.
|
|
||||||
# This repo should be a repo that is available via HTTP.
|
|
||||||
# GIT_REPO=""
|
|
||||||
|
|
||||||
# The URI for the github api. This is ONLY used when the $RELEASES variable
|
|
||||||
# is an empty string. Which causes the script to go discover the available
|
|
||||||
# releases.
|
|
||||||
# GITHUB_API_ENDPOINT=""
|
|
||||||
|
|
||||||
# Local directory to store the source code while interacting with it.
|
|
||||||
# WORK_DIR=""
|
|
||||||
|
|
||||||
# Local directory to store the built wheels.
|
|
||||||
# OUTPUT_WHEEL_PATH=""
|
|
||||||
|
|
||||||
# Space seperated list of all releases to build for. If unset the releases
|
|
||||||
# will be discovered.
|
|
||||||
# RELEASES=""
|
|
||||||
|
|
||||||
# Space seperated list of all releases to exclude from building. This is
|
|
||||||
# ONLY used when the $RELEASES variable is an empty string.
|
|
||||||
# EXCLUDE_RELEASES=""
|
|
||||||
|
|
||||||
set -e -o -v
|
|
||||||
|
|
||||||
# Trap any errors that might happen in executing the script
|
|
||||||
trap my_trap_handler ERR
|
|
||||||
|
|
||||||
# Ensure there is a base path loaded
|
|
||||||
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
||||||
|
|
||||||
# Defined variables.
|
|
||||||
GIT_REPO="${GIT_REPO:-https://github.com/openstack/openstack-ansible}"
|
|
||||||
GITHUB_API_ENDPOINT="${GITHUB_API_ENDPOINT:-https://api.github.com/repos/openstack/openstack-ansible}"
|
|
||||||
|
|
||||||
# Predefined working directory.
|
|
||||||
WORK_DIR="${WORK_DIR:-/tmp/openstack-ansible-deployment}"
|
|
||||||
|
|
||||||
# Output directories.
|
|
||||||
OUTPUT_WHEEL_PATH="${OUTPUT_WHEEL_PATH:-/var/www/repo/os-releases}"
|
|
||||||
LINK_PATH="${LINK_PATH:-/var/www/repo/links}"
|
|
||||||
REPORT_DIR="${REPORT_DIR:-/var/www/repo/reports}"
|
|
||||||
STORAGE_POOL="${STORAGE_POOL:-/var/www/repo/pools}"
|
|
||||||
|
|
||||||
# Additional space separated list of repos to always include in a build.
|
|
||||||
ADDON_REPOS="git+https://github.com/rcbops/horizon-extensions.git@master "
|
|
||||||
|
|
||||||
# Set the force build option to false
|
|
||||||
FORCE_BUILD="${FORCE_BUILD:-false}"
|
|
||||||
|
|
||||||
# Default is an empty string which causes the script to go discover the available
|
|
||||||
# branches from the github API.
|
|
||||||
RELEASES=${RELEASES:-""}
|
|
||||||
|
|
||||||
# Define branches that you no longer want new wheels built for or checked against.
|
|
||||||
EXCLUDE_RELEASES="${EXCLUDE_RELEASES:-v9.0.0 gh-pages revert}"
|
|
||||||
|
|
||||||
# Name of the lock file.
|
|
||||||
LOCKFILE="/tmp/wheel_builder.lock"
|
|
||||||
|
|
||||||
function my_trap_handler {
|
|
||||||
kill_job
|
|
||||||
}
|
|
||||||
|
|
||||||
function lock_file_remove {
|
|
||||||
if [ -f "${LOCKFILE}" ]; then
|
|
||||||
rm "${LOCKFILE}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function kill_job {
|
|
||||||
set +e
|
|
||||||
# If the job needs killing kill the pid and unlock the file.
|
|
||||||
if [ -f "${LOCKFILE}" ]; then
|
|
||||||
PID=$(cat ${LOCKFILE})
|
|
||||||
lock_file_remove
|
|
||||||
kill -9 "${PID}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function cleanup {
|
|
||||||
# Ensure workspaces are cleaned up
|
|
||||||
rm -rf /tmp/openstack_wheels*
|
|
||||||
rm -rf /tmp/pip*
|
|
||||||
rm -rf "${WORK_DIR}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for releases
|
|
||||||
if [ -z "${RELEASES}" ];then
|
|
||||||
echo "No releases specified. Provide a space separated list branches to build for."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for system lock file.
|
|
||||||
if [ ! -f "${LOCKFILE}" ]; then
|
|
||||||
echo $$ | tee "${LOCKFILE}"
|
|
||||||
else
|
|
||||||
if [ "$(find ${LOCKFILE} -mmin +240)" ]; then
|
|
||||||
logger "Stale pid found for ${LOCKFILE}."
|
|
||||||
logger "Killing any left over processes and unlocking"
|
|
||||||
kill_job
|
|
||||||
else
|
|
||||||
NOTICE="Active job already in progress. Check pid \"$(cat ${LOCKFILE})\" for status. Lock file: ${LOCKFILE}"
|
|
||||||
echo $NOTICE
|
|
||||||
logger ${NOTICE}
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Iterate through the list of releases and build everything that's needed
|
|
||||||
logger "Building Python Wheels for ${RELEASES}"
|
|
||||||
for release in ${RELEASES}; do
|
|
||||||
|
|
||||||
if [ ! -d "${OUTPUT_WHEEL_PATH}/${release}" ] || [[ "${FORCE_BUILD}" == "true" ]]; then
|
|
||||||
# Perform cleanup
|
|
||||||
cleanup
|
|
||||||
|
|
||||||
# Git clone repo
|
|
||||||
git clone "${GIT_REPO}" "${WORK_DIR}"
|
|
||||||
|
|
||||||
# checkout release
|
|
||||||
pushd "${WORK_DIR}"
|
|
||||||
git checkout "${release}"
|
|
||||||
popd
|
|
||||||
|
|
||||||
# Build wheels
|
|
||||||
OVERRIDE_WHEEL_OUTPUT_PATH="${OVERRIDE_WHEEL_OUTPUT_PATH:-${OUTPUT_WHEEL_PATH}/${release}}"
|
|
||||||
mkdir -p "${OVERRIDE_WHEEL_OUTPUT_PATH}"
|
|
||||||
/opt/openstack-wheel-builder.py --report-file "${REPORT_DIR}/${release}.json" \
|
|
||||||
--link-pool "${LINK_PATH}" \
|
|
||||||
--local-path "${WORK_DIR}" \
|
|
||||||
--storage-pool ${STORAGE_POOL} \
|
|
||||||
--release-directory "${OVERRIDE_WHEEL_OUTPUT_PATH}" \
|
|
||||||
--add-on-repos ${ADDON_REPOS}
|
|
||||||
|
|
||||||
fi
|
|
||||||
echo "Complete [ ${release} ]"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Perform cleanup
|
|
||||||
cleanup
|
|
||||||
|
|
||||||
# Remove lock file on job completion
|
|
||||||
lock_file_remove
|
|
@ -1,3 +0,0 @@
|
|||||||
RSYNC_ENABLE=true
|
|
||||||
RSYNC_CONFIG_FILE=/etc/rsyncd.conf
|
|
||||||
RSYNC_OPTS=''
|
|
@ -1,15 +0,0 @@
|
|||||||
log file = /var/log/rsyncd.log
|
|
||||||
pid file = /var/run/rsyncd.pid
|
|
||||||
lock file = /var/run/rsync.lock
|
|
||||||
|
|
||||||
max connections = 15
|
|
||||||
timeout = 600
|
|
||||||
transfer logging = true
|
|
||||||
|
|
||||||
[openstack_mirror]
|
|
||||||
path = {{ repo_service_home_folder }}/repo
|
|
||||||
comment = OpenStack Private Cloud Mirror Server
|
|
||||||
use chroot = yes
|
|
||||||
read only = yes
|
|
||||||
uid = nobody
|
|
||||||
gid = nogroup
|
|
@ -1,43 +0,0 @@
|
|||||||
Port 22
|
|
||||||
Protocol 2
|
|
||||||
HostKey /etc/ssh/ssh_host_rsa_key
|
|
||||||
HostKey /etc/ssh/ssh_host_dsa_key
|
|
||||||
HostKey /etc/ssh/ssh_host_ecdsa_key
|
|
||||||
HostKey /etc/ssh/ssh_host_ed25519_key
|
|
||||||
UsePrivilegeSeparation yes
|
|
||||||
|
|
||||||
KeyRegenerationInterval 3600
|
|
||||||
ServerKeyBits 1024
|
|
||||||
|
|
||||||
SyslogFacility AUTH
|
|
||||||
LogLevel INFO
|
|
||||||
|
|
||||||
LoginGraceTime 120
|
|
||||||
PermitRootLogin yes
|
|
||||||
StrictModes yes
|
|
||||||
|
|
||||||
RSAAuthentication yes
|
|
||||||
PubkeyAuthentication yes
|
|
||||||
|
|
||||||
IgnoreRhosts yes
|
|
||||||
RhostsRSAAuthentication no
|
|
||||||
HostbasedAuthentication no
|
|
||||||
|
|
||||||
PermitEmptyPasswords no
|
|
||||||
|
|
||||||
ChallengeResponseAuthentication no
|
|
||||||
|
|
||||||
PasswordAuthentication no
|
|
||||||
|
|
||||||
X11Forwarding yes
|
|
||||||
X11DisplayOffset 10
|
|
||||||
PrintMotd no
|
|
||||||
PrintLastLog yes
|
|
||||||
TCPKeepAlive yes
|
|
||||||
|
|
||||||
AcceptEnv LANG LC_*
|
|
||||||
|
|
||||||
Subsystem sftp /usr/lib/openssh/sftp-server
|
|
||||||
|
|
||||||
UsePAM yes
|
|
||||||
UseDNS no
|
|
@ -1,44 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: reload nginx
|
|
||||||
service:
|
|
||||||
name: "nginx"
|
|
||||||
state: restarted
|
|
||||||
pattern: "nginx"
|
|
||||||
|
|
||||||
- name: reload rsyncd
|
|
||||||
service:
|
|
||||||
name: "rsync"
|
|
||||||
state: restarted
|
|
||||||
pattern: "rsync"
|
|
||||||
|
|
||||||
- name: reload fcgiwrap
|
|
||||||
service:
|
|
||||||
name: "fcgiwrap"
|
|
||||||
state: restarted
|
|
||||||
pattern: "fcgiwrap"
|
|
||||||
|
|
||||||
- name: reload ssh
|
|
||||||
service:
|
|
||||||
name: "ssh"
|
|
||||||
state: restarted
|
|
||||||
pattern: "ssh"
|
|
||||||
|
|
||||||
- name: reload lsyncd
|
|
||||||
service:
|
|
||||||
name: "lsyncd"
|
|
||||||
state: restarted
|
|
||||||
pattern: "lsyncd"
|
|
@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
galaxy_info:
|
|
||||||
author: rcbops
|
|
||||||
description: Install package repo server
|
|
||||||
company: Rackspace
|
|
||||||
license: Apache2
|
|
||||||
min_ansible_version: 1.6.6
|
|
||||||
platforms:
|
|
||||||
- name: Ubuntu
|
|
||||||
versions:
|
|
||||||
- trusty
|
|
||||||
categories:
|
|
||||||
- cloud
|
|
||||||
- python
|
|
||||||
- development
|
|
||||||
- openstack
|
|
||||||
dependencies:
|
|
||||||
- apt_package_pinning
|
|
||||||
- pip_install
|
|
||||||
- memcached_server
|
|
@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- include: repo_pre_install.yml
|
|
||||||
- include: repo_install.yml
|
|
||||||
- include: repo_post_install.yml
|
|
||||||
|
|
||||||
- include: repo_key_populate.yml
|
|
||||||
|
|
||||||
- include: repo_key_distribute.yml
|
|
||||||
when: >
|
|
||||||
groups.repo_all|length > 1
|
|
||||||
|
|
||||||
- include: repo_sync_manager.yml
|
|
||||||
when: >
|
|
||||||
inventory_hostname == groups['pkg_repo'][0]
|
|
||||||
|
|
||||||
- name: Flush handlers
|
|
||||||
meta: flush_handlers
|
|
@ -1,50 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Update apt sources
|
|
||||||
apt:
|
|
||||||
update_cache: yes
|
|
||||||
cache_valid_time: 600
|
|
||||||
register: apt_update
|
|
||||||
until: apt_update|success
|
|
||||||
retries: 5
|
|
||||||
delay: 2
|
|
||||||
tags:
|
|
||||||
- repo-apt-packages
|
|
||||||
|
|
||||||
- name: Install apt packages
|
|
||||||
apt:
|
|
||||||
pkg: "{{ item }}"
|
|
||||||
state: latest
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 5
|
|
||||||
with_items: repo_apt_packages
|
|
||||||
tags:
|
|
||||||
- repo-apt-packages
|
|
||||||
|
|
||||||
- name: Install pip packages
|
|
||||||
pip:
|
|
||||||
name: "{{ item }}"
|
|
||||||
state: present
|
|
||||||
extra_args: "{{ pip_install_options|default('') }}"
|
|
||||||
register: install_packages
|
|
||||||
until: install_packages|success
|
|
||||||
retries: 5
|
|
||||||
delay: 5
|
|
||||||
with_items: repo_pip_packages
|
|
||||||
tags:
|
|
||||||
- repo-pip-packages
|
|
@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Create authorized keys file from host vars
|
|
||||||
authorized_key:
|
|
||||||
user: "{{ repo_service_user_name }}"
|
|
||||||
key: "{{ hostvars[item]['repo_pubkey'] }}"
|
|
||||||
with_items: groups['pkg_repo']
|
|
||||||
tags:
|
|
||||||
- repo-key
|
|
||||||
- repo-key-store
|
|
@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: Get public key contents and store as var
|
|
||||||
command: |
|
|
||||||
cat {{ repo_service_home_folder }}/.ssh/id_rsa.pub
|
|
||||||
register: repo_pub
|
|
||||||
changed_when: false
|
|
||||||
tags:
|
|
||||||
- repo-key
|
|
||||||
- repo-key-create
|
|
||||||
|
|
||||||
- name: Register a fact for the repo user pub key
|
|
||||||
set_fact:
|
|
||||||
repo_pubkey: "{{ repo_pub.stdout }}"
|
|
||||||
tags:
|
|
||||||
- repo-key
|
|
||||||
- repo-key-create
|
|
@ -1,115 +0,0 @@
|
|||||||
---
|
|
||||||
# Copyright 2014, Rackspace US, Inc.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
- name: create the system group
|
|
||||||
group:
|
|
||||||
name: "{{ repo_service_group_name }}"
|
|
||||||
state: "present"
|
|
||||||
system: "yes"
|
|
||||||
tags:
|
|
||||||
- pkg-repo-group
|
|
||||||
|
|
||||||
- name: Remove old key file(s) if found
|
|
||||||
file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: "absent"
|
|
||||||
with_items:
|
|
||||||
- "{{ repo_service_home_folder }}/.ssh/authorized_keys"
|
|
||||||
- "{{ repo_service_home_folder }}/.ssh/id_rsa"
|
|
||||||
- "{{ repo_service_home_folder }}/.ssh/id_rsa.pub"
|
|
||||||
when: repo_recreate_keys | bool
|
|
||||||
tags:
|
|
||||||
- repo-key
|
|
||||||
- repo-key-create
|
|
||||||
|
|
||||||
- name: Create the nginx system user
|
|
||||||
user:
|
|
||||||
name: "{{ repo_service_user_name }}"
|
|
||||||
group: "{{ repo_service_group_name }}"
|
|
||||||
comment: "Nginx repo user"
|
|
||||||
shell: "/bin/bash"
|
|
||||||
system: "yes"
|
|
||||||
createhome: "yes"
|
|
||||||
home: "{{ repo_service_home_folder }}"
|
|
||||||
generate_ssh_key: "yes"
|
|
||||||
tags:
|
|
||||||
- pkg-repo-user
|
|
||||||
- repo-key
|
|
||||||
- repo-key-create
|
|
||||||
|
|
||||||
- name: File and directory setup
|
|
||||||
file:
|
|
||||||
path: "{{ item.path }}"
|
|
||||||
state: "{{ item.state }}"
|
|
||||||
owner: "{{ item.owner|default('root') }}"
|
|
||||||
group: "{{ item.group|default('root') }}"
|
|
||||||
mode: "{{ item.mode }}"
|
|
||||||
with_items:
|
|
||||||
- { path: "{{ repo_service_home_folder }}", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/.ssh", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2700" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/links", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/os-releases", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/os-releases/{{ openstack_release }}", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/openstackgit", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/python_packages", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/python_packages/pools", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/pools", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "{{ repo_service_home_folder }}/repo/reports", state: "directory", owner: "{{ repo_service_user_name }}", group: "{{ repo_service_group_name }}", mode: "2755" }
|
|
||||||
- { path: "/etc/lsyncd", state: "directory", mode: "0755" }
|
|
||||||
- { path: "/var/log/lsyncd", state: "directory", mode: "0755" }
|
|
||||||
- { path: "/etc/nginx/sites-enabled/default", state: "absent", mode: "0644" }
|
|
||||||
tags:
|
|
||||||
- pkg-repo-dirs
|
|
||||||
|
|
||||||
- name: Drop NGINX configuration files
|
|
||||||
template:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ item.dest }}"
|
|
||||||
with_items:
|
|
||||||
- { src: "nginx.conf.j2", dest: "/etc/nginx/nginx.conf" }
|
|
||||||
- { src: "rsyncd.conf.j2", dest: "/etc/rsyncd.conf" }
|
|
||||||
- { src: "openstack-slushee.vhost.j2", dest: "/etc/nginx/sites-available/openstack-slushee.vhost" }
|
|
||||||
notify:
|
|
||||||
- reload nginx
|
|
||||||
tags:
|
|
||||||
- pkg-repo-nginx
|
|
||||||
- pkg-repo-config
|
|
||||||
|
|
||||||
- name: Change fcgiwrap GID/UID
|
|
||||||
lineinfile:
|
|
||||||
dest: "/etc/init.d/fcgiwrap"
|
|
||||||
regexp: "{{ item.regexp }}"
|
|
||||||
line: "{{ item.line }}"
|
|
||||||
with_items:
|
|
||||||
- { regexp: "^FCGI_SOCKET_OWNER=", line: 'FCGI_SOCKET_OWNER="{{ repo_service_user_name }}"' }
|
|
||||||
- { regexp: "^FCGI_SOCKET_GROUP=", line: 'FCGI_SOCKET_GROUP="{{ repo_service_group_name }}"' }
|
|
||||||
notify:
|
|
||||||
- reload nginx
|
|
||||||
- reload fcgiwrap
|
|
||||||
tags:
|
|
||||||
- pkg-repo-nginx
|
|
||||||
- pkg-repo-config
|
|
||||||
|
|
||||||
- name: Enable openstack-slushee site
|
|
||||||
file:
|
|
||||||
src: "/etc/nginx/sites-available/openstack-slushee.vhost"
|
|
||||||
dest: "/etc/nginx/sites-enabled/openstack-slushee.vhost"
|
|
||||||
state: "link"
|
|
||||||
notify:
|
|
||||||
- reload nginx
|
|
||||||
tags:
|
|
||||||
- pkg-repo-nginx
|
|
||||||
- pkg-repo-config
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user