【规则说明·基础】神社
这篇文章是Ansible lint Advent Calendar 2022日历第2天的第9篇文章。
这次我们将解释关于神社规则的事项。(Zhè cì de .)
仅需一种选择:金瓯 ‘ōu)
当在Ansible内容中使用jinja2模板时,jinja会验证模板的编写是否符合要求。
当前正在验证以下项目。
仁仁
如果在变量和操作符之间没有空格(包括过滤器),将会输出错误。在Ansible中,应该写成{{ var_name | filter }}。
对不起 [无效]。
如果模板的描述不正确,将会输出错误信息,就像”{{ & }}”一样。在Ansible中,应该这样写:”{{ ‘&’ }}”。
有问题的代码
---
- name: Example playbook
gather_facts: false
hosts: all
vars:
bar: "{{ & }}" # <- 記号がエスケープされていない
dict: "{name:Ansible, github:https://github.com/ansible/ansible}" # <- key と value の間にスペースがない
foo: "{{ dict|dict2items(key_name='name', value_name='github') }}" # <- 演算子との間にスペースがない
tasks:
- name: Debug 1
ansible.builtin.debug:
var: bar
- name: Debug 2
ansible.builtin.debug:
var: foo
被修正的代码 shì de
---
- name: Example playbook
gather_facts: false
hosts: all
vars:
bar: "{{ '&' }}" # <- 記号はエスケーブする
dict: "{ name: Ansible, github: https://github.com/ansible/ansible }" # <- key と value の間にスペースを入れる
foo: "{{ dict | dict2items(key_name='name', value_name='github') }}" # <- 演算子にスペースを入れる
tasks:
- name: Debug 1
ansible.builtin.debug:
var: bar
- name: Debug 2
ansible.builtin.debug:
var: foo
其他 (qí tā)
目前,Shrine(jinja)存在以下限制。
-
- 改行がある Jinja2 ブロックは検証されない。
-
- チルダを二項演算子として使用する Jinja2 ブロックは検証されない。例 {{a ~ b }}
数字にドット記法を使用する Jinja2 ブロックは検証されない。例 {{ foo.0.bar }}
Jinja不能完全检测到Ansible模板中的描述问题。但最终在Ansible执行时会出现错误并停止处理,因此即使模板中存在描述问题,似乎也不会成为问题。
请查看参考网站。
- jinja — Ansible Lint Documentation