You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Go to file
Dag Wieers 302eeae65d Do not register variable if host has been skipped
Executive summary: skipping a host corrupts a variable (when it is registered)

We have a play existing out of multiple tasks that check a condition, if one of these tasks fails we want to skip all next tasks in the playbook. I noticed that if we skip a task because a certain condition is met, and this task has a register-attribute, I loose the value in the variable. Which means we cannot use that variable in subsequent tasks to evaluate because it was skipped:

```
- action: command test -d /some/directory
  register: task

- action: command test -f /some/directory/file
  register: task
  only_if: '${task.rc} == 0'

- action: do something else
  only_if: '${task.rc} == 0'
```

In the above example, if the second task is skipped (because the first failed), the third action will end with a "SyntaxError: invalid syntax" complaining about the unsubstituted ${task.rc} (even though it was set by the first task and used for skipping the second).

The following play demonstrates the problem:

```
- name: Test register on ignored tasks
  hosts: all
  gather_facts: no

  vars:
    skip: true
    task: { 'rc': 666 }

  tasks:
  - action: debug msg='skip = ${skip}, task.rc = ${task.rc}'

  - name: Skip this task, just to test if task has changed
    action: command ls
    register: task
    only_if: '${skip} != True'

  - action: debug msg='skip = ${skip}, task.rc = ${task.rc}'

  - name: Now use task value
    action: command echo 'Works !'
    only_if: '${task.rc} == 0'
```

And the enclosed fix, fixes the above problem.
13 years ago
bin ansible-playbook verifies playbooks exist before running them 13 years ago
docs/man Manpage documentation ALSO should be sorted 13 years ago
docsite Added Action.IO to who_uses_ansible and ansible-provisioning to contribs 13 years ago
examples Merge pull request #1527 from fdavis/devel 13 years ago
hacking Add ability to specify syslog facility for modules 13 years ago
lib/ansible Do not register variable if host has been skipped 13 years ago
library Merge pull request #1590 from romeotheriault/minor-freebsd-user-module-fixes 13 years ago
packaging Add some python packages too 13 years ago
plugins While I haven't done this, it is possible to bring up an instance 13 years ago
test Add parameterized playbook includes 13 years ago
.gitignore Fix documentation consistency in .gitignore 13 years ago
CHANGELOG.md Added changelog note about 'when' 13 years ago
CONTRIBUTING.md Add a bit more info about tests to CONTRIBUTING 13 years ago
COPYING license file should be in source tree 14 years ago
MANIFEST.in Add some docs/examples 14 years ago
Makefile moduleformatter.py should include our own ansible clone 13 years ago
README.md Update website link 13 years ago
RELEASES.txt Adds release date for Cathedral 13 years ago
VERSION Release version bump for 0.9 (development branch) 13 years ago
setup.py Add ansible.runner.filter_plugins package to setup.py 13 years ago

README.md

Ansible

Ansible is a radically simple configuration-management, deployment, task-execution, and multinode orchestration framework.

Read the documentation and more at http://ansible.cc

Design Principles

  • Dead simple setup
  • Super fast & parallel by default
  • No server or client daemons; use existing SSHd
  • No additional software required on client boxes
  • Modules can be written in ANY language
  • Awesome API for creating very powerful distributed scripts
  • Be usable as non-root
  • The easiest config management system to use, ever.

Get Involved

Branch Info

  • Releases are named after Van Halen songs.
  • The devel branch corresponds to the release actively under development.
  • Various release-X.Y branches exist for previous releases
  • We'd love to have your contributions, read "CONTRIBUTING.md" for process notes.

Author

Michael DeHaan -- michael.dehaan@gmail.com

http://michaeldehaan.net