mirror of
https://github.com/ansible/awx-operator.git
synced 2026-03-26 21:33:14 +00:00
141 lines
4.8 KiB
YAML
141 lines
4.8 KiB
YAML
---
|
|
# TODO: For some reason prepare is not run after a destroy in the Minikube env.
|
|
- import_playbook: ../default/prepare.yml
|
|
|
|
- name: Build Operator in Minikube
|
|
hosts: localhost
|
|
connection: local
|
|
|
|
vars:
|
|
image_name: awx.ansible.com/awx-operator:testing
|
|
|
|
tasks:
|
|
# Use raw Docker commands inside Minikube to avoid extra Python dependencies.
|
|
- name: Get existing image hash
|
|
shell: |
|
|
eval $(minikube docker-env)
|
|
docker images -q {{ image_name }}
|
|
register: prev_hash
|
|
changed_when: false
|
|
|
|
- name: Build Operator Image
|
|
shell: |
|
|
eval $(minikube docker-env)
|
|
docker build -f ../../build/Dockerfile -t {{ image_name }} ../..
|
|
register: build_cmd
|
|
changed_when: not prev_hash.stdout or (prev_hash.stdout and prev_hash.stdout not in ''.join(build_cmd.stdout_lines[-2:]))
|
|
|
|
- name: Converge
|
|
hosts: localhost
|
|
connection: local
|
|
|
|
vars:
|
|
ansible_python_interpreter: '{{ ansible_playbook_python }}'
|
|
deploy_dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/deploy"
|
|
templates_dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/ansible/templates"
|
|
pull_policy: Never
|
|
operator_image: awx.ansible.com/awx-operator
|
|
operator_version: testing
|
|
ansible_debug_logs: "true"
|
|
# Change this to _awx to test AWX, _tower to test Tower.
|
|
custom_resource: "{{ lookup('file', '/'.join([deploy_dir, 'crds/awx_v1beta1_molecule.yaml'])) | from_yaml }}"
|
|
|
|
tasks:
|
|
- block:
|
|
- name: Delete the Operator Deployment
|
|
k8s:
|
|
state: absent
|
|
namespace: '{{ operator_namespace }}'
|
|
definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) }}"
|
|
register: delete_deployment
|
|
when: build_cmd.changed
|
|
|
|
- name: Wait 30s for Operator Deployment to terminate
|
|
k8s_info:
|
|
api_version: '{{ definition.apiVersion }}'
|
|
kind: '{{ definition.kind }}'
|
|
namespace: '{{ operator_namespace }}'
|
|
name: '{{ definition.metadata.name }}'
|
|
vars:
|
|
definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) | from_yaml }}"
|
|
register: deployment
|
|
until: not deployment.resources
|
|
delay: 3
|
|
retries: 10
|
|
when: delete_deployment.changed
|
|
|
|
- name: Create the Operator Deployment
|
|
k8s:
|
|
namespace: '{{ operator_namespace }}'
|
|
definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) }}"
|
|
|
|
- name: Ensure the AWX custom_resource namespace exists
|
|
k8s:
|
|
state: present
|
|
name: '{{ custom_resource.metadata.namespace }}'
|
|
kind: Namespace
|
|
api_version: v1
|
|
|
|
- name: Create the AWX Custom Resource
|
|
k8s:
|
|
state: present
|
|
namespace: '{{ custom_resource.metadata.namespace }}'
|
|
definition: '{{ custom_resource }}'
|
|
|
|
- name: Wait 15m for reconciliation to run
|
|
k8s_info:
|
|
api_version: '{{ custom_resource.apiVersion }}'
|
|
kind: '{{ custom_resource.kind }}'
|
|
namespace: '{{ custom_resource.metadata.namespace }}'
|
|
name: '{{ custom_resource.metadata.name }}'
|
|
register: cr
|
|
until:
|
|
- "'Successful' in (cr | json_query('resources[].status.conditions[].reason'))"
|
|
delay: 6
|
|
retries: 150
|
|
|
|
rescue:
|
|
|
|
- name: debug cr
|
|
ignore_errors: yes # noqa ignore-errors
|
|
failed_when: false
|
|
debug:
|
|
var: debug_cr
|
|
vars:
|
|
debug_cr: '{{ lookup("k8s",
|
|
kind=custom_resource.kind,
|
|
api_version=custom_resource.apiVersion,
|
|
namespace=custom_resource.metadata.namespace,
|
|
resource_name=custom_resource.metadata.name)
|
|
}}'
|
|
|
|
- name: debug awx deployment
|
|
ignore_errors: yes # noqa ignore-errors
|
|
failed_when: false
|
|
debug:
|
|
var: deploy
|
|
vars:
|
|
deploy: '{{ lookup("k8s",
|
|
kind="Deployment",
|
|
api_version="apps/v1",
|
|
namespace=custom_resource.metadata.namespace,
|
|
label_selector="app.kubernetes.io/name=example-awx")
|
|
}}'
|
|
|
|
- name: get operator logs
|
|
ignore_errors: yes
|
|
failed_when: false
|
|
command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ operator_namespace }} -c operator
|
|
vars:
|
|
definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) | from_yaml }}"
|
|
register: log
|
|
|
|
- name: print debug output
|
|
debug: var=log.stdout_lines
|
|
|
|
- name: fail if converge didn't succeed
|
|
fail:
|
|
msg: "Failed on action: converge"
|
|
|
|
- import_playbook: '{{ playbook_dir }}/../default/asserts.yml'
|