rockandska / ansible-role-rabbitmq Goto Github PK
View Code? Open in Web Editor NEWAnsible role to provision and install RabbitMQ nodes and/or clusters
Ansible role to provision and install RabbitMQ nodes and/or clusters
ansible version: 2.12.6
playbook:
---
- hosts: demo
gather_facts: yes
roles:
- role: erlang
vars:
erlang_series: 23
erlang_series_rpm_version: 23.3.4.11-1.el7
- role: rabbitmq
vars:
rabbitmq_series: 3.8
rabbitmq_series_rpm_version: 3.8.30
#rabbitmq_sysctl_config:
# listeners:
# tcp:
# default: 5673 # http web port
# tcp_listen_options:
# linger:
# 'on': "true"
rabbitmq_erlang_config: |
{rabbit, [
{tcp_listeners, [{"{{ ansible_default_ipv4['address'] }}", 5672}]}
]
}
rabbitmq_env_config:
NODENAME: "{{ ansible_nodename }}"
rabbitmq_node_name:
rabbitmq_node_name: "{{ ansible_nodename }}"
rabbitmq_users_to_create:
- user: admin
password: admin
vhost: /
configure_priv: .*
read_priv: .*
write_priv: .*
tags: administrator
#rabbitmq_users_to_delete:
# - guest
rabbitmq_plugins_to_enable:
- rabbitmq_management
rabbitmq_management_user: 'webadmin'
rabbitmq_management_password: 'secret'
rabbitmq_management_host: "{{ ansible_default_ipv4['address'] }}"
rabbitmq_hide_log: false
tags:
- rabbitmq
Reported in #30 (comment)
I am getting similar error on installing rabbitmq. I followed the same steps that i did in erlang but no success
[RabbitMQ] Install RabbitMQ [RHEL/CentOS]] *******************************************
fatal: [172.26.126.248]: FAILED! => changed=false
msg: 'Failed to download metadata for repo ''rabbitmq'': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried'
rc: 1
results: []
** your previous reply in ansible-role-erlang issue says you have not upgraded rabbitmq role yet to use cloudsmith too. Can you please let me know when you are expecting to upgrade? Also I tried using these but no success
rabbitmq_series: 3.8
rabbitmq_series_rpm_version:
rabbitmq_series_deb_version:
rabbitmq_rpm_repo_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/rpm/el
rabbitmq_rpm_gpg_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key
rabbitmq_rpm_repo_tpl: etc/yum.repos.d/rabbitmq.repo.j2
fatal: [172.26.126.248]: FAILED! => changed=false
msg: 'Failed to download metadata for repo ''rabbitmq_erlang'': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried'
rc: 1
results: []
Cookie creation via:
# set -o pipefail; tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 32 | base64
never return rc 0, pipe is closed by head, that leads to rc 141 (128+13 SIGPIPE) Explained here: http://blogs.escenic.com/rd/2017/A-tale-of-broken-pipes
On Centos 7/Ubuntu 18.04
# set -o pipefail; tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 32 | base64
# echo $?
# 141
Option a)
add evaluation of rc like this:
ansible failed_when: "tmp_rabbitmq_cookie.rc !=0 and tmp_rabbitmq_cookie.rc != 141"
Option b)
remove "set -o pipefail;", because there is always error present here
ansible: 2.12.6
error info:
TASK [rabbitmq : [RabbitMQ] Define cluster nodes] **************************************************************************************************************************************************************
fatal: [192.168.60.8 -> localhost]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: \"hostvars['rabbitmq-master']\" is undefined\n\nThe error appears to be in '/home/ansible/roles/rabbitmq/tasks/config_server.yml': line 30, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: \"[RabbitMQ] Define cluster nodes\"\n ^ here\n"}
inventory hosts:
[demo]
#192.168.60.9 ansible_ssh_user="root" ansible_ssh_pass="secret" ansible_ssh_port=5022
192.168.60.9 hostname="test-server"
[rabbitmq_master]
192.168.60.9 hostname="rabbitmq-master"
[rabbitmq_slave]
192.168.60.8 hostname="mysql"
#192.168.60.11 hostname="demo6011"
playbook:
---
- hosts: rabbitmq_master
gather_facts: yes
roles:
- role: erlang
vars:
erlang_series: 23
erlang_series_rpm_version: 23.3.4.11-1.el7
- role: rabbitmq
vars:
# 设置为主节点
rabbitmq_is_master: true
#rabbitmq_series: 3.8
rabbitmq_series: 3.9
#rabbitmq_series_rpm_version: 3.8.30
#rabbitmq_series_rpm_version: 3.9.10
rabbitmq_series_rpm_version: 3.9.16
#AMQP端口
rabbitmq_erlang_config: |
{rabbit, [
{tcp_listeners, [{"{{ ansible_default_ipv4['address'] }}", 28861}]}
]
}
rabbitmq_env_config:
NODENAME: "{{ ansible_nodename }}"
RABBITMQ_MNESIA_BASE: "/data/rabbitmq/data" # 定义MQ数据目录
RABBITMQ_LOG_BASE: "/data/rabbitmq/logs" # 定义MQ日志目录
#USE_LONGNAME: "true"
rabbitmq_node_name: "{{ ansible_nodename }}"
rabbitmq_users_to_create:
- user: admin
password: admin
vhost: /
configure_priv: .*
read_priv: .*
write_priv: .*
tags: administrator
rabbitmq_users_to_delete:
- guest
rabbitmq_plugins_to_enable:
- rabbitmq_management
- rabbitmq_shovel
rabbitmq_management_port: 15672 # web管理端口
rabbitmq_hide_log: false
tags:
- rabbitmq-master
- hosts: rabbitmq_slave
gather_facts: yes
roles:
- role: erlang
vars:
erlang_series: 23
erlang_series_rpm_version: 23.3.4.11-1.el7
- role: rabbitmq
vars:
# 设置为从节点
rabbitmq_slave_of: rabbitmq-master
#rabbitmq_series: 3.8
rabbitmq_series: 3.9
#rabbitmq_series_rpm_version: 3.8.30
#rabbitmq_series_rpm_version: 3.9.10
rabbitmq_series_rpm_version: 3.9.16
#AMQP端口
rabbitmq_erlang_config: |
{rabbit, [
{tcp_listeners, [{"{{ ansible_default_ipv4['address'] }}", 28861}]}
]
}
rabbitmq_env_config:
NODENAME: "{{ ansible_nodename }}"
RABBITMQ_MNESIA_BASE: "/data/rabbitmq/data" # 定义MQ数据目录
RABBITMQ_LOG_BASE: "/data/rabbitmq/logs" # 定义MQ日志目录
#USE_LONGNAME: "true"
rabbitmq_node_name: "{{ ansible_nodename }}"
rabbitmq_users_to_create:
- user: admin
password: admin
vhost: /
configure_priv: .*
read_priv: .*
write_priv: .*
tags: administrator
rabbitmq_users_to_delete:
- guest
rabbitmq_plugins_to_enable:
- rabbitmq_management
- rabbitmq_shovel
rabbitmq_management_port: 15672 # web管理端口
rabbitmq_hide_log: false
tags:
- rabbitmq-slave
Getting the following error when running my playbook
TASK [rockandska.rabbitmq : [RabbitMQ] Enable plugins] ***************************************************************************************************************************
fatal: [mongo4]: FAILED! => {"changed": false, "cmd": "/usr/sbin/rabbitmq-plugins enable --online rabbitmq_management", "msg": "Error: this command requires the target node to be running.\nArguments given:\n\tenable --online rabbitmq_management\n\n\u001b[1mUsage\u001b[0m\n\nrabbitmq-plugins [--node <node>] [--longnames] [--quiet] enable <plugin1> [ <plugin2>] | --all [--offline] [--online]", "rc": 64, "stderr": "Error: this command requires the target node to be running.\nArguments given:\n\tenable --online rabbitmq_management\n\n\u001b[1mUsage\u001b[0m\n\nrabbitmq-plugins [--node <node>] [--longnames] [--quiet] enable <plugin1> [ <plugin2>] | --all [--offline] [--online]\n", "stderr_lines": ["Error: this command requires the target node to be running.", "Arguments given:", "\tenable --online rabbitmq_management", "", "\u001b[1mUsage\u001b[0m", "", "rabbitmq-plugins [--node <node>] [--longnames] [--quiet] enable <plugin1> [ <plugin2>] | --all [--offline] [--online]"], "stdout": "", "stdout_lines": []}
If I rerun the playbook, it works. Here is my playbook:
- name: Install rabbitmq master
hosts: rabbitmq_master_server
become: true
roles:
- { role: rockandska.erlang, erlang_series: 23 }
- role: rockandska.rabbitmq
vars:
rabbitmq_is_master: true
rabbitmq_plugins_to_enable:
- rabbitmq_management
- rabbitmq_shovel
rabbitmq_users_to_create:
- user: admin
password: admin
vhost: /
configure_priv: .*
read_priv: .*
write_priv: .*
tags: administrator
rabbitmq_users_to_delete:
- guest
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.