distributable: url: https://github.com/ansible/ansible/archive/v{{version}}.tar.gz strip-components: 1 versions: github: ansible/ansible/tags # reads github *tags* strip: /^v/ dependencies: python.org: '>=3.7' build: script: | python-venv.sh {{prefix}}/bin/ansible # manually register all the ansible-* executables with tea #FIXME dirty hack, replace with a proper solution for _EXEC in {{prefix}}/venv/bin/ansible-*; do CMD_NAME="${_EXEC##*/}" # get text after the last slash (the command name) TRG_BIN_NAME="{{prefix}}/bin/$CMD_NAME" cp -v {{prefix}}/bin/ansible $TRG_BIN_NAME # copy the tea-configured executable with the correct name # replace the original 'ansible' with the correct $CMD_NAME sed -i.bak -e \ "s|/bin/ansible|/bin/$CMD_NAME|" \ $TRG_BIN_NAME done # install paramiko, a python ssh library sometimes used with ansible {{prefix}}/venv/bin/pip install paramiko #FIXME should we pin a version? rm -v {{prefix}}/bin/ansible-*.bak test: script: | ansible --version ansible-playbook playbook.yml -i hosts.ini #FIXME below is a test from the brew formula, but I'm not sure what it's testing # ^ especially considering that 'requests' is not a part of ansible's dependencies # Ensure requests[security] is activated # py_script="import requests as r; r.get('https://mozilla-modern.badssl.com')" # {{prefix}}/venv/bin/python -c "$py_script" # Ensure ansible-vault can encrypt/decrypt files. echo $SECRET_MESSAGE > vault-test-file.txt echo $VAULT_PASSWORD > vault-password.txt ansible-vault encrypt --vault-password-file vault-password.txt vault-test-file.txt test "$(cat vault-test-file.txt)" != "$SECRET_MESSAGE" # encrypted ansible-vault decrypt --vault-password-file vault-password.txt vault-test-file.txt test "$(cat vault-test-file.txt)" = "$SECRET_MESSAGE" # decrypted # ensure paramiko is installed {{prefix}}/venv/bin/python -c "import paramiko" env: VAULT_PASSWORD: "123456789" SECRET_MESSAGE: "Hello world!" provides: - bin/ansible - bin/ansible-config - bin/ansible-connection - bin/ansible-console - bin/ansible-doc - bin/ansible-galaxy - bin/ansible-inventory - bin/ansible-playbook - bin/ansible-pull - bin/ansible-test - bin/ansible-vault