Optimize CentOS Erlang installation
This patch optimizes the Erlang/RabbitMQ installation on CentOS. It
includes:
* Installing RabbitMQ from RabbitMQ's repository
* Installing Erlang all-in-one from RabbitMQ's repository
* Remove old versionlocks before applying new ones (fixes bug)
The erlang-solutions repository is hosted in eastern Europe and has
high latency to the USA and western Europe. Installing from that
repository brings in over 80 individual packages, which causes
additional delays in the role.
The Erlang all-in-one package from RabbitMQ's repository contains
only the Erlang bits that RabbitMQ needs. Also, it has HiPE enabled
by default, which is recommended by RabbitMQ developers for
better performance.
Closes-Bug: 1712596
Change-Id: I1bfcc96f353bd27b0004d93e250bb041eee48bdb
(cherry picked from commit 05370b0394
)
This commit is contained in:
parent
e148ca4fe3
commit
d7ae447f5e
|
@ -54,7 +54,7 @@ rabbitmq_erlang_repo_url: "{{ _rabbitmq_erlang_repo_url }}"
|
|||
rabbitmq_erlang_repo: "{{ _rabbitmq_erlang_repo }}"
|
||||
|
||||
# Choose file, distro, external_repo for rabbitmq_install_method.
|
||||
rabbitmq_install_method: "file"
|
||||
rabbitmq_install_method: "{{ _rabbitmq_install_method }}"
|
||||
|
||||
# Name of the rabbitmq cluster
|
||||
rabbitmq_cluster_name: rabbitmq_cluster1
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
The installation of Erlang and is now optimized for CentOS.
|
||||
Erlang 19.x is now installed via a single package that is maintained by
|
||||
RabbitMQ developers and it provides the minimal features required for
|
||||
RabbitMQ to function. It also includes HiPE support for increased
|
||||
performance.
|
||||
|
||||
The version of Erlang is kept constant using yum's versionlock plugin.
|
||||
- |
|
||||
RabbitMQ is now installed via an RPM repository provided by RabbitMQ
|
||||
developers. The version is kept constant via yum's versionlock plugin.
|
||||
This allows the tasks to lock the RabbitMQ version to a particular
|
||||
revision and prevent changes to that version.
|
|
@ -54,7 +54,7 @@
|
|||
sslverify: "{{ rabbitmq_repo.sslverify | default(omit) }}"
|
||||
sslcacert: "{{ rabbitmq_repo.sslcacert | default(omit) }}"
|
||||
when:
|
||||
- rabbitmq_install_method != 'file'
|
||||
- rabbitmq_install_method == 'external_repo'
|
||||
tags:
|
||||
- rabbitmq-repos
|
||||
|
||||
|
@ -70,6 +70,8 @@
|
|||
gpgkey: "{{ rabbitmq_erlang_repo.gpgkey | default(omit) }}"
|
||||
sslverify: "{{ rabbitmq_erlang_repo.sslverify | default(omit) }}"
|
||||
sslcacert: "{{ rabbitmq_erlang_repo.sslcacert | default(omit) }}"
|
||||
when:
|
||||
- rabbitmq_install_method == 'external_repo'
|
||||
tags:
|
||||
- rabbitmq-repos
|
||||
|
||||
|
@ -80,6 +82,8 @@
|
|||
--setopt="{{ item.name }}.priority={{ item.priority }}"
|
||||
changed_when: false
|
||||
with_items:
|
||||
- name: "{{ rabbitmq_repo.name }}"
|
||||
priority: 40
|
||||
- name: "{{ rabbitmq_erlang_repo.name }}"
|
||||
priority: 40
|
||||
tags:
|
||||
|
@ -92,41 +96,34 @@
|
|||
tags:
|
||||
- rabbitmq-yum-packages
|
||||
|
||||
- name: Lock version of erlang packages
|
||||
command: yum versionlock add erlang*19.3*
|
||||
register: yum_versionlock_erlang
|
||||
changed_when: "yum_versionlock_erlang.stdout.find('versionlock added: 0') == -1"
|
||||
- name: Gather a list of the currently locked versions
|
||||
command: yum versionlock list
|
||||
register: yum_versionlock_list
|
||||
tags:
|
||||
- rabbitmq-yum-packages
|
||||
|
||||
- name: Install RabbitMQ package dependencies
|
||||
package:
|
||||
pkg: "{{ rabbitmq_dependencies }}"
|
||||
state: "{{ rabbitmq_package_state }}"
|
||||
register: install_packages
|
||||
until: install_packages|success
|
||||
retries: 5
|
||||
delay: 2
|
||||
- name: Lock package versions
|
||||
shell: |
|
||||
yum versionlock delete {{ item.pkg_name }}
|
||||
yum versionlock add {{ item.pkg_spec }}
|
||||
args:
|
||||
warn: no
|
||||
when:
|
||||
- item.pkg_spec not in yum_versionlock_list.stdout
|
||||
with_items:
|
||||
- { 'pkg_name': 'erlang', 'pkg_spec': "erlang-19*" }
|
||||
- { 'pkg_name': 'rabbitmq-server', 'pkg_spec': "rabbitmq-server-{{ rabbitmq_release_version }}*" }
|
||||
tags:
|
||||
- rabbitmq-yum-packages
|
||||
|
||||
# NOTE(mhayden): With the version locks applied, this step will install
|
||||
# the correct version of RabbitMQ along with the correct version of the
|
||||
# all-in-one erlang package.
|
||||
- name: Install RabbitMQ packages
|
||||
package:
|
||||
name: "{{ (rabbitmq_install_method == 'file') | ternary(rabbitmq_package_path, rabbitmq_distro_packages) }}"
|
||||
name: "{{ rabbitmq_distro_packages }}"
|
||||
state: "{{ rabbitmq_package_state }}"
|
||||
register: install_rabbitmq
|
||||
tags:
|
||||
- rabbitmq-package-rpm
|
||||
- rabbitmq-yum-packages
|
||||
|
||||
- name: Install RabbitMQ package dependencies for external_repo usage
|
||||
package:
|
||||
pkg: "{{ rabbitmq_mirror_dependencies }}"
|
||||
state: "{{ rabbitmq_package_state }}"
|
||||
register: install_packages
|
||||
until: install_packages|success
|
||||
retries: 5
|
||||
delay: 2
|
||||
when:
|
||||
- rabbitmq_install_method != 'file'
|
||||
tags:
|
||||
- rabbitmq-yum-packages
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
_rabbitmq_install_method: file
|
||||
_rabbitmq_package_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server_3.6.9-1_all.deb"
|
||||
_rabbitmq_package_version: "{{ rabbitmq_package_url.split('/')[-1].split('_')[1] }}"
|
||||
_rabbitmq_release_version: "{{ rabbitmq_package_version.split('-')[0] }}"
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
_rabbitmq_install_method: external_repo
|
||||
_rabbitmq_package_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-3.6.9-1.el7.noarch.rpm"
|
||||
_rabbitmq_package_version: "{{ rabbitmq_package_url.split('/')[-1].rsplit('.', 1)[0] }}"
|
||||
_rabbitmq_release_version: "{{ rabbitmq_package_version.split('-')[2] }}"
|
||||
|
@ -22,15 +23,14 @@ _rabbitmq_package_path: "/opt/rabbitmq-server.rpm"
|
|||
_rabbitmq_gpg_keys:
|
||||
- key_name: 'rabbitmq-release-signing-key.asc'
|
||||
keyserver: 'https://www.rabbitmq.com'
|
||||
- key_name: 'erlang_solutions.asc'
|
||||
keyserver: 'https://packages.erlang-solutions.com/ubuntu'
|
||||
- key_name: 'gpgkey'
|
||||
keyserver: 'https://packagecloud.io/rabbitmq/rabbitmq-server/'
|
||||
|
||||
_rabbitmq_repo_url: "https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch"
|
||||
_rabbitmq_repo:
|
||||
name: rabbitmq_rabbitmq-server
|
||||
description: "RabbitMQ Server Rolling Repository"
|
||||
baseurl: "{{ rabbitmq_repo_url }}"
|
||||
repo_gpgcheck: yes
|
||||
state: "present"
|
||||
gpgkey: "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey"
|
||||
filename: RabbitMQ
|
||||
|
@ -38,23 +38,14 @@ _rabbitmq_repo:
|
|||
#sslverify: no
|
||||
#sslcacert: /etc/pki/tls/certs/ca-bundle.crt
|
||||
|
||||
_rabbitmq_erlang_repo_url: "https://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch"
|
||||
_rabbitmq_erlang_repo_url: "https://dl.bintray.com/rabbitmq/rpm/erlang/19/el/7"
|
||||
_rabbitmq_erlang_repo:
|
||||
name: rabbitmq_els-erlang
|
||||
description: "Erlang Solutions Erlang"
|
||||
description: "RabbitMQ Erlang Packages from Bintray"
|
||||
baseurl: "{{ rabbitmq_erlang_repo_url }}"
|
||||
repo_gpgcheck: no
|
||||
state: "present"
|
||||
filename: els-erlang
|
||||
|
||||
rabbitmq_dependencies:
|
||||
- erlang-hipe
|
||||
- openssl
|
||||
- socat
|
||||
|
||||
rabbitmq_mirror_dependencies:
|
||||
- pygpgme
|
||||
- yum-utils
|
||||
|
||||
rabbitmq_distro_packages:
|
||||
- openssl
|
||||
- rabbitmq-server
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
# Even though we install the rabbitmq-server from the openSUSE repositories
|
||||
# (the Ocata OBS project) we still add these here in case we use them in the
|
||||
# future.
|
||||
_rabbitmq_install_method: file
|
||||
_rabbitmq_package_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-3.6.9-1.suse.noarch.rpm"
|
||||
_rabbitmq_package_version: "{{ rabbitmq_package_url.split('/')[-1].rsplit('.', 1)[0] }}"
|
||||
_rabbitmq_release_version: "{{ rabbitmq_package_version.split('-')[2] }}"
|
||||
|
|
Loading…
Reference in New Issue