template – Template a file out to a remote server¶
Synopsis¶
- Templates are processed by the Jinja2 templating language.
- Documentation on the template formatting can be found in the Template Designer Documentation.
- Additional variables listed below can be used in templates.
- ansible_managed(configurable via the- defaultssection 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_hostcontains the node name of the template’s machine.
- template_uidis the numeric user id of the owner.
- template_pathis the path of the template.
- template_fullpathis the absolute path of the template.
- template_destpathis the path of the template on the remote system (added in 2.8).
- template_run_dateis the date that the template was rendered.
Parameters¶
Notes¶
Note
- You can use the copy module with the content:option if you prefer the template inline, as part of the playbook.
- For Windows you can use win_template which uses ‘\r\n’ as newline_sequenceby default.
- Including a string that uses a date in the template will result in the template being marked ‘changed’ each time.
- Since Ansible 0.9, templates are loaded with trim_blocks=True.
- Also, you can override jinja2 settings by adding a special header to template file. i.e. #jinja2:variable_start_string:'[%', variable_end_string:'%]', trim_blocks: Falsewhich 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.
- Using raw/endraw in Jinja2 will not work as you expect because templates in Ansible are recursively evaluated.
- To find Byte Order Marks in files, use Format-Hex <file> -Count 16on Windows, and useod -a -t x1 -N 16 <file>on Linux.
See Also¶
See also
- copy – Copy files to remote locations
- The official documentation on the copy module.
- win_copy – Copies files to remote locations on windows hosts
- The official documentation on the win_copy module.
- win_template – Template a file out to a remote server
- The official documentation on the win_template module.
Examples¶
- name: Template a file to /etc/files.conf
  template:
    src: /mytemplates/foo.j2
    dest: /etc/file.conf
    owner: bin
    group: wheel
    mode: '0644'
- name: Template a file, 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
- name: Copy a version of named.conf that is dependent on the OS. setype obtained by doing ls -Z /etc/named.conf on original file
  template:
    src: named.conf_{{ ansible_os_family }}.j2
    dest: /etc/named.conf
    group: named
    setype: named_conf_t
    mode: 0640
- name: Create a DOS-style text file from a template
  template:
    src: config.ini.j2
    dest: /share/windows/config.ini
    newline_sequence: '\r\n'
- name: Copy a new sudoers file into place, after passing validation with visudo
  template:
    src: /mine/sudoers
    dest: /etc/sudoers
    validate: /usr/sbin/visudo -cf %s
- name: Update sshd configuration safely, avoid locking yourself out
  template:
    src: etc/ssh/sshd_config.j2
    dest: /etc/ssh/sshd_config
    owner: root
    group: root
    mode: '0600'
    validate: /usr/sbin/sshd -t -f %s
    backup: yes
Status¶
- This module is guaranteed to have backward compatible interface changes going forward. [stableinterface]
- This module is maintained by the Ansible Core Team. [core]
Red Hat Support¶
More information about Red Hat’s support of this module is available from this Red Hat Knowledge Base article.
Authors¶
- Ansible Core Team
- Michael DeHaan
Hint
If you notice any issues in this documentation, you can edit this document to improve it.
