Templates are processed by the Jinja2 templating language (http://jinja.pocoo.org/docs/) - documentation on the template formatting can be found in the Template Designer Documentation (http://jinja.pocoo.org/docs/templates/).
Six additional variables can be used in templates: ansible_managed
(configurable via the defaults
section of ansible.cfg
) contains a string which can be used to describe the template name, host, modification time of the template file and the owner uid, template_host
contains the node name of the template’s machine, template_uid
the owner, template_path
the absolute path of the template, template_fullpath
is the absolute path of the template, and template_run_date
is the date that the template was rendered. Note that including a string that uses a date in the template will result in the template being marked ‘changed’ each time.
parameter | required | default | choices | comments |
---|---|---|---|---|
backup |
no | no |
|
Create a backup file including the timestamp information so you can get the original file back if you somehow clobbered it incorrectly. |
dest |
yes | Location to render the template to on the remote machine. | ||
force |
no | yes |
|
the default is yes , which will replace the remote file when contents are different than the source. If no , the file will only be transferred if the destination does not exist. |
group |
no | name of the group that should own the file/directory, as would be fed to chown | ||
mode |
no | mode the file or directory should be. For those used to /usr/bin/chmod remember that modes are actually octal numbers (like 0644). Leaving off the leading zero will likely have unexpected results. As of version 1.8, the mode may be specified as a symbolic mode (for example, u+rwx or u=rw,g=r,o=r ). | ||
owner |
no | name of the user that should own the file/directory, as would be fed to chown | ||
selevel |
no | s0 | level part of the SELinux file context. This is the MLS/MCS attribute, sometimes known as the range . _default feature works as for seuser. | |
serole |
no | role part of SELinux file context, _default feature works as for seuser. | ||
setype |
no | type part of SELinux file context, _default feature works as for seuser. | ||
seuser |
no | user part of SELinux file context. Will default to system policy, if applicable. If set to _default , it will use the user portion of the policy if available | ||
src |
yes | Path of a Jinja2 formatted template on the local server. This can be a relative or absolute path. | ||
validate |
no | None | The validation command to run before copying into place. The path to the file to validate is passed in via '%s' which must be present as in the example below. The command is passed securely so shell features like expansion and pipes won't work. |
# Example from Ansible Playbooks - template: src=/mytemplates/foo.j2 dest=/etc/file.conf owner=bin group=wheel mode=0644 # The same example, but using symbolic modes equivalent to 0644 - template: src=/mytemplates/foo.j2 dest=/etc/file.conf owner=bin group=wheel mode="u=rw,g=r,o=r" # Copy a new "sudoers" file into place, after passing validation with visudo - template: src=/mine/sudoers dest=/etc/sudoers validate='visudo -cf %s'
Note
Since Ansible version 0.9, templates are loaded with trim_blocks=True
.
For more information on what this means please read Core Modules
For help in developing on modules, should you be so inclined, please read Community Information & Contributing, Helping Testing PRs and Developing Modules.