ansible: Change tags/skip-tags to be lists and shorten task

This commit is contained in:
Anders Ingemann 2017-07-14 19:23:14 +02:00
parent bf7525426b
commit 18fb853b48
No known key found for this signature in database
GPG key ID: 49C87973A14931A9
2 changed files with 18 additions and 34 deletions

View file

@ -10,8 +10,14 @@ properties:
type: object type: object
properties: properties:
extra_vars: {type: string} extra_vars: {type: string}
tags: {type: string} tags:
skip_tags: {type: string} type: array
flag: {type: string}
minItems: 1
skip_tags:
type: array
flag: {type: string}
minItems: 1
opt_flags: opt_flags:
type: array type: array
flag: {type: string} flag: {type: string}

View file

@ -50,36 +50,14 @@ class RunAnsiblePlaybook(Task):
# Extract playbook and directory # Extract playbook and directory
playbook = rel_path(info.manifest.path, info.manifest.plugins['ansible']['playbook']) playbook = rel_path(info.manifest.path, info.manifest.plugins['ansible']['playbook'])
# Check for hosts
hosts = None
if 'hosts' in info.manifest.plugins['ansible']:
hosts = info.manifest.plugins['ansible']['hosts']
# Check for extra vars
extra_vars = None
if 'extra_vars' in info.manifest.plugins['ansible']:
extra_vars = info.manifest.plugins['ansible']['extra_vars']
tags = None
if 'tags' in info.manifest.plugins['ansible']:
tags = info.manifest.plugins['ansible']['tags']
skip_tags = None
if 'skip_tags' in info.manifest.plugins['ansible']:
skip_tags = info.manifest.plugins['ansible']['skip_tags']
opt_flags = None
if 'opt_flags' in info.manifest.plugins['ansible']:
opt_flags = info.manifest.plugins['ansible']['opt_flags']
# build the inventory file # build the inventory file
inventory = os.path.join(info.root, 'tmp/bootstrap-inventory') inventory = os.path.join(info.root, 'tmp/bootstrap-inventory')
with open(inventory, 'w') as handle: with open(inventory, 'w') as handle:
conn = '{} ansible_connection=chroot'.format(info.root) conn = '{} ansible_connection=chroot'.format(info.root)
content = "" content = ""
if hosts: if 'hosts' in info.manifest.plugins['ansible']['hosts']:
for host in hosts: for host in info.manifest.plugins['ansible']['hosts']:
content += '[{}]\n{}\n'.format(host, conn) content += '[{}]\n{}\n'.format(host, conn)
else: else:
content = conn content = conn
@ -88,18 +66,18 @@ class RunAnsiblePlaybook(Task):
# build the ansible command # build the ansible command
cmd = ['ansible-playbook', '-i', inventory, playbook] cmd = ['ansible-playbook', '-i', inventory, playbook]
if extra_vars: if 'extra_vars' in info.manifest.plugins['ansible']:
tmp_cmd = ['--extra-vars', '\"{}\"'.format(extra_vars)] tmp_cmd = ['--extra-vars', '\"{}\"'.format(info.manifest.plugins['ansible']['extra_vars'])]
cmd.extend(tmp_cmd) cmd.extend(tmp_cmd)
if tags: if 'tags' in info.manifest.plugins['ansible']:
tmp_cmd = ['--tags={}'.format(tags)] tmp_cmd = ['--tags={}'.format(','.join(info.manifest.plugins['ansible']['tags']))]
cmd.extend(tmp_cmd) cmd.extend(tmp_cmd)
if skip_tags: if 'skip_tags' in info.manifest.plugins['ansible']:
tmp_cmd = ['--skip_tags={}'.format(skip_tags)] tmp_cmd = ['--skip-tags={}'.format(','.join(info.manifest.plugins['ansible']['skip_tags']))]
cmd.extend(tmp_cmd) cmd.extend(tmp_cmd)
if opt_flags: if 'opt_flags' in info.manifest.plugins['ansible']:
# Should probably do proper validation on these, but I don't think it should be used very often. # Should probably do proper validation on these, but I don't think it should be used very often.
cmd.extend(opt_flags) cmd.extend(info.manifest.plugins['ansible']['opt_flags'])
# Run and remove the inventory file # Run and remove the inventory file
log_check_call(cmd) log_check_call(cmd)