A Concourse CI resource for running Ansible playbooks.
Most source attributes map directly to ansible-playbook
options. See the
ansible-playbook --help
for further details.
The git_*
attributes are relevant to referencing git repositories in the requirements.yml
file
which are pulled from during ansible-galaxy install
.
debug
: Optional. Boolean. Defaultfalse
. Echo commands and other normally-hidden outputs useful for troubleshooting.env
: Optional. A list of environment variables to apply. Useful for supplying task configuration dependencies likeAWS_ACCESS_KEY_ID
, for example, or specifying ansible configuration options that are unsupported by this resource. Note: Unsupported ansible configurations can also be applied inansible.cfg
in the playbook source.git_global_config
: Optional. A list of git global configurations to apply (withgit config --global
).git_https_username
: Optional. The username for git http/s access.git_https_password
: Optional. The password for git http/s access.git_private_key
: Optional. The git ssh private key.git_skip_ssl_verification
: Optional. Boolean. Defaultfalse
. Don't verify TLS certificates.user
: Optional. Connect to the remote system with this user.requirements
: Optional. Defaultrequirements.yml
. If this file is present in the playbook source directory, it is used withansible-galaxy --install
before running the playbook.ssh_common_args
: Optional. Specify options to pass tossh
.ssh_private_key
: Required. Thessh
private key with which to connect to the remote system.vault_password
: Optional. The value of theansible-vault
password.verbose
: Optional. Specify,v
,vv
, etc., to increase the verbosity of theansible-playbook
execution.
resource_types:
- name: ansible-playbook
type: docker-image
source:
repository: troykinsella/concourse-ansible-playbook-resource
tag: latest
resources:
- name: ansible
type: ansible-playbook
source:
debug: false
user: ubuntu
ssh_private_key: ((ansible_ssh_private_key))
vault_password: ((ansible_vault_password))
verbose: v
Execute ansible-playbook
against a given playbook and inventory file,
firstly installing dependencies with ansible-galaxy install -r requirements.yml
if necessary.
Prior to running ansible-playbook
, if an ansible.cfg
file is present in the
path
directory, it is sanitized by removing entries for which the equivalent
command line options are managed by this resource. The result of this sanitization
can be seen by setting source.debug: true
.
Most parameters map directly to ansible-playbook
options. See the
ansible-playbook --help
for further details.
become
: Optional. Boolean. Defaultfalse
. Run operations asbecome
(privilege escalation).become_user
: Optional. Run operations with this user.become_method
: Optional. Privilege escalation method to use.check
: Optional. Boolean. Defaultfalse
. Don't make any changes; instead, try to predict some of the changes that may occur.diff
: Optional. Boolean. Defaultfalse
. When changing (small) files and templates, show the differences in those files; works great withcheck: true
.inventory
: Required. The path to the inventory file to use, relative topath
.playbook
: Optional. Defaultsite.yml
. The path to the playbook file to run, relative topath
.vars
: Optional. An object of extra variables to pass toansible-playbook
. Mutually exclusive withvars_file
.vars_file
: Optional. A file containing a JSON object of extra variables to pass toansible-playbook
. Mutually exclusive withvars
.path
: Required. The path to the directory containing playbook sources. This typically will point to a resource pulled from source control.
# Extends example in Source Configuration
jobs:
- name: provision-frontend
plan:
- get: master # git resource
- put: ansible
params:
check: true
diff: true
inventory: inventory/some-hosts.yml
playbook: provision-frontend.yml
path: master
docker build .
- Support running
ansible-playbook
with--tags
and--skip-tags
.
MIT © Troy Kinsella