community.openwrt.template module – Template a file out to remote OpenWrt target
Note
This module is part of the community.openwrt collection (version 1.3.0).
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.openwrt.
To use it in a playbook, specify: community.openwrt.template.
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 thedefaultssection ofansible.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.
Note
This module has a corresponding action plugin.
Parameters
Parameter |
Comments |
|---|---|
Create a backup file including the timestamp information so you can get the original file back if you somehow clobbered it incorrectly. Choices:
|
|
The string marking the end of a block. Default: |
|
The string marking the beginning of a block. Default: |
|
The string marking the end of a comment statement. |
|
The string marking the beginning of a comment statement. |
|
Location to render the template to on the remote machine. |
|
Determine whether symbolic links should be followed. When set to When set to Choices:
|
|
Determine when the file is being transferred if the destination already exists. When set to When set to Choices:
|
|
Group name that should own the file or directory. Passed directly to the If not specified, group ownership is not changed. Not applied to symlinks when |
|
Determine when leading spaces and tabs should be stripped. When set to Choices:
|
|
Permissions for the file or directory. Can be specified as an octal number (for example, When using octal notation, quote the value to ensure it is treated as a string. If not specified, permissions may be determined by the system default Not applied to symlinks when |
|
Specify the newline sequence to use for templating files. Choices:
|
|
Overrides the encoding used to write the template file defined by It defaults to The source template file must always be encoded using Default: |
|
User name that should own the file or directory. Passed directly to the If not specified, ownership is not changed. Not applied to symlinks when |
|
Path of a Jinja2 formatted template on the Ansible controller. This can be a relative or an absolute path. The file must be encoded with |
|
Determine when newlines should be removed from blocks. When set to Choices:
|
|
The validation command to run before copying the updated file into the final destination. A temporary file path is used to validate, passed in through Also, the command is passed securely so shell features such as expansion and pipes will not work. For an example on how to handle more complex validation than what this option provides, see handling complex validation. |
|
The string marking the end of a print statement. Default: |
|
The string marking the beginning of a print statement. Default: |
Attributes
Attribute |
Support |
Description |
|---|---|---|
Support: full |
Can run in |
|
Support: full |
Returns details on what has changed (or possibly needs changing in |
|
Platform: OpenWrt |
Target platform for this module. |
|
Support: none This module uses basic shell commands for file operations and does not implement Ansible’s atomic file operation functions. |
Uses Ansible’s strict file operation functions to ensure proper permissions and avoid data corruption. |
Notes
Note
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. that is
#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.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
- community.openwrt.copy
Copy files to remote OpenWrt devices.
Examples
- name: Template a file to /etc/file.conf
ansible.builtin.template:
src: /mytemplates/foo.j2
dest: /etc/file.conf
- name: Copy a new sudoers file into place, after passing validation with visudo
ansible.builtin.template:
src: /mine/sudoers
dest: /etc/sudoers
validate: /usr/sbin/visudo -cf %s
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
|---|---|
Destination file/path, equal to the value passed to dest. Returned: success Sample: |
|
MD5 checksum of the rendered file. Returned: changed Sample: |
|
Source file used for the copy on the target machine. Returned: changed Sample: |