Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avielyo10/jinja2-tools
Use Jinja2 templates via cli
https://github.com/avielyo10/jinja2-tools
ansible ansible-template cli jinja2 jinja2-cli jinja2-templates jinja2-tools
Last synced: about 4 hours ago
JSON representation
Use Jinja2 templates via cli
- Host: GitHub
- URL: https://github.com/avielyo10/jinja2-tools
- Owner: Avielyo10
- License: gpl-3.0
- Created: 2020-12-23T08:38:12.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-03-06T18:13:24.000Z (9 months ago)
- Last Synced: 2024-11-02T00:16:24.722Z (18 days ago)
- Topics: ansible, ansible-template, cli, jinja2, jinja2-cli, jinja2-templates, jinja2-tools
- Language: Python
- Homepage: https://pypi.org/project/jinja2-tools/
- Size: 50.8 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Jinja2 tools
Use Jinja2 templates via cli
## Install
```
$ pip install jinja2-tools
```## Usage
```
Usage: jinja render [OPTIONS]
Options:
-d, --data TEXT PATH to YAML or JSON data file, URL or '-' for
stdin.-t, --template TEXT PATH to directory or to any file that uses Jinja,
URL or '-' for stdin.-v, --verbose
-tb, --no-trim-blocks Disable trim blocks.
-lb, --no-lstrip-blocks Disable lstrip blocks.
-o, --output PATH PATH for output, stdout by default.
-e, --extra-var TEXT key value pair separated by '='. 'value' will be
treated as JSON or as a string in case of JSON
decoding error. This will take precedence over
'data'.--help Show this message and exit.
```## Whitespace Control
`trim_blocks` and `lstrip_blocks` are used by default, to disable them use `-tb` or `-lb` respectively.
## Examples
* Use path from the filesystem for data & template:
```
➜ jinja render -d examples/data/data.yaml -t examples/templates/template.yaml
(1)
ip access-list extended al-hq-in
(2)
(3) remark Allow traffic from hq to local office
(4)(2)
(3) permit 10.0.0.0/22 10.100.0.0/24
(5)(6)
(7)# All ACLs have been generated
```* Use stdin for data & URL for template, also disable trim blocks & lstrip blocks:
```
➜ jinja render -d - -t https://raw.githubusercontent.com/Avielyo10/jinja2-tools/master/examples/templates/template.yaml -lb -tb < examples/data/data.yaml
(1)
ip access-list extended al-hq-in
(2)
(3)
remark Allow traffic from hq to local office
(4)
(2)
(3)
permit 10.0.0.0/22 10.100.0.0/24
(5)
(6)
(7)# All ACLs have been generated
```* Verbose:
```
➜ jinja render -d examples/data/data.yaml -t examples/templates/template.yaml -v
---------- [Data] ----------
{
"access_lists": {
"al-hq-in": [
{
"action": "remark",
"text": "Allow traffic from hq to local office"
},
{
"action": "permit",
"src": "10.0.0.0/22",
"dst": "10.100.0.0/24"
}
]
}
}---------- [Template] ----------
{% for acl, acl_lines in access_lists.items() %}(1)
ip access-list extended {{ acl }}
{% for line in acl_lines %}(2)
(3){% if line.action == "remark" %}
remark {{ line.text }}
(4){% elif line.action == "permit" %}
permit {{ line.src }} {{ line.dst }}
(5){% endif %}
{% endfor %}(6)
{% endfor %}(7)# All ACLs have been generated
(1)
ip access-list extended al-hq-in
(2)
(3) remark Allow traffic from hq to local office
(4)(2)
(3) permit 10.0.0.0/22 10.100.0.0/24
(5)(6)
(7)# All ACLs have been generated
```* Pass the data using multiple extra vars:
```
➜ jinja render -t examples/templates/template.yaml \
-e access_lists='{"al-hq-in": [{"action": "remark", "text": "Allow traffic from hq to local office"}, {"action": "permit", "src": "10.0.0.0/22", "dst": "10.100.0.0/24"}]}' \
-e message=world \
-v
---------- [ExtraVars] ----------
{
"access_lists": {
"al-hq-in": [
{
"action": "remark",
"text": "Allow traffic from hq to local office"
},
{
"action": "permit",
"src": "10.0.0.0/22",
"dst": "10.100.0.0/24"
}
]
},
"message": "world"
}---------- [Template] ----------
{% for acl, acl_lines in access_lists.items() %}(1)
ip access-list extended {{ acl }}
{% for line in acl_lines %}(2)
(3){% if line.action == "remark" %}
remark {{ line.text }}
(4){% elif line.action == "permit" %}
permit {{ line.src }} {{ line.dst }}
(5){% endif %}
{% endfor %}(6)
{% endfor %}(7)
hello {{ message }}!
# All ACLs have been generated(1)
ip access-list extended al-hq-in
(2)
(3) remark Allow traffic from hq to local office
(4)(2)
(3) permit 10.0.0.0/22 10.100.0.0/24
(5)(6)
(7)
hello world!
# All ACLs have been generated
```* Use directory option
```
➜ jinja render -d examples/data/data.yaml -t examples/ -o test/
➜ tree test/
test/
├── config
│ ├── example.ini
│ └── example.properties
├── data
│ ├── data.json
│ └── data.yaml
└── templates
├── lookup.yaml
└── template.yaml3 directories, 6 files
➜ cat test/templates/template.yaml
(1)
ip access-list extended al-hq-in
(2)
(3) remark Allow traffic from hq to local office
(4)(2)
(3) permit 10.0.0.0/22 10.100.0.0/24
(5)(6)
(7)
hello jinja!
# All ACLs have been generated
```