如何使用ANSIBLE在遠端主機上建立RabbitMQ

banq發表於2019-01-08

如果您考慮透過RabbitMQ實現更大規模的AMQP基礎架構,那麼肯定會嘗試使用Ansible作為基礎架構部署者,因為Ansible的RabbitMQ模組非常容易使用,讓我們舉個例子。

任務:
使用名稱:ansible_exchange建立DIRECT交換,ansible_exchange繫結兩個佇列myRemoteQueue1 和myRemoteQueue2,路由鍵為key1和key2。

讓我們為這個任務來建立用於基礎設施的部署容易ansible角色:

../roles/create_infra/tasks/main.yml

# Create exchange on remote host
- rabbitmq_exchange:
    name: ansible_exchange
    type: direct
    login_user: guest
    login_password: guest
    login_port: 15672

# Create a queues on remote host
- rabbitmq_queue:
    name: "{{item}}"
    login_user: guest
    login_password: guest
    login_host: localhost
    login_port: 15672
with_items:
    - myRemoteQueue1
    - myRemoteQueue2

- rabbitmq_binding:
    name: ansible_exchange
    destination: myRemoteQueue1
    type: queue
    routing_key: key1

- rabbitmq_binding:
    name: ansible_exchange
    destination: myRemoteQueue2
    type: queue
    routing_key: key2


並使用簡單的基本劇本啟動此角色:

infra.yml:

-  hosts:localhost 
    gather_facts:false 
    roles:
        -  create_infra


我相信create_infra的任務程式碼是selfexplanatory,有關更多資訊,請參閱以下內容:

http://docs.ansible.com/ansible/latest/rabbitmq_exchange_module.html http://docs.ansible.com/ansible/latest/rabbitmq_binding_module.html http://docs.ansible.com/ansible/latest/rabbitmq_queue_module.html


現在讓我們來啟動infra.yml playbook:

$ ansible-playbook infra.yml

PLAY [localhost] ********************************************************************************************************************************************************************

TASK [create_infra : rabbitmq_exchange] *********************************************************************************************************************************************
changed: [localhost]

TASK [create_infra : rabbitmq_queue] ************************************************************************************************************************************************
ok: [localhost] => (item=myRemoteQueue1)
ok: [localhost] => (item=myRemoteQueue2)

TASK [create_infra : rabbitmq_binding] **********************************************************************************************************************************************
changed: [localhost]

TASK [create_infra : rabbitmq_binding] **********************************************************************************************************************************************
changed: [localhost]

PLAY RECAP **************************************************************************************************************************************************************************
localhost                  : ok=4    changed=3    unreachable=0    failed=0



並檢查劇本是否符合我們的要求:

exchange建立驗證:

$ ./rabbitmqctl list_exchanges | grep "ansible_"
ansible_exchange    direct


佇列建立驗證:

$ ./rabbitmqctl list_queues | grep myRemoteQueue*
myRemoteQueue1  0
myRemoteQueue2  0


繫結建立驗證:

$ ./rabbitmqctl list_bindings | grep ansible_
ansible_exchange    exchange    myRemoteQueue1  queue   key1    []
ansible_exchange    exchange    myRemoteQueue2  queue   key2    []


夥計們,使用Ansible的AMQP模組並享受樂趣!

相關文章