Merge "Add repo installation method"

This commit is contained in:
Jenkins
2017-01-10 10:22:22 +00:00
committed by Gerrit Code Review
7 changed files with 177 additions and 2 deletions

View File

@@ -39,6 +39,9 @@ rabbitmq_release_version: "{{ _rabbitmq_release_version }}"
rabbitmq_package_sha256: "{{ _rabbitmq_package_sha256 }}"
rabbitmq_package_path: "{{ _rabbitmq_package_path }}"
# Choose file, distro, external_repo for rabbitmq_install_method.
rabbitmq_install_method: "file"
# Name of the rabbitmq cluster
rabbitmq_cluster_name: rabbitmq_cluster1

View File

@@ -0,0 +1,14 @@
---
features:
- |
RabbitMQ Server can now be installed from different
methods: a deb file (default), from standard
repository package and from external repository.
Current behavior is unchanged. Please define
``rabbitmq_install_method: distro`` to use packages
provided by your distribution or
``rabbitmq_install_method: external_repo`` to use
packages stored in an external repo. In the case
``external_repo`` is used, the process will install
RabbitMQ from the packages hosted by packagecloud.io,
as recommended by RabbitMQ.

View File

@@ -27,10 +27,72 @@
tags:
- rabbitmq-apt-packages
- name: Install the RabbitMQ package
- name: Add rabbitmq apt-keys
apt_key:
id: "{{ item.hash_id }}"
keyserver: "{{ item.keyserver | default(omit) }}"
data: "{{ item.data | default(omit) }}"
url: "{{ item.url | default(omit) }}"
state: "present"
register: add_keys
until: add_keys|success
failed_when: false
retries: 5
delay: 2
when: rabbitmq_install_method == 'external_repo'
with_items: "{{ rabbitmq_gpg_keys }}"
tags:
- rabbitmq-apt-keys
- name: Add rabbitmq apt-keys using fallback keyserver
apt_key:
id: "{{ item.hash_id }}"
keyserver: "{{ item.fallback_keyserver | default(omit) }}"
url: "{{ item.fallback_url | default(omit) }}"
state: "present"
register: add_keys_fallback
until: add_keys_fallback|success
retries: 5
delay: 2
with_items: "{{ rabbitmq_gpg_keys }}"
when:
- rabbitmq_install_method == 'external_repo'
- add_keys|failed
- (item.fallback_keyserver is defined or item.fallback_url is defined)
tags:
- rabbitmq-apt-keys
- name: Add rabbitmq repo
apt_repository:
repo: "{{ rabbitmq_repo.repo }}"
state: "{{ rabbitmq_repo.state }}"
filename: "RabbitMQ"
register: add_repos
until: add_repos|success
retries: 5
delay: 2
when: rabbitmq_install_method == 'external_repo'
tags:
- rabbitmq-repos
- name: Install the RabbitMQ package through a deb file
apt:
deb: "{{ rabbitmq_package_path }}"
register: install_rabbitmq
when: rabbitmq_install_method == 'file'
tags:
- rabbitmq-package-deb
- rabbitmq-apt-packages
- name: Install RabbitMQ packages
package:
name: "{{ item }}"
state: "{{ rabbitmq_package_state }}"
register: install_packages
until: install_packages|success
retries: 5
delay: 2
with_items: "{{ rabbitmq_distro_packages }}"
when: rabbitmq_install_method != 'file'
tags:
- rabbitmq-apt-packages

View File

