rockandska.rabbitmq
ansible-role-rabbitmq
Rola Ansible do instalacji RabbitMQ z repozytorium RabbitMQ. Dostępna na Ansible Galaxy
Ansible Galaxy:
Kompatybilność
RabbitMQ | |
---|---|
3.6.x | Przestarzałe |
3.7.x | Przestarzałe |
3.8 | OK |
> 3.8 | Nie testowane |
Distro | |
CentOS 7 | OK |
CentOS > 7 | Nie testowane |
Debian 9 | OK |
Debian > 9 | Nie testowane |
Ubuntu bionic | OK |
Ubuntu > bionic | Nie testowane |
Wymagania na zdalnych hostach
Wszystkie dystrybucje
- Zastosowana ansible-role-erlang (nie zapomnij użyć wersji Erlanga kompatybilnej z wersją RabbitMQ, która będzie instalowana. Zobacz dokumentację RabbitMQ)
- socat
- logrotate
- python requests >= 1.0.0 (jeśli używasz powiązań, zarządzania wymianami, kolejkami dostarczanych przez tę rolę)
- W przypadku klastra, hosty będące częścią klastra muszą być rozwiązywalne po ich nazwach hostów
Debian / Ubuntu
- apt-transport-https
- gpg-agent
- ca-certificates
CentOS / RedHat
- gnupg2
Zmienne roli
Domyślne zmienne znajdują się w defaults/main.yml
---
###########
# Instalacja #
###########
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
rabbitmq_rpm_disable_repo:
rabbitmq_rpm_enable_repo:
rabbitmq_deb_repo_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb
rabbitmq_deb_gpg_url: https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/gpg.9F4587F226208342.key
rabbitmq_deb_repo_tpl: etc/apt/sources.list.d/rabbitmq.list.j2
rabbitmq_deb_pinning_tpl: etc/apt/preferences.d/rabbitmq.j2
#################
# Niestandardowa konfiguracja #
#################
rabbitmq_vars_files: []
rabbitmq_sysctl_tpl: etc/rabbitmq/sysctl.conf.j2
rabbitmq_sysctl_config: {}
rabbitmq_erlang_tpl: etc/rabbitmq/erlang.config.j2
rabbitmq_erlang_config:
rabbitmq_env_tpl: etc/rabbitmq/rabbitmq-env.conf.j2
rabbitmq_env_config: {}
rabbitmq_node_name:
rabbitmq_systemd_override_tpl: etc/systemd/system/rabbitmq-server.service.d/override.conf.j2
rabbitmq_systemd_override: {}
rabbitmq_custom_logrotate_tpl: etc/logrotate.d/rabbitmq-server.j2
rabbitmq_custom_logrotate:
rabbitmq_users_groups: []
###########
# Klaster #
###########
rabbitmq_is_master:
rabbitmq_slave_of:
rabbitmq_peer_discovery_classic: true
rabbitmq_cluster_node_type: disc
rabbitmq_internode_ssl_config:
###########
# Wtyczki #
###########
rabbitmq_plugins_to_enable: []
rabbitmq_plugins_to_disable: []
#########
# Użytkownicy #
#########
rabbitmq_users_to_create: []
rabbitmq_users_to_delete: []
#####################
# Parametry globalne #
#####################
rabbitmq_global_parameters_to_create: []
rabbitmq_global_parameters_to_delete: []
############
# Użytkownik API #
############
rabbitmq_management_user:
rabbitmq_management_password:
rabbitmq_management_host:
rabbitmq_management_port:
rabbitmq_management_protocol:
rabbitmq_management_ca_cert:
rabbitmq_management_client_cert:
rabbitmq_management_client_key:
##########
# Vhosts #
##########
rabbitmq_vhosts_to_create: []
rabbitmq_vhosts_to_delete: []
##########
# Kolejki #
##########
rabbitmq_queues_to_create: []
rabbitmq_queues_to_delete: []
############
# Wymiana #
############
rabbitmq_exchanges_to_create: []
rabbitmq_exchanges_to_delete: []
############
# Powiązania #
############
rabbitmq_bindings_to_create: []
rabbitmq_bindings_to_delete: []
############
# Polityki #
############
rabbitmq_policies_to_create: []
rabbitmq_policies_to_delete: []
##############
# Parametry #
##############
rabbitmq_parameters_to_create: []
rabbitmq_parameters_to_delete: []
#########
# Debug #
#########
rabbitmq_hide_log: true
Szczegóły
rabbitmq_series
- powinno być liczbą zmiennoprzecinkową (3.8 dostępny od 07.07.2021)
rabbitmq_rpm_repo_url
- adres URL repozytorium używany w szablonie yum
rabbitmq_rpm_gpg_url
- klucz gpg używany w szablonie yum
rabbitmq_rpm_repo_tpl
- ścieżka do szablonu repozytorium yum
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- zachowaj nazwę repozytorium jako
rabbitmq
- dodaj swój szablon obok swojego playbooka w
rabbitmq_series_rpm_version
- zainstaluj konkretna wersję
rabbitmq_series
dla systemów Centos / Redhat - przykład:
3.8.11-1.el7 3.8.10-1.el7 3.8.9-1.el7 3.8.8-1.el7
- zainstaluj konkretna wersję
rabbitmq_rpm_disable_repo
używane, jeśli chcesz skorzystać z możliwości wyłączenia niektórych repozytoriów podczas instalacji rabbitmq
domyślnie: ""
przykład:
rabbitmq_rpm_disable_repo: "*"
rabbitmq_rpm_enable_repo
używane, jeśli chcesz skorzystać z możliwości włączenia tylko niektórych repozytoriów, jeśli używasz
rabbitmq_rpm_disable_repo: "*"
podczas instalacji rabbitmqdomyślnie: ""
przykład:
rabbitmq_rpm_enable_repo: "rabbitmq"
rabbitmq_deb_repo_url
- adres URL repozytorium używany w szablonie apt
rabbitmq_deb_gpg_url
- klucz gpg używany w szablonie apt
rabbitmq_deb_repo_tpl
- ścieżka do szablonu repozytorium apt
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- dodaj swój szablon obok swojego playbooka w
rabbitmq_deb_pinning_tpl
- ścieżka do szablonu pinning apt
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- dodaj swój szablon obok swojego playbooka w
rabbitmq_series_deb_version
- zainstaluj konkretna wersję
rabbitmq_series
dla systemów Debian - przykład:
3.8.11-1 3.8.10-1 3.8.9-1 3.8.8-1
- zainstaluj konkretna wersję
rabbitmq_vars_files
- lista plików z zmiennymi używanych do zastąpienia domyślnych zmiennych, jeśli zajdzie taka potrzeba
- jeśli używasz względnej ścieżki, umieść te pliki obok swojego playbooka w katalogu
vars
- przykład:
rabbitmq_vars_files: - settings.yml
rabbitmq_sysctl_tpl
- ścieżka do szablonu konfiguracji sysctl RabbitMQ
- dotyczy tylko wersji >= 3.7 (Zobacz dokumentację RabbitMQ)
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- dodaj swój szablon obok swojego playbooka w
rabbitmq_sysctl_config
- słownik reprezentujący niestandardową konfigurację sysctl RabbitMQ, która ma być zastosowana
- każdy poziom słownika będzie połączony kropką.
- umieść specjalne zmienne w podwójnych cudzysłowach (np. "true")
- przykłady:
rabbitmq_sysctl_config: listeners: tcp: default: 5673 tcp_listen_options: linger: on: "true" # Spowoduje to dodanie do rabbitmq.conf jako: # tcp_listen_options.linger.on = true # listeners.tcp.default = 5673
rabbitmq_erlang_tpl
- ścieżka do szablonu konfiguracji Erlanga RabbitMQ
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- dodaj swój szablon obok swojego playbooka w
rabbitmq_erlang_config
- wielolinijkowy ciąg z konfiguracją RabbitMQ w formacie Erlang, który ma być zastosowany
- będzie używany jako rabbitmq.config dla wersji <=3.6
- będzie używany jako advanced.conf dla wersji >=3.7
- nie zamykaj konfiguracji w
[
i].
, jest to zrealizowane w szablonie - przykład:
rabbitmq_erlang_config: | {rabbit, [ {tcp_listeners, [{"127.0.0.1", 5672}]} ] }
rabbitmq_env_tpl
- ścieżka do szablonu konfiguracji środowiska RabbitMQ
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- dodaj swój szablon obok swojego playbooka w
- niektóre zmienne środowiskowe są ustawiane automatycznie, jeśli aktywowane jest SSL w internecie
- ERL_SSL_PATH
- SERVER_ADDITIONAL_ERL_ARGS
- RABBITMQ_CTL_ERL_ARGS
rabbitmq_env_config
:- słownik reprezentujący konfigurację środowiska
- klucz powinien być nazwą zmiennej środowiskowej
- wartość powinna być zawartością zmiennej
- przykład:
rabbitmq_env_config: NODENAME: "bunny@myhost"
rabbitmq_node_name
:- ciąg reprezentujący nazwę węzła do użycia
- użyj go, jeśli zmieniasz nodename przez rabbitmq_env_config
- przykład:
rabbitmq_node_name: "bunny@myhost"
rabbitmq_systemd_override_tpl
- ścieżka do szablonu nadpisania systemd RabbitMQ
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- dodaj swój szablon obok swojego playbooka w
rabbitmq_systemd_override
- słownik reprezentujący konfigurację nadpisania systemd
- pierwszy poziom jest używany dla sekcji ini
- drugi poziom jest używany dla klucza/wartości
- przykład:
rabbitmq_systemd_override: Service: LimitNOFILE: 30000 # Spowoduje to dodanie do pliku nadpisania systemd jako: # [Service] # LimitNOFILE=30000
rabbitmq_custom_logrotate_tpl
- ścieżka do szablonu niestandardowego logrotate RabbitMQ
- jeśli chcesz użyć własnego szablonu
- dodaj swój szablon obok swojego playbooka w
templates
- użyj innej ścieżki niż domyślna
- dodaj swój szablon obok swojego playbooka w
rabbitmq_custom_logrotate
wielolinijkowy ciąg z opcjami logrotate dla logów RabbitMQ
usunie domyślną konfigurację
/!\ Uważaj, że jeśli zastąpisz domyślną konfigurację logrotate własną, zastosowana konfiguracja będzie się utrzymywać nawet po usunięciu tej zmiennej
przykład:
rabbitmq_custom_logrotate: | weekly missingok rotate 40 compress notifempty # Spowoduje to dodanie do pliku konfiguracyjnego logrotate jako: # /var/log/rabbitmq/*.log { # weekly # missingok # rotate 40 # compress # notifempty # }
rabbitmq_users_groups
lista użytkowników i argumentów modułu użytkownika (nazwa, grupy, dodaj)
Używana do ustawiania/dodawania użytkownika do grup po instalacji RabbitMQ
przykład:
rabbitmq_users_groups: - name: rabbitmq groups: ssl-cert append: true
rabbitmq_is_master
true / false
oznaczenie hosta jako master
nie jest obowiązkowe w instalacji standalone
używane tylko do określenia, na którym węźle będą wykonywane wywołania API i polecenia oraz gdzie należy uzyskać ciastko do propagacji.
Przykład:
rabbitmq_is_master: true
rabbitmq_slave_of
nazwa w inwentarzu mastera, do którego ma dołączyć
oznaczenie hosta jako slave
nie jest obowiązkowe w instalacji standalone
musi być nazwą hosta/IP/aliasu, który istnieje w inwentarzu
Przykład:
rabbitmq_slave_of: rabbitmq-master.internal
rabbitmq_peer_discovery_classic
- domyślnie: true
- konfiguracja klastra będzie automatycznie generowana i dodana do pliku konfiguracyjnego na podstawie nazw inwentarza (zależy od zmiennych roli
rabbitmq_is_master
,rabbitmq_slave_of
).
rabbitmq_cluster_node_type
- domyślnie: disc
- określa, czy węzeł jest typu
disc
czyram
rabbitmq_internode_ssl_config
- używane do pisania dedykowanej konfiguracji internode (zobacz dokumentację RabbitMQ)
- jeśli ustawione, część, która musi być dodana do
/etc/rabbitmq/rabbitmq-env.conf
zostanie wykonana automatycznie. - Przykład:
rabbitmq_internode_ssl_config: | [ {server, [ {cacertfile, "/etc/ssl/private/Custom_Bundle-CA.pem"}, {certfile, "/usr/local/share/ca-certificates/{{ ansible_hostname }}.crt"}, {keyfile, "/etc/ssl/private/{{ ansible_hostname }}.key"}, {secure_renegotiate, true} ]}, {client, [ {cacertfile, "/etc/ssl/private/Custom_Bundle-CA.pem"}, {certfile, "/usr/local/share/ca-certificates/{{ ansible_hostname }}.crt"}, {keyfile, "/etc/ssl/private/{{ ansible_hostname }}.key"}, {secure_renegotiate, true} ]} ].
rabbitmq_users_to_create
lista słowników do tworzenia użytkowników
odniesienie do dokumentacji ansible w celu uzyskania obowiązkowych opcji i kompatybilności wersji
Przykład:
rabbitmq_users_to_create: - user: admin password: admin vhost: vhost_test configure_priv: .* read_priv: .* write_priv: .* tags: administrator
rabbitmq_users_to_delete
lista użytkowników do usunięcia
Przykład:
rabbitmq_users_to_delete: - guest
rabbitmq_global_parameters_to_create
lista globalnych parametrów do utworzenia
odniesienie do dokumentacji ansible w celu uzyskania obowiązkowych opcji i kompatybilności wersji
value
zostanie skonwertowany na json w zadaniuprzykład:
rabbitmq_global_parameters_to_create: - name: cluster_name value: mq-cluster
rabbitmq_global_parameters_to_delete
lista globalnych parametrów do usunięcia
odniesienie do dokumentacji ansible w celu uzyskania obowiązkowych opcji i kompatybilności wersji
value
zostanie skonwertowany na json w zadaniuprzykład:
rabbitmq_global_parameters_to_delete: - name: cluster_name
rabbitmq_management_user
- Użytkownik używany przez wtyczkę rabbitmq_management
- Używana, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_management_password
hasło dla użytkownika używanego przez wtyczkę rabbitmq_management
Używane, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_management_host
- domyślnie: localhost
- Używane, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_management_port
- domyślnie: 15672
- Używane, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_management_protocol
- domyślnie: http
- Używane, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_management_ca_cert
- certyfikat CA do weryfikacji połączenia SSL z interfejsem API zarządzania
- Używane, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_management_client_cert
- Certyfikat klienta do wysyłania w połączeniach SSL do interfejsu API zarządzania.
- Używane, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_management_client_key
- Klucz prywatny odpowiadający certyfikatowi klienta.
- Używane, jeśli ustawione jest jedno lub więcej z tych parametrów:
rabbitmq_exchanges_to_create
rabbitmq_exchanges_to_delete
rabbitmq_bindings_to_create
rabbitmq_bindings_to_delete
- Nie zapomnij skonfigurować rabbitmq_management, aby tylko zezwolić na połączenia z localhost, jeśli to konieczne
rabbitmq_plugins_to_enable
lista wtyczek do włączenia
przykład:
rabbitmq_plugins_to_enable: - rabbitmq_management - rabbitmq_shovel
rabbitmq_plugins_to_disable
lista wtyczek do wyłączenia
przykład:
rabbitmq_plugins_to_disable: - rabbitmq_shovel
rabbitmq_vhosts_to_create
lista słowników do tworzenia vhostów
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
Przykład:
rabbitmq_vhosts_to_create: - name: vhost_test tracing: yes
rabbitmq_vhosts_to_delete
lista vhostów do usunięcia
Przykład:
rabbitmq_vhosts_to_delete: - /
rabbitmq_queues_to_create
lista kolejek do utworzenia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_queues_to_create: - name: queue_test vhost: vhost_test
rabbitmq_queues_to_delete
lista kolejek do usunięcia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_queues_to_delete: - name: queue_test vhost: vhost_test
rabbitmq_exchanges_to_create
lista wymian do utworzenia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_exchanges_to_create: - name: exchange_test vhost: vhost_test
rabbitmq_exchanges_to_delete
lista wymian do usunięcia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_exchanges_to_delete: - name: exchange_test vhost: vhost_test
rabbitmq_bindings_to_create
lista powiązań do utworzenia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_bindings_to_create: - name: exchange_test destination: queue_test destination_type: queue vhost: vhost_test
rabbitmq_bindings_to_delete
lista powiązań do usunięcia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_bindings_to_delete: - name: exchange_test destination: queue_test destination_type: queue vhost: vhost_test
rabbitmq_policies_to_create
lista polityk do utworzenia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_policies_to_create: - name: HA vhost: vhost_test pattern: .* tags: ha-mode: all
rabbitmq_policies_to_delete
lista polityk do usunięcia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_policies_to_delete: - name: HA vhost: vhost_test
rabbitmq_parameters_to_create
lista parametrów do utworzenia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
value
zostanie skonwertowany na json w zadaniuprzykład:
rabbitmq_parameters_to_create: - name: federation-test component: federation-upstream value: uri: amqp://admin:admin@localhost prefetch-count: 1 vhost: vhost_test
rabbitmq_parameters_to_delete
lista parametrów do usunięcia
odniesienie do dokumentacji ansible w celu uzyskania obligatoryjnych opcji i kompatybilności wersji
przykład:
rabbitmq_parameters_to_delete: - component: federation name: local-username
rabbitmq_hide_log
- domyślnie: true
- nie pokazuj logów dla wywołań API, aby uniknąć ujawnienia wrażliwych informacji
- ustaw na false dla debugowania
Przykładowy Playbook
Samodzielny
- hosts: rabbitmq
roles:
- rockandska.erlang
- rockandska.rabbitmq
Klaster
Ponieważ wymaga uruchomienia węzła master przed dołączeniem niewolników, wdrożenie klastra należy wykonać w dwóch krokach.
- hosts: rabbitmq-master
roles:
- role: rockandska.erlang
- role: rockandska.rabbitmq
vars:
rabbitmq_is_master: true
- hosts: rabbitmq-slave
roles:
- role: rockandska.erlang
- role: rockandska.rabbitmq
vars:
rabbitmq_slave_of: rabbitmq-master
Testowanie lokalne
Wymagania
python3 <3.8 docker
Uruchom testy
$ make test
Po pierwszym uruchomieniu dostępne powinny być dodatkowe cele dla każdego środowiska tox/molecule poprzez autouzupełnianie.
Aby debugować i uruchomić niestandardowe polecenie molecule w niestandardowym środowisku z tylko domyślnym scenariuszem testowym:
$ source tmp/bin/activate
$ tox -e py3-ansible27 -- molecule test -s default
Aby uzyskać więcej informacji o molecule, przejdź do ich dokumentacji.
Jeśli chcesz uruchomić testy na zdalnym hoście dockerowym, po prostu określ zmienną DOCKER_HOST
przed uruchomieniem testów tox.
Licencja
BSD
ansible-galaxy install rockandska.rabbitmq