From 64c55c882400c3aa641f359f2ce28114d745e1b5 Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Mon, 21 Jun 2021 09:49:36 -0400 Subject: [PATCH 1/3] Fix SYSTEM_UUID --- roles/installer/templates/config.yaml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/installer/templates/config.yaml.j2 b/roles/installer/templates/config.yaml.j2 index e0657ee8..d9b7d5d8 100644 --- a/roles/installer/templates/config.yaml.j2 +++ b/roles/installer/templates/config.yaml.j2 @@ -46,7 +46,7 @@ data: AWX_AUTO_DEPROVISION_INSTANCES = True CLUSTER_HOST_ID = socket.gethostname() - SYSTEM_UUID = '00000000-0000-0000-0000-000000000000' + SYSTEM_UUID = os.environ.get('MY_POD_UID', '00000000-0000-0000-0000-000000000000') CSRF_COOKIE_SECURE = False SESSION_COOKIE_SECURE = False From 9a54ae293741cff695579834c86f3b4d17c43d36 Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Tue, 22 Jun 2021 14:35:39 -0400 Subject: [PATCH 2/3] Delete test-local, run test-minikube in CI bsycorp/kind is broken. See https://github.com/bsycorp/kind/issues/44 --- .github/workflows/ci.yaml | 13 ++- molecule/default/molecule.yml | 5 -- molecule/test-local/ansible.cfg | 2 - molecule/test-local/converge.yml | 133 ---------------------------- molecule/test-local/molecule.yml | 46 ---------- molecule/test-local/prepare.yml | 38 -------- molecule/test-minikube/converge.yml | 2 - 7 files changed, 10 insertions(+), 229 deletions(-) delete mode 100644 molecule/test-local/ansible.cfg delete mode 100644 molecule/test-local/converge.yml delete mode 100644 molecule/test-local/molecule.yml delete mode 100644 molecule/test-local/prepare.yml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f378b5d2..7f61a28d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -31,14 +31,21 @@ jobs: ansible-lint \ openshift \ jmespath \ - ansible + ansible-core - name: Install Collections run: | - ansible-galaxy collection install community.kubernetes operator_sdk.util + ansible-galaxy collection install community.general kubernetes.core:1.2.1 operator_sdk.util + + - name: Setup Minikube + uses: manusa/actions-setup-minikube@v2.4.2 + with: + minikube version: 'v1.16.0' + kubernetes version: 'v1.19.2' + github token: ${{ secrets.GITHUB_TOKEN }} - name: Run Molecule env: MOLECULE_VERBOSITY: 3 run: | - molecule test -s test-local + molecule test -s test-minikube diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index e4b1cb14..206e24ac 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -27,8 +27,3 @@ provisioner: group_vars: all: operator_namespace: ${TEST_NAMESPACE:-default} - env: - K8S_AUTH_KUBECONFIG: /tmp/molecule/kind-default/kubeconfig - KUBECONFIG: /tmp/molecule/kind-default/kubeconfig - ANSIBLE_ROLES_PATH: ${MOLECULE_PROJECT_DIRECTORY}/roles - KIND_PORT: '${TEST_CLUSTER_PORT:-9443}' diff --git a/molecule/test-local/ansible.cfg b/molecule/test-local/ansible.cfg deleted file mode 100644 index 3efd4c38..00000000 --- a/molecule/test-local/ansible.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[defaults] -stdout_callback = yaml diff --git a/molecule/test-local/converge.yml b/molecule/test-local/converge.yml deleted file mode 100644 index 9ad1d895..00000000 --- a/molecule/test-local/converge.yml +++ /dev/null @@ -1,133 +0,0 @@ ---- -- name: Build Operator in Kind container - hosts: k8s - - vars: - image_name: awx.ansible.com/awx-operator:testing - - tasks: - # using command so we don't need to install any dependencies - - name: Get existing image hash - command: docker images -q {{ image_name }} - register: prev_hash - changed_when: false - - - name: Build Operator Image - command: docker build -f /build/build/Dockerfile -t {{ image_name }} /build - 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" - 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: hostvars[groups.k8s.0].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 - 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 - 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 }} - environment: - KUBECONFIG: '{{ lookup("env", "KUBECONFIG") }}' - 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' diff --git a/molecule/test-local/molecule.yml b/molecule/test-local/molecule.yml deleted file mode 100644 index f534ed46..00000000 --- a/molecule/test-local/molecule.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -dependency: - name: galaxy -driver: - name: docker -lint: | - set -e - yamllint . - ansible-lint -platforms: - - name: kind-test-local - groups: - - k8s - image: bsycorp/kind:v1.17.9 - privileged: True - override_command: no - exposed_ports: - - 8443/tcp - - 10080/tcp - published_ports: - - 0.0.0.0:${TEST_CLUSTER_PORT:-10443}:8443/tcp - pre_build_image: yes - volumes: - - ${MOLECULE_PROJECT_DIRECTORY}:/build:Z -provisioner: - name: ansible - log: True - inventory: - group_vars: - all: - operator_namespace: ${TEST_NAMESPACE:-default} - env: - K8S_AUTH_KUBECONFIG: /tmp/molecule/kind-test-local/kubeconfig - KUBECONFIG: /tmp/molecule/kind-test-local/kubeconfig - ANSIBLE_ROLES_PATH: ${MOLECULE_PROJECT_DIRECTORY}/roles - KIND_PORT: '${TEST_CLUSTER_PORT:-10443}' -scenario: - test_sequence: - - lint - - destroy - - dependency - - syntax - - create - - prepare - - converge - - destroy diff --git a/molecule/test-local/prepare.yml b/molecule/test-local/prepare.yml deleted file mode 100644 index 7f7d1f7b..00000000 --- a/molecule/test-local/prepare.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -- name: Prepare kubernetes environment - hosts: k8s - gather_facts: no - vars: - kubeconfig: "{{ lookup('env', 'KUBECONFIG') }}" - tasks: - - name: delete the kubeconfig if present - file: - path: '{{ kubeconfig }}' - state: absent - delegate_to: localhost - - - name: Fetch the kubeconfig - fetch: - dest: '{{ kubeconfig }}' - flat: yes - src: /root/.kube/config - - - name: Change the kubeconfig port to the proper value - replace: - regexp: 8443 - replace: "{{ lookup('env', 'KIND_PORT') }}" - path: '{{ kubeconfig }}' - mode: 0644 - delegate_to: localhost - - - name: Wait for the Kubernetes API to become available (this could take a minute) - uri: - url: "http://localhost:10080/kubernetes-ready" - status_code: 200 - validate_certs: no - register: result - until: (result.status|default(-1)) == 200 - retries: 60 - delay: 5 - -- import_playbook: ../default/prepare.yml diff --git a/molecule/test-minikube/converge.yml b/molecule/test-minikube/converge.yml index a1adbeb3..a44d8cda 100644 --- a/molecule/test-minikube/converge.yml +++ b/molecule/test-minikube/converge.yml @@ -126,8 +126,6 @@ ignore_errors: yes failed_when: false command: kubectl logs deployment/{{ definition.metadata.name }} -n {{ operator_namespace }} -c operator - environment: - KUBECONFIG: '{{ lookup("env", "KUBECONFIG") }}' vars: definition: "{{ lookup('template', '/'.join([templates_dir, 'operator.yml.j2'])) | from_yaml }}" register: log From 7310b43a5cdabe9195b03376d383f64ba2d8d900 Mon Sep 17 00:00:00 2001 From: Shane McDonald Date: Tue, 22 Jun 2021 14:52:54 -0400 Subject: [PATCH 3/3] Use kubernetes.core --- ansible/deploy-operator.yml | 2 +- ansible/instantiate-awx-deployment.yml | 2 +- requirements.yml | 4 ++-- roles/backup/meta/main.yml | 2 +- roles/installer/meta/main.yml | 2 +- roles/installer/tasks/database_configuration.yml | 2 +- roles/installer/tasks/scale_down_deployment.yml | 2 +- roles/restore/meta/main.yml | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ansible/deploy-operator.yml b/ansible/deploy-operator.yml index 67479038..6caaff16 100644 --- a/ansible/deploy-operator.yml +++ b/ansible/deploy-operator.yml @@ -9,7 +9,7 @@ obliterate: no collections: - - community.kubernetes + - kubernetes.core tasks: - name: Obliterate Operator diff --git a/ansible/instantiate-awx-deployment.yml b/ansible/instantiate-awx-deployment.yml index 83a2ed5c..a185b4ae 100644 --- a/ansible/instantiate-awx-deployment.yml +++ b/ansible/instantiate-awx-deployment.yml @@ -3,7 +3,7 @@ hosts: localhost collections: - - community.kubernetes + - kubernetes.core tasks: - name: Deploy AWX diff --git a/requirements.yml b/requirements.yml index 78feb7d6..5b687705 100644 --- a/requirements.yml +++ b/requirements.yml @@ -1,6 +1,6 @@ --- collections: - - name: community.kubernetes - version: '==1.1.1' + - name: kubernetes.core + version: '==1.2.1' - name: operator_sdk.util version: '==0.1.0' diff --git a/roles/backup/meta/main.yml b/roles/backup/meta/main.yml index 3d3cd361..0f4df6a5 100644 --- a/roles/backup/meta/main.yml +++ b/roles/backup/meta/main.yml @@ -27,5 +27,5 @@ galaxy_info: dependencies: [] collections: - - community.kubernetes + - kubernetes.core - operator_sdk.util diff --git a/roles/installer/meta/main.yml b/roles/installer/meta/main.yml index 69592776..d4d75ee3 100644 --- a/roles/installer/meta/main.yml +++ b/roles/installer/meta/main.yml @@ -28,5 +28,5 @@ galaxy_info: dependencies: [] collections: - - community.kubernetes + - kubernetes.core - operator_sdk.util diff --git a/roles/installer/tasks/database_configuration.yml b/roles/installer/tasks/database_configuration.yml index 167d4589..2b028f26 100644 --- a/roles/installer/tasks/database_configuration.yml +++ b/roles/installer/tasks/database_configuration.yml @@ -80,7 +80,7 @@ include_tasks: scale_down_deployment.yml - name: Scale down PostgreSQL statefulset for migration - community.kubernetes.k8s_scale: + kubernetes.core.k8s_scale: api_version: apps/v1 kind: StatefulSet name: "{{ meta.name }}-postgres" diff --git a/roles/installer/tasks/scale_down_deployment.yml b/roles/installer/tasks/scale_down_deployment.yml index 7db71674..83a3a304 100644 --- a/roles/installer/tasks/scale_down_deployment.yml +++ b/roles/installer/tasks/scale_down_deployment.yml @@ -9,7 +9,7 @@ register: tower_deployment - name: Scale down Deployment for migration - community.kubernetes.k8s_scale: + kubernetes.core.k8s_scale: api_version: v1 kind: Deployment name: "{{ meta.name }}" diff --git a/roles/restore/meta/main.yml b/roles/restore/meta/main.yml index 720b9bcb..cf2415f0 100644 --- a/roles/restore/meta/main.yml +++ b/roles/restore/meta/main.yml @@ -27,5 +27,5 @@ galaxy_info: dependencies: [] collections: - - community.kubernetes + - kubernetes.core - operator_sdk.util