diff --git a/build/Dockerfile b/build/Dockerfile index e82b5f1d..61ff7a97 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,8 +1,5 @@ FROM quay.io/operator-framework/ansible-operator:v0.17.0 -# Install kubectl. -COPY --from=lachlanevenson/k8s-kubectl:v1.18.3 /usr/local/bin/kubectl /usr/local/bin/kubectl - # Install Ansible requirements. COPY requirements.yml ${HOME}/requirements.yml RUN ansible-galaxy collection install -r ${HOME}/requirements.yml \ diff --git a/roles/awx/meta/main.yml b/roles/awx/meta/main.yml index fff58871..0b582768 100644 --- a/roles/awx/meta/main.yml +++ b/roles/awx/meta/main.yml @@ -26,3 +26,6 @@ galaxy_info: - deployment dependencies: [] + +collections: + - community.kubernetes diff --git a/roles/awx/tasks/initialize.yml b/roles/awx/tasks/initialize.yml index 64d50292..e0d828ba 100644 --- a/roles/awx/tasks/initialize.yml +++ b/roles/awx/tasks/initialize.yml @@ -1,28 +1,37 @@ --- -- name: Check if there are any AWX super users defined. - shell: >- - kubectl exec -n {{ meta.namespace }} -c {{ meta.name }}-task {{ tower_pod_name }} -- bash -c - "echo 'from django.contrib.auth.models import User; - nsu = User.objects.filter(is_superuser=True).count(); - exit(0 if nsu > 0 else 1)' - | awx-manage shell" +- name: Check if there are any super users defined. + k8s_exec: + namespace: "{{ meta.namespace }}" + pod: "{{ tower_pod_name }}" + container: "{{ meta.name }}-task" + command: >- + bash -c "echo 'from django.contrib.auth.models import User; + nsu = User.objects.filter(is_superuser=True).count(); + exit(0 if nsu > 0 else 1)' + | awx-manage shell" ignore_errors: true register: users_result - changed_when: users_result.rc > 0 + changed_when: users_result.return_code > 0 -- name: Create AWX super user via Django if it doesn't exist. - shell: >- - kubectl exec -n {{ meta.namespace }} -c {{ meta.name }}-task {{ tower_pod_name }} -- bash -c - "echo \"from django.contrib.auth.models import User; - User.objects.create_superuser('{{ tower_admin_user }}', '{{ tower_admin_email }}', '{{ tower_admin_password }}')\" - | awx-manage shell" - when: users_result.rc > 0 +- name: Create super user via Django if it doesn't exist. + k8s_exec: + namespace: "{{ meta.namespace }}" + pod: "{{ tower_pod_name }}" + container: "{{ meta.name }}-task" + command: >- + bash -c "echo \"from django.contrib.auth.models import User; + User.objects.create_superuser('{{ tower_admin_user }}', '{{ tower_admin_email }}', '{{ tower_admin_password }}')\" + | awx-manage shell" + when: users_result.return_code > 0 no_log: true - name: Create preload data if necessary. # noqa 305 - shell: >- - kubectl exec -n {{ meta.namespace }} -c {{ meta.name }}-task {{ tower_pod_name }} -- bash -c - "awx-manage create_preload_data" + k8s_exec: + namespace: "{{ meta.namespace }}" + pod: "{{ tower_pod_name }}" + container: "{{ meta.name }}-task" + command: >- + bash -c "awx-manage create_preload_data" register: cdo changed_when: "'added' in cdo.stdout" when: tower_create_preload_data | bool diff --git a/roles/awx/tasks/main.yml b/roles/awx/tasks/main.yml index 9c0733bc..f8fd6c3b 100644 --- a/roles/awx/tasks/main.yml +++ b/roles/awx/tasks/main.yml @@ -89,22 +89,28 @@ fail_msg: "Could not find the tower pod's name." - name: Check if database is populated (auth_user table exists). - shell: >- - kubectl exec -n {{ meta.namespace }} -c {{ meta.name }}-task {{ tower_pod_name }} -- bash -c - "echo 'from django.db import connection; - tbl = \"auth_user\" in connection.introspection.table_names(); - exit(0 if tbl else 1)' - | awx-manage shell" + k8s_exec: + namespace: "{{ meta.namespace }}" + pod: "{{ tower_pod_name }}" + container: "{{ meta.name }}-task" + command: >- + bash -c "echo 'from django.db import connection; + tbl = \"auth_user\" in connection.introspection.table_names(); + exit(0 if tbl else 1)' + | awx-manage shell" ignore_errors: true changed_when: false register: database_check when: k8s_defs_result is not changed - name: Migrate the database if the K8s resources were updated. # noqa 305 - shell: >- - kubectl exec -n {{ meta.namespace }} -c {{ meta.name }}-task {{ tower_pod_name }} -- bash -c - "awx-manage migrate --noinput" + k8s_exec: + namespace: "{{ meta.namespace }}" + pod: "{{ tower_pod_name }}" + container: "{{ meta.name }}-task" + command: >- + bash -c "awx-manage migrate --noinput" register: migrate_result - when: (k8s_defs_result is changed) or (database_check is defined and database_check.rc != 0) + when: (k8s_defs_result is changed) or (database_check is defined and database_check.return_code != 0) - include_tasks: initialize.yml