@@ -21,6 +21,52 @@
tags:
- rabbitmq-yum-packages
- name: Add rabbitmq gpg-keys
rpm_key:
state: present
key: "{{ item.keyserver }}/{{ item.key_name }}"
register: add_keys
until: add_keys|success
failed_when: false
retries: 5
delay: 2
with_items: "{{ rabbitmq_gpg_keys }}"
when: rabbitmq_install_method != 'file'
tags:
- rabbitmq-gpg-keys
- name: Add rabbitmq gpg-keys using fallback keyserver
rpm_key:
state: present
key: "{{ item.fallback_keyserver }}/{{ item.key_name }}"
register: add_keys
until: add_keys|success
retries: 5
delay: 2
with_items: "{{ rabbitmq_gpg_keys }}"
when:
- rabbitmq_install_method != 'file'
- add_keys|failed
- item.fallback_keyserver is defined
tags:
- rabbitmq-gpg-keys
- name: Install RabbitMQ yum mirror
yum_repository:
name: "{{ rabbitmq_repo.name }}"
file: "RabbitMQ"
description: "{{ rabbitmq_repo.description | default(omit) }}"
baseurl: "{{ rabbitmq_repo.baseurl }}"
repo_gpgcheck: "{{ rabbitmq_repo.repo_gpgcheck | default(omit) }}"
gpgcheck: "{{ rabbitmq_repo.gpgcheck | default(omit) }}"
state: "{{ rabbitmq_repo.state }}"
gpgkey: "{{ rabbitmq_repo.gpgkey | default(omit) }}"
sslverify: "{{ rabbitmq_repo.sslverify | default(omit) }}"
sslcacert: "{{ rabbitmq_repo.sslcacert | default(omit) }}"
when: rabbitmq_install_method != 'file'
tags:
- rabbitmq-repos
- name: Install RabbitMQ package dependencies
yum:
pkg: "{{ item }}"
@@ -34,9 +80,22 @@
tags:
- rabbitmq-yum-packages
- name: Install RabbitMQ package dependencies for external_repo usage
yum:
pkg: "{{ item }}"
state: "{{ rabbitmq_package_state }}"
register: install_packages
until: install_packages|success
retries: 5
delay: 2
with_items: "{{ rabbitmq_mirror_dependencies }}"
when: rabbitmq_install_method != 'file'
tags:
- rabbitmq-yum-packages
- name: Install the RabbitMQ package
yum:
name: "{{ rabbitmq_package_path }}"
name: "{{ (rabbitmq_install_method == 'file') | ternary(rabbitmq_package_path, rabbitmq_distro_packages) }}"
register: install_rabbitmq
tags:
- rabbitmq-package-rpm

View File

@@ -34,6 +34,7 @@
retries: 3
delay: 10
until: package_download|success
when: rabbitmq_install_method == 'file'
tags:
- rabbitmq-package-deb
- rabbitmq-package-deb-get

View File

@@ -23,3 +23,17 @@ rabbitmq_dependencies:
- erlang-base-hipe
- erlang-nox
- socat
rabbitmq_distro_packages:
- rabbitmq-server
rabbitmq_gpg_keys:
- key_name: 'rabbitmq'
keyserver: 'hkp://keyserver.ubuntu.com:80'
fallback_keyserver: 'hkp://p80.pool.sks-keyservers.net:80'
hash_id: '0x6B73A36E6026DFCA'
rabbitmq_apt_repo_url: "http://www.rabbitmq.com/debian"
rabbitmq_repo:
repo: "deb {{ rabbitmq_apt_repo_url }} testing main"
state: "present"

View File

@@ -23,3 +23,25 @@ rabbitmq_dependencies:
- erlang
- openssl
- socat
rabbitmq_mirror_dependencies:
- pygpgme
- yum-utils
rabbitmq_distro_packages:
- rabbitmq-server
rabbitmq_gpg_keys:
- key_name: 'rabbitmq-release-signing-key.asc'
keyserver: 'https://www.rabbitmq.com'
rabbitmq_repo:
name: rabbitmq_rabbitmq-server
description: "RabbitMQ Server Rolling Repository"
baseurl: "https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch"
repo_gpgcheck: yes
state: "present"
gpgkey: "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey"
# TODO(evrardjp) Move to ssl verify yes
#sslverify: no
#sslcacert: /etc/pki/tls/certs/ca-bundle.crt