From f859b1e47fa78dede239e392eea45cbf82706c36 Mon Sep 17 00:00:00 2001 From: Ricardo Carrillo Cruz Date: Fri, 17 Jun 2016 10:48:36 +0000 Subject: [PATCH] Make services optional Some users will use infra-ansible for 3rd party, some others will want a minimal infra with Gerrit. Moreover, some services are going away with the advent of Zuul v3. As such, make the services definitions optional, so users can really define what they want for the deploy. Also, reworked the services to be a list, to be more easily loopable with Ansible with_subelements. Change-Id: I0097bf4d90350fbe53b94e27b2036d4b8083263a --- infra_config.yml.sample | 20 +++-- .../tasks/main.yml | 80 +++++++++++-------- 2 files changed, 60 insertions(+), 40 deletions(-) diff --git a/infra_config.yml.sample b/infra_config.yml.sample index 2660430..55601f9 100644 --- a/infra_config.yml.sample +++ b/infra_config.yml.sample @@ -1,10 +1,14 @@ --- services: - puppetmaster: - - name: puppetmaster.infra.test - gerrit: - - name: gerrit.infra.test - zuul: - - name: zuul.infra.test - nodepool: - - name: nodepool.infra.test + - name: puppetmaster + hosts: + - puppetmaster.infra.test + - name: gerrit + hosts: + - gerrit.infra.test + - name: zuul + hosts: + - zuul.infra.test + - name: jenkins + hosts: + - jenkins.infra.test diff --git a/roles/generate_infra_dynamic_groups/tasks/main.yml b/roles/generate_infra_dynamic_groups/tasks/main.yml index 68f01ae..4d8d96f 100644 --- a/roles/generate_infra_dynamic_groups/tasks/main.yml +++ b/roles/generate_infra_dynamic_groups/tasks/main.yml @@ -1,36 +1,52 @@ --- -- name: Get Puppetmaster server name from infra config - set_fact: puppetmaster_name={{ services['puppetmaster'][0]['name'] }} -- name: Get Puppetmaster server UUID from dynamic inventory - set_fact: puppetmaster_uuid={{ groups[puppetmaster_name][0] }} -- name: Get Puppetmaster server IP - set_fact: puppetmaster_ip={{ hostvars[puppetmaster_uuid]['openstack']['public_v4'] }} -- name: Add "{{ puppetmaster_name }}" to infra and puppetmaster groups and set inventory IP - add_host: name={{ puppetmaster_name }} ansible_ssh_host={{ puppetmaster_ip }} groups=infra,puppetmaster +- name: Get Puppetmaster service definition from infra config + set_fact: puppetmaster_service={{ services | selectattr('name', 'equalto', 'puppetmaster') | list }} +- block: + - name: Get Puppetmaster server name + set_fact: puppetmaster_name={{ puppetmaster_service[0]['hosts'][0] }} + - name: Get Puppetmaster server UUID from dynamic inventory + set_fact: puppetmaster_uuid={{ groups[puppetmaster_name][0] }} + - name: Get Puppetmaster server IP + set_fact: puppetmaster_ip={{ hostvars[puppetmaster_uuid]['openstack']['public_v4'] }} + - name: Add "{{ puppetmaster_name }}" to infra and puppetmaster group and set inventory IP + add_host: name={{ puppetmaster_name }} ansible_ssh_host={{ puppetmaster_ip }} groups=infra,puppetmaster + when: puppetmaster_service -- name: Get Gerrit server name from infra config - set_fact: gerrit_name={{ services['gerrit'][0]['name'] }} -- name: Get Gerrit server UUID from dynamic inventory - set_fact: gerrit_uuid={{ groups[gerrit_name][0] }} -- name: Get Gerrit server IP - set_fact: gerrit_ip={{ hostvars[gerrit_uuid]['openstack']['public_v4'] }} -- name: Add "{{ gerrit_name }}" to infra and gerrit groups and set inventory IP - add_host: name={{ gerrit_name }} ansible_ssh_host={{ gerrit_ip }} groups=infra,gerrit +- name: Get Gerrit service definition from infra config + set_fact: gerrit_service={{ services | selectattr('name', 'equalto', 'gerrit') | list }} +- block: + - name: Get Gerrit server name from infra config + set_fact: gerrit_name={{ gerrit_service[0]['hosts'][0] }} + - name: Get Gerrit server UUID from dynamic inventory + set_fact: gerrit_uuid={{ groups[gerrit_name][0] }} + - name: Get Gerrit server IP + set_fact: gerrit_ip={{ hostvars[gerrit_uuid]['openstack']['public_v4'] }} + - name: Add "{{ gerrit_name }}" to infra and gerrit groups and set inventory IP + add_host: name={{ gerrit_name }} ansible_ssh_host={{ gerrit_ip }} groups=infra,gerrit + when: gerrit_service -- name: Get Zuul server name from infra config - set_fact: zuul_name={{ services['zuul'][0]['name'] }} -- name: Get Zuul server UUID from dynamic inventory - set_fact: zuul_uuid={{ groups[zuul_name][0] }} -- name: Get Zuul server IP - set_fact: zuul_ip={{ hostvars[zuul_uuid]['openstack']['public_v4'] }} -- name: Add "{{ zuul_name }}" to infra and zuul groups and set inventory IP - add_host: name={{ zuul_name }} ansible_ssh_host={{ zuul_ip }} groups=infra,zuul +- name: Get Zuul service definition from infra config + set_fact: zuul_service={{ services | selectattr('name', 'equalto', 'zuul') | list }} +- block: + - name: Get Zuul server name from infra config + set_fact: zuul_name={{ zuul_service[0]['hosts'][0] }} + - name: Get Zuul server UUID from dynamic inventory + set_fact: zuul_uuid={{ groups[zuul_name][0] }} + - name: Get Zuul server IP + set_fact: zuul_ip={{ hostvars[zuul_uuid]['openstack']['public_v4'] }} + - name: Add "{{ zuul_name }}" to infra and zuul groups and set inventory IP + add_host: name={{ zuul_name }} ansible_ssh_host={{ zuul_ip }} groups=infra,zuul + when: zuul_service -- name: Get Jenkins server name from infra config - set_fact: jenkins_name={{ services['jenkins'][0]['name'] }} -- name: Get Jenkins server UUID from dynamic inventory - set_fact: jenkins_uuid={{ groups[jenkins_name][0] }} -- name: Get Jenkins server IP - set_fact: jenkins_ip={{ hostvars[jenkins_uuid]['openstack']['public_v4'] }} -- name: Add "{{ jenkins_name }}" to infra and jenkins groups and set inventory IP - add_host: name={{ jenkins_name }} ansible_ssh_host={{ jenkins_ip }} groups=infra,jenkins +- name: Get Jenkins service definition from infra config + set_fact: jenkins_service={{ services | selectattr('name', 'equalto', 'jenkins') | list }} +- block: + - name: Get Jenkins server name from infra config + set_fact: jenkins_name={{ jenkins_service[0]['hosts'][0] }} + - name: Get Jenkins server UUID from dynamic inventory + set_fact: jenkins_uuid={{ groups[jenkins_name][0] }} + - name: Get Jenkins server IP + set_fact: jenkins_ip={{ hostvars[jenkins_uuid]['openstack']['public_v4'] }} + - name: Add "{{ jenkins_name }}" to infra and jenkins groups and set inventory IP + add_host: name={{ jenkins_name }} ansible_ssh_host={{ jenkins_ip }} groups=infra,jenkins + when: jenkins_service