mirror of
https://github.com/ansible/awx.git
synced 2026-01-29 23:34:42 -03:30
383 lines
10 KiB
YAML
383 lines
10 KiB
YAML
---
|
|
- name: Generate a random string for test
|
|
set_fact:
|
|
test_id: "{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
|
|
|
|
- name: generate random string for schedule
|
|
set_fact:
|
|
org_name: "AWX-Collection-tests-organization-org-{{ test_id }}"
|
|
sched1: "AWX-Collection-tests-schedule-sched1-{{ test_id }}"
|
|
sched2: "AWX-Collection-tests-schedule-sched2-{{ test_id }}"
|
|
cred1: "AWX-Collection-tests-schedule-cred1-{{ test_id }}"
|
|
proj1: "AWX-Collection-tests-schedule-proj1-{{ test_id }}"
|
|
proj2: "AWX-Collection-tests-schedule-proj2-{{ test_id }}"
|
|
jt1: "AWX-Collection-tests-schedule-jt1-{{ test_id }}"
|
|
jt2: "AWX-Collection-tests-schedule-jt1-{{ test_id }}"
|
|
ee1: "AWX-Collection-tests-schedule-ee1-{{ test_id }}"
|
|
label1: "AWX-Collection-tests-schedule-l1-{{ test_id }}"
|
|
label2: "AWX-Collection-tests-schedule-l2-{{ test_id }}"
|
|
ig1: "AWX-Collection-tests-schedule-ig1-{{ test_id }}"
|
|
ig2: "AWX-Collection-tests-schedule-ig2-{{ test_id }}"
|
|
slice_inventory: "AWX-Collection-tests-schedule-slice-inv-{{ test_id }}"
|
|
host_name: "AWX-Collection-tests-schedule-host-{{ test_id }}"
|
|
slice_num: 10
|
|
|
|
- block:
|
|
- name: Try to create without an rrule
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
state: present
|
|
unified_job_template: "Demo Job Template"
|
|
enabled: true
|
|
register: result
|
|
ignore_errors: true
|
|
|
|
- assert:
|
|
that:
|
|
- result is failed
|
|
- "'Unable to create schedule {{ sched1 }}' in result.msg"
|
|
|
|
- name: Create with options that the JT does not support
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
state: present
|
|
unified_job_template: "Demo Job Template"
|
|
rrule: "DTSTART:20191219T130551Z RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1"
|
|
description: "This hopefully will not work"
|
|
extra_data:
|
|
some: var
|
|
inventory: Demo Inventory
|
|
scm_branch: asdf1234
|
|
job_type: run
|
|
job_tags: other_tags
|
|
skip_tags: some_tags
|
|
limit: node1
|
|
diff_mode: true
|
|
verbosity: 4
|
|
enabled: true
|
|
register: result
|
|
ignore_errors: true
|
|
|
|
- assert:
|
|
that:
|
|
- result is failed
|
|
- "'Unable to create schedule {{ sched1 }}' in result.msg"
|
|
|
|
- name: Build a real schedule
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
state: present
|
|
unified_job_template: "Demo Job Template"
|
|
rrule: "DTSTART:20191219T130551Z RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1"
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is changed
|
|
|
|
- name: Rebuild the same schedule
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
state: present
|
|
unified_job_template: "Demo Job Template"
|
|
rrule: "DTSTART:20191219T130551Z RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1"
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is not changed
|
|
|
|
- name: Create a Demo Project
|
|
project:
|
|
name: "{{ proj1 }}"
|
|
organization: Default
|
|
allow_override: true
|
|
state: present
|
|
scm_type: git
|
|
scm_url: https://github.com/ansible/ansible-tower-samples.git
|
|
|
|
- name: "Create a new organization"
|
|
organization:
|
|
name: "{{ org_name }}"
|
|
|
|
- name: Create a Demo Project in another org
|
|
project:
|
|
name: "{{ proj2 }}"
|
|
organization: "{{ org_name }}"
|
|
allow_override: true
|
|
state: present
|
|
scm_type: git
|
|
scm_url: https://github.com/ansible/ansible-tower-samples.git
|
|
|
|
- name: Create Credential1
|
|
credential:
|
|
name: "{{ cred1 }}"
|
|
organization: Default
|
|
credential_type: Red Hat Ansible Automation Platform
|
|
register: cred1_result
|
|
|
|
- name: Create Job Template with all prompts
|
|
job_template:
|
|
name: "{{ jt1 }}"
|
|
organization: Default
|
|
project: "{{ proj1 }}"
|
|
inventory: Demo Inventory
|
|
playbook: hello_world.yml
|
|
ask_variables_on_launch: true
|
|
ask_inventory_on_launch: true
|
|
ask_scm_branch_on_launch: true
|
|
ask_credential_on_launch: true
|
|
ask_job_type_on_launch: true
|
|
ask_tags_on_launch: true
|
|
ask_skip_tags_on_launch: true
|
|
ask_limit_on_launch: true
|
|
ask_diff_mode_on_launch: true
|
|
ask_verbosity_on_launch: true
|
|
ask_execution_environment_on_launch: true
|
|
ask_forks_on_launch: true
|
|
ask_instance_groups_on_launch: true
|
|
ask_job_slice_count_on_launch: true
|
|
ask_labels_on_launch: true
|
|
ask_timeout_on_launch: true
|
|
job_type: run
|
|
state: present
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- "result is changed"
|
|
|
|
- name: Create labels
|
|
label:
|
|
name: "{{ item }}"
|
|
organization: "{{ org_name }}"
|
|
loop:
|
|
- "{{ label1 }}"
|
|
- "{{ label2 }}"
|
|
|
|
- name: Create an execution environment
|
|
execution_environment:
|
|
name: "{{ ee1 }}"
|
|
image: "junk"
|
|
|
|
- name: Create instance groups
|
|
instance_group:
|
|
name: "{{ item }}"
|
|
loop:
|
|
- "{{ ig1 }}"
|
|
- "{{ ig2 }}"
|
|
|
|
- name: Create proper inventory for slice count
|
|
inventory:
|
|
name: "{{ slice_inventory }}"
|
|
organization: "{{ org_name }}"
|
|
state: present
|
|
register: result
|
|
|
|
- name: Create a Host
|
|
host:
|
|
name: "{{ host_name }}-{{ item }}"
|
|
inventory: "{{ slice_inventory }}"
|
|
state: present
|
|
variables:
|
|
ansible_connection: local
|
|
loop: "{{ range(slice_num)|list }}"
|
|
register: result
|
|
|
|
- name: Create with options that the JT does support
|
|
schedule:
|
|
name: "{{ sched2 }}"
|
|
state: present
|
|
unified_job_template: "{{ jt1 }}"
|
|
rrule: "DTSTART:20191219T130551Z RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1"
|
|
description: "This hopefully will work"
|
|
extra_data:
|
|
some: var
|
|
inventory: "{{ slice_inventory }}"
|
|
scm_branch: asdf1234
|
|
credentials:
|
|
- "{{ cred1 }}"
|
|
job_type: run
|
|
job_tags: other_tags
|
|
skip_tags: some_tags
|
|
limit: node1
|
|
diff_mode: true
|
|
verbosity: 4
|
|
enabled: true
|
|
execution_environment: "{{ ee1 }}"
|
|
forks: 10
|
|
instance_groups:
|
|
- "{{ ig1 }}"
|
|
- "{{ ig2 }}"
|
|
job_slice_count: "{{ slice_num }}"
|
|
labels:
|
|
- "{{ label1 }}"
|
|
- "{{ label2 }}"
|
|
timeout: 10
|
|
register: result
|
|
ignore_errors: true
|
|
|
|
- assert:
|
|
that:
|
|
- "result is changed"
|
|
|
|
- name: Reset some options
|
|
schedule:
|
|
name: "{{ sched2 }}"
|
|
state: present
|
|
execution_environment: ""
|
|
forks: 1
|
|
instance_groups: []
|
|
job_slice_count: 1
|
|
labels: []
|
|
timeout: 60
|
|
register: result
|
|
ignore_errors: true
|
|
|
|
- assert:
|
|
that:
|
|
- "result is changed"
|
|
|
|
- name: Disable a schedule
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
unified_job_template: "Demo Job Template"
|
|
state: present
|
|
enabled: "false"
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is changed
|
|
|
|
- name: Create a second Job Template in new org
|
|
job_template:
|
|
name: "{{ jt2 }}"
|
|
project: "{{ proj2 }}"
|
|
inventory: Demo Inventory
|
|
playbook: hello_world.yml
|
|
job_type: run
|
|
state: present
|
|
|
|
- name: Build a schedule with a job template's name in two orgs
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
state: present
|
|
unified_job_template: "{{ jt2 }}"
|
|
rrule: "DTSTART:20191219T130551Z RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1"
|
|
register: result
|
|
|
|
- name: Verify we can't find the schedule without the UJT lookup
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
state: present
|
|
rrule: "DTSTART:20201219T130551Z RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1"
|
|
register: result
|
|
ignore_errors: true
|
|
|
|
- assert:
|
|
that:
|
|
- result is failed
|
|
|
|
- name: Verify we can find the schedule with the UJT lookup and delete it
|
|
schedule:
|
|
name: "{{ sched1 }}"
|
|
state: absent
|
|
unified_job_template: "{{ jt2 }}"
|
|
register: result
|
|
|
|
- assert:
|
|
that:
|
|
- result is changed
|
|
|
|
always:
|
|
- name: Delete the schedules
|
|
schedule:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- "{{ sched1 }}"
|
|
- "{{ sched2 }}"
|
|
ignore_errors: True
|
|
|
|
- name: Delete the jt1
|
|
job_template:
|
|
name: "{{ jt1 }}"
|
|
project: "{{ proj1 }}"
|
|
playbook: hello_world.yml
|
|
state: absent
|
|
ignore_errors: True
|
|
|
|
- name: Delete the jt2
|
|
job_template:
|
|
name: "{{ jt2 }}"
|
|
project: "{{ proj2 }}"
|
|
playbook: hello_world.yml
|
|
state: absent
|
|
ignore_errors: True
|
|
|
|
- name: Delete the Project2
|
|
project:
|
|
name: "{{ proj2 }}"
|
|
organization: "{{ org_name }}"
|
|
state: absent
|
|
scm_type: git
|
|
scm_url: https://github.com/ansible/ansible-tower-samples.git
|
|
ignore_errors: True
|
|
|
|
- name: Delete the Project1
|
|
project:
|
|
name: "{{ proj1 }}"
|
|
organization: Default
|
|
state: absent
|
|
scm_type: git
|
|
scm_url: https://github.com/ansible/ansible-tower-samples.git
|
|
ignore_errors: True
|
|
|
|
- name: Delete Credential1
|
|
credential:
|
|
name: "{{ cred1 }}"
|
|
organization: Default
|
|
credential_type: Red Hat Ansible Automation Platform
|
|
state: absent
|
|
ignore_errors: True
|
|
|
|
# Labels can not be deleted
|
|
|
|
- name: Delete an execution environment
|
|
execution_environment:
|
|
name: "{{ ee1 }}"
|
|
image: "junk"
|
|
state: absent
|
|
ignore_errors: True
|
|
|
|
- name: Delete instance groups
|
|
instance_group:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- "{{ ig1 }}"
|
|
- "{{ ig2 }}"
|
|
ignore_errors: True
|
|
|
|
- name: "Remove the organization"
|
|
organization:
|
|
name: "{{ org_name }}"
|
|
state: absent
|
|
ignore_errors: True
|
|
|
|
- name: "Delete slice inventory"
|
|
inventory:
|
|
name: "{{ slice_inventory }}"
|
|
organization: "{{ org_name }}"
|
|
state: absent
|
|
ignore_errors: True
|
|
|
|
- name: Delete slice hosts
|
|
host:
|
|
name: "{{ host_name }}-{{ item }}"
|
|
inventory: "{{ slice_inventory }}"
|
|
state: absent
|
|
loop: "{{ range(slice_num)|list }}"
|
|
ignore_errors: True
|