2012-07-14 15:59:12 +00:00
# this is a virtual module that is entirely implemented server side
2012-09-28 22:49:02 +00:00
DOCUMENTATION = '''
---
module: template
2013-11-18 23:55:49 +00:00
version_added: historical
2012-09-28 22:49:02 +00:00
short_description: Templates a file out to a remote server.
description:
- Templates are processed by the Jinja2 templating language
(U(http://jinja.pocoo.org/docs/)) - documentation on the template
formatting can be found in the Template Designer Documentation
(U(http://jinja.pocoo.org/docs/templates/)).
2013-01-04 06:26:11 +00:00
- "Six additional variables can be used in templates: C(ansible_managed)
2012-10-23 13:14:01 +00:00
(configurable via the C(defaults) section of C(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, C(template_host) contains the node name of
2013-01-04 06:26:11 +00:00
the template's machine, C(template_uid) the owner, C(template_path) the
2013-10-08 12:40:22 +00:00
absolute path of the template, C(template_fullpath) is the absolute path of the
2014-02-15 19:13:42 +00:00
template, and C(template_run_date) is the date that the template was rendered. Note that including
2014-03-15 07:04:38 +00:00
a string that uses a date in the template will result in the template being marked 'changed'
2014-02-15 19:13:42 +00:00
each time."
2012-09-28 22:49:02 +00:00
options:
src:
description:
- Path of a Jinja2 formatted template on the local server. This can be a relative or absolute path.
required: true
default: null
aliases: []
dest:
description:
- Location to render the template to on the remote machine.
required: true
default: null
backup:
description:
- Create a backup file including the timestamp information so you can get
the original file back if you somehow clobbered it incorrectly.
required: false
choices: [ "yes", "no" ]
default: "no"
2013-03-27 03:12:56 +00:00
validate:
description:
- validation to run before copying into place
required: false
default: ""
version_added: "1.2"
2012-09-28 22:49:02 +00:00
others:
description:
2014-02-15 19:05:42 +00:00
- all arguments accepted by the M(file) module also work here, as well as the M(copy) module (except the the 'content' parameter).
2012-09-28 22:49:02 +00:00
required: false
2012-10-01 07:18:54 +00:00
notes:
2014-01-02 22:36:52 +00:00
- "Since Ansible version 0.9, templates are loaded with C(trim_blocks=True)."
2013-12-26 17:01:41 +00:00
- "Also, you can override jinja2 settings by adding a special header to template file.
i.e. C(#jinja2:variable_start_string:'[%' , variable_end_string:'%]')
2014-01-02 22:36:52 +00:00
which changes the variable interpolation markers to [% var %] instead of {{ var }}. This is the best way to prevent evaluation of things that look like, but should not be Jinja2. raw/endraw in Jinja2 will not work as you expect because templates in Ansible are recursively evaluated."
2013-12-26 17:01:41 +00:00
2013-05-16 15:13:18 +00:00
requirements: []
2012-09-28 22:49:02 +00:00
author: Michael DeHaan
'''
2013-06-14 09:53:43 +00:00
EXAMPLES = '''
# Example from Ansible Playbooks
- template: src=/mytemplates/foo.j2 dest=/etc/file.conf owner=bin group=wheel mode=0644
# Copy a new "sudoers file into place, after passing validation with visudo
2013-06-26 18:24:15 +00:00
- action: template src=/mine/sudoers dest=/etc/sudoers validate='visudo -cf %s'
2013-06-14 09:53:43 +00:00
'''