Documentation
PLEASE NOTE: This document applies to v2.3 version and not to the latest stable release v2.9
Documentation for other releases can be found by using the version selector in the left bottom of any doc page.Tasks
tasks
are the main execution unit. They need a module and admit some optional fields described below.
- name: this must be ignored
assert:
that:
- "rash.path == ''"
ignore_errors: true
- find:
paths: "{{ rash.dir }}"
file_type: file
register: find_result
- debug:
var: "find_result.extra"
- name: save password to multiple files
copy:
content: "{{ env.MY_PASSWORD }}"
dest: "/tmp/MY_PASSWORD_FILE_{{ file_name }}"
mode: "400"
vars:
file_name: "{{ item | split('/') | last }}"
loop: "{{ find_result.extra }}"
when: "'MY_PASSWORD' in env"
register: save_passwords_result
Keywords
Tasks admit the following optional keys:
Keyword | Type | Description |
---|---|---|
become | boolean | run operations with become (does not imply password prompting) |
become_user | string | run operations as this user (just works with become enabled) |
check_mode | boolean | Run task in dry-run mode without modifications |
changed_when | string | Template expression passed directly without {{ }} ; Overwrite change status |
ignore_errors | string | Template expression passed directly without {{ }} ; if true errors are ignored |
name | string | Task name |
loop | array | loop receives a Template (with {{ }} ) or a list to iterate over it |
register | string | Variable name to store module result |
vars | map | Define variables in task scope. Does not support own reference variables. |
when | string | Template expression passed directly without {{ }}; if false skip task execution |
Registering variables
Use the Register field to define the name of the variable in which you wish to save the module result. Its value will conform to the following structure:
pub struct ModuleResult {
/// True when the executed module changed something.
changed: bool,
/// The Output value will appear in logs when module is executed.
output: Option<String>,
/// Modules store the data they return in the Extra field.
extra: Option<YamlValue>,
}
For example:
- find:
paths: "{{ rash.dir }}"
register: find_result
- name: files in directory
debug:
var: item | replace(rash.dir, '.')
loop: "{{ find_result.extra }}"
Using become
First of all, to use become you will need to execute rash with a user with CAP_SETUID
and
CAP_SETGID
capabilities (e.g.: root
).
You can enable become from multiple places: If you want to activate it for all tasks you can
pass it as an execution arg (-b/--become
). Or you can enable it per tasks using the become
keyword.
For example, to configure resolv.conf
(which requires root
privileges), you can use the default
value of become_user
(root
):
- name: Configure OpenDNS as resolvers
become: true
copy:
dest: /etc/resolv.conf
content: |
nameserver 208.67.222.222
nameserver 208.67.220.220
In the other hand, if you want to run rash
with become, you are most likely already running it as
root
so you will use it to change to other uses. E.g.:
- command: some-unprivileged-command
become: true
become_user: foo