From 2646650f35c957a6f135e7032856827b55febf6d Mon Sep 17 00:00:00 2001 From: caoyuan Date: Mon, 9 Jan 2017 11:22:53 +0800 Subject: [PATCH] Move rabbitmq precheck into its own role Change-Id: Iab182674f17f21322c88e6f7a728fb534168eb25 Partially-implements: blueprint condition-pre-check --- ansible/roles/haproxy/tasks/precheck.yml | 11 ++++ ansible/roles/prechecks/tasks/port_checks.yml | 63 ------------------- ansible/roles/rabbitmq/tasks/precheck.yml | 56 +++++++++++++++++ 3 files changed, 67 insertions(+), 63 deletions(-) diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml index c287c1c6e8..efb49ac369 100644 --- a/ansible/roles/haproxy/tasks/precheck.yml +++ b/ansible/roles/haproxy/tasks/precheck.yml @@ -280,6 +280,17 @@ - nova_console == 'spice' - inventory_hostname in groups['haproxy'] +- name: Checking free port for RabbitMQ Management HAProxy + wait_for: + host: "{{ kolla_internal_vip_address }}" + port: "{{ rabbitmq_management_port }}" + connect_timeout: 1 + state: stopped + when: + - enable_rabbitmq | bool + - "{{ 'rabbitmq_management' not in haproxy_stat }}" + - inventory_hostname in groups['haproxy'] + - name: Checking free port for Sahara API HAProxy wait_for: host: "{{ kolla_internal_vip_address }}" diff --git a/ansible/roles/prechecks/tasks/port_checks.yml b/ansible/roles/prechecks/tasks/port_checks.yml index 2aa15f0dd2..dcba40e442 100644 --- a/ansible/roles/prechecks/tasks/port_checks.yml +++ b/ansible/roles/prechecks/tasks/port_checks.yml @@ -173,69 +173,6 @@ - enable_mariadb | bool - inventory_hostname in groups['mariadb'] -- name: Checking free port for RabbitMQ - wait_for: - host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" - port: "{{ rabbitmq_port }}" - connect_timeout: 1 - state: stopped - when: - - enable_rabbitmq | bool - - inventory_hostname in groups['rabbitmq'] - -- name: Checking free port for RabbitMQ Management - wait_for: - host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" - port: "{{ rabbitmq_management_port }}" - connect_timeout: 1 - state: stopped - when: - - enable_rabbitmq | bool - - inventory_hostname in groups['rabbitmq'] - -- name: Checking free port for RabbitMQ Management HAProxy - wait_for: - host: "{{ kolla_internal_vip_address }}" - port: "{{ rabbitmq_management_port }}" - connect_timeout: 1 - state: stopped - when: - - enable_rabbitmq | bool - - inventory_hostname in groups['haproxy'] - -- name: Checking free port for RabbitMQ Cluster - wait_for: - host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" - port: "{{ rabbitmq_cluster_port }}" - connect_timeout: 1 - state: stopped - when: - - enable_rabbitmq | bool - - inventory_hostname in groups['rabbitmq'] - -- name: Checking free port for RabbitMQ EPMD - wait_for: - host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" - port: "{{ rabbitmq_epmd_port }}" - connect_timeout: 1 - state: stopped - when: - - enable_rabbitmq | bool - - inventory_hostname in groups['rabbitmq'] - -- name: Check if all rabbit hostnames are resolvable - command: "getent ahostsv4 {{ hostvars[item]['ansible_hostname'] }}" - changed_when: false - register: rabbitmq_hostnames - with_items: "{{ groups['rabbitmq'] }}" - when: enable_rabbitmq | bool - -- fail: msg="Hostname has to resolve to IP address of api_interface" - with_items: "{{ rabbitmq_hostnames.results }}" - when: - - "'{{ hostvars[item['item']]['ansible_' + hostvars[item['item']]['api_interface']]['ipv4']['address'] }}' not in '{{ item.stdout }}'" - - enable_rabbitmq | bool - - name: Checking free port for Mongodb wait_for: host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" diff --git a/ansible/roles/rabbitmq/tasks/precheck.yml b/ansible/roles/rabbitmq/tasks/precheck.yml index ed97d539c0..e125fb4de5 100644 --- a/ansible/roles/rabbitmq/tasks/precheck.yml +++ b/ansible/roles/rabbitmq/tasks/precheck.yml @@ -1 +1,57 @@ --- +- name: Get container facts + kolla_container_facts: + name: + - rabbitmq + register: container_facts + +- name: Checking free port for RabbitMQ + wait_for: + host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" + port: "{{ rabbitmq_port }}" + connect_timeout: 1 + state: stopped + when: + - container_facts['rabbitmq'] is not defined + - inventory_hostname in groups['rabbitmq'] + +- name: Checking free port for RabbitMQ Management + wait_for: + host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" + port: "{{ rabbitmq_management_port }}" + connect_timeout: 1 + state: stopped + when: + - container_facts['rabbitmq'] is not defined + - inventory_hostname in groups['rabbitmq'] + +- name: Checking free port for RabbitMQ Cluster + wait_for: + host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" + port: "{{ rabbitmq_cluster_port }}" + connect_timeout: 1 + state: stopped + when: + - container_facts['rabbitmq'] is not defined + - inventory_hostname in groups['rabbitmq'] + +- name: Checking free port for RabbitMQ EPMD + wait_for: + host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" + port: "{{ rabbitmq_epmd_port }}" + connect_timeout: 1 + state: stopped + when: + - container_facts['rabbitmq'] is not defined + - inventory_hostname in groups['rabbitmq'] + +- name: Check if all rabbit hostnames are resolvable + command: "getent ahostsv4 {{ hostvars[item]['ansible_hostname'] }}" + changed_when: false + register: rabbitmq_hostnames + with_items: "{{ groups['rabbitmq'] }}" + +- fail: msg="Hostname has to resolve to IP address of api_interface" + with_items: "{{ rabbitmq_hostnames.results }}" + when: + - "'{{ hostvars[item['item']]['ansible_' + hostvars[item['item']]['api_interface']]['ipv4']['address'] }}' not in '{{ item.stdout }}'"