image: ubuntu:focal stages: - lint - test - play before_script: # Get the packages we need - apt-get update - apt-get install gnupg openssh-client python3-docker python3-pip python-is-python3 wget -y - apt-get install ansible ansible-lint -y #- pip install ansible ansible-lint # Dump our key - eval $(ssh-agent -s) - echo "$ANSIBLE_SSH_KEY" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh - chmod -R 0700 ~/.ssh # Dump the vault password - touch /vaultpw - chmod 0600 /vaultpw - echo "$ANSIBLE_VAULT_PASSWORD" > /vaultpw # Fix perms on the playbook root - chmod -R 0750 . # Join the Zerotier management network - | [ -n "$ZEROTIER_NETWORK_ID" ] && \ wget -qO - https://raw.githubusercontent.com/zerotier/ZeroTierOne/master/doc/contact%40zerotier.com.gpg | apt-key add - && \ echo "deb http://download.zerotier.com/debian/buster buster main" >> /etc/apt/sources.list && \ apt-get update && \ apt-get install zerotier-one -y && \ service zerotier-one start && \ sleep 5 && \ zerotier-cli join "$ZEROTIER_NETWORK_ID" && \ sleep 5 && \ zerotier-cli info && \ zerotier-cli listnetworks # Get ready for execution - ansible-galaxy install -r roles/requirements.yml -p roles after_script: - | [ -n "$ZEROTIER_NETWORK_ID" ] && \ zerotier-cli leave "$ZEROTIER_NETWORK_ID" Lint: allow_failure: yes interruptible: yes stage: lint script: - ansible-lint --version - ansible-lint site.yml Test: allow_failure: yes interruptible: yes stage: test script: - ansible-playbook --skip-tags no-test -C site.yml --vault-password-file /vaultpw Play_Against_Pis: stage: play script: - ansible-playbook -l pis site.yml --vault-password-file /vaultpw Play_Against_Desktops: stage: play script: - ansible-playbook -l desktop site.yml --vault-password-file /vaultpw - error="$?" - echo "Return code $error" Play_Against_Production: stage: play script: - ansible-playbook -l prod site.yml --vault-password-file /vaultpw