Andrew Block
2018-08-27 be5ef34d861af5f7c7e4363f1a090ff609839ae7
Added support for credentials and creating a job template
3 files modified
115 ■■■■ changed files
ansible/configs/ansible-cicd-lab/env_vars.yml 4 ●●● patch | view | raw | blame | history
ansible/configs/ansible-cicd-lab/post_software.yml 2 ●●●●● patch | view | raw | blame | history
ansible/configs/ansible-cicd-lab/tower_setup.yml 109 ●●●● patch | view | raw | blame | history
ansible/configs/ansible-cicd-lab/env_vars.yml
@@ -273,4 +273,6 @@
tower_project_scm: git
tower_project_scm_url: https://github.com/redhat-cop/automate-cicd
tower_inventory_name: Acme
tower_job_template_name: Acme
tower_job_template_name: Acme
tower_credential_name: Acme
tower_job_template_playbook: hackathons/rhte-2018-emea/ansible-role-httpd/tests/test.yml
ansible/configs/ansible-cicd-lab/post_software.yml
@@ -36,6 +36,8 @@
    - configure_tower
  tasks:
    - include_tasks: tower_setup.yml
      vars:
        bastion_host: "{{ groups['bastion'][0] }}"
- name: PostSoftware flight-check
  hosts: localhost
ansible/configs/ansible-cicd-lab/tower_setup.yml
@@ -144,8 +144,75 @@
    lab_host: "{{ item }}"
    inventory_id: "{{ tower_inventory_id }}"
# TODO: Configure Credential
# TODO: Create Job Template
- name: Determine if Credential Exists
  uri:
    url: "https://{{ ansible_tower_ip }}/api/v2/credentials?name={{ tower_credential_name }}"
    method: GET
    user: "{{tower_admin}}"
    password: "{{tower_admin_password}}"
    validate_certs: False
    status_code:
    - 200
  register: response
  changed_when: false
- name: Obtain SSH Key
  become: true
  slurp:
    src: "/root/.ssh/{{ guid }}key.pem"
  register: credential_ssh_key
  no_log: True
  delegate_to: "{{ bastion_host }}"
  when: response.json.count == 0
- name: Create Credential
  uri:
    url: "https://{{ ansible_tower_ip }}/api/v2/credentials/"
    method: POST
    user: "{{tower_admin}}"
    password: "{{tower_admin_password}}"
    validate_certs: False
    body:
      name: "{{ tower_inventory_name }}"
      organization: "{{ tower_org_id }}"
      credential_type: 1
      ssh_key_data: "{{ credential_ssh_key.content | b64decode }}"
    body_format: json
    no_log: True
    status_code:
    - 201
  register: response
  changed_when: response.status == 201
  when: response.json.count == 0
- name: Get Credential
  uri:
    url: "https://{{ ansible_tower_ip }}/api/v2/credentials?name={{ tower_credential_name }}"
    method: GET
    user: "{{tower_admin}}"
    password: "{{tower_admin_password}}"
    validate_certs: False
    status_code:
    - 200
  register: response
  changed_when: false
- name: Set Credential ID
  set_fact:
    tower_credential_id: "{{ response.json | json_query('results[*].id') | first | int }}"
- name: Get Inventory
  uri:
    url: "https://{{ ansible_tower_ip }}/api/v2/inventories?name={{ tower_inventory_name }}"
    method: GET
    user: "{{tower_admin}}"
    password: "{{tower_admin_password}}"
    validate_certs: False
    status_code:
    - 200
  register: response
  changed_when: false
- name: Determine if Job Template Exists
  uri:
    url: "https://{{ ansible_tower_ip }}/api/v2/job_templates?name={{ tower_job_template_name }}"
@@ -158,21 +225,23 @@
  register: response
  changed_when: false
#    - name: Create Job Template
#      uri:
#        url: "https://{{ ansible_tower_ip }}/api/v2/job_templates/"
#        method: POST
#        user: "{{tower_admin}}"
#        password: "{{tower_admin_password}}"
#        validate_certs: False
#        body:
#          name: "{{ tower_job_template_name }}"
#          organization: "{{ tower_org_id }}"
#          project: "{{ tower_project_id }}"
#          inventory: "{{ tower_inventory_id }}"
#        body_format: json
#        status_code:
#        - 201
#      register: response
#      changed_when: response.status == 201
#      when: response.json.count == 0
- name: Create Job Template
  uri:
    url: "https://{{ ansible_tower_ip }}/api/v2/job_templates/"
    method: POST
    user: "{{tower_admin}}"
    password: "{{tower_admin_password}}"
    validate_certs: False
    body:
      name: "{{ tower_job_template_name }}"
      organization: "{{ tower_org_id }}"
      project: "{{ tower_project_id }}"
      inventory: "{{ tower_inventory_id }}"
      credential: "{{ tower_credential_id }}"
      playbook: "{{ tower_job_template_playbook }}"
    body_format: json
    status_code:
    - 201
  register: response
  changed_when: response.status == 201
  when: response.json.count == 0