这是我正在制作的模板:
users:
{% for usr in users -%}
{# user {{ usr }} -#}
- name: {{ users[usr].username }}
passwd: {{ users[usr].hash }}
ssh_authorized_keys: {{ users[usr].key }}
{% endfor %}
我一直在使用 Jinja 解析器来测试语法/逻辑:https://j2live.ttl255.com/
我的问题是,如何格式化字典/数据结构(我认为我需要使用的)来保存数据?
数据结构示例:
users:
user1:
username: queef
hash: $6$eMRWO7k8SM
key: 'sha-rsa $6$3EddsggdvX'
user2:
username: keagle
hash: $6$eYYhaSqGDf45sEE
key: '- sha-rsa $6$3AxxxX10HdvX'
我在网上找到的大多数示例都显示为平面列表,即:
{% set my_dict = {
"name": "John",
"age": 30,
"city": "New York"
} %}
有人看过多键/值字典示例吗? 我只是假设这是我需要保存值的数组类型。
由于我无法将它们存储在单独的 JSON/YAML 文件中,因此我需要以某种方式将数据保存在 Jinja 模板文件中。
{% set users = ({"user1"
"Username" : "queef",
"Hash" : "$6$eMRWO7k8SM",
"Key" : " - sha-rsa $6$3EddsggdvX",
"user2"
"Username" : "keagle",
"Hash" : "$6$eYYhaSqGDf45sEE",
"Key" : " - sha-rsa $6$3AxxxX10HdvX" }) -%}
让 Jinja 渲染键值并在 for 循环中输出它们。
给出的错误:
渲染错误:
预期的令牌“,”,得到“:”
我期望它输出什么:
users:
- name: queef
passwd: $6$eMRWO7k8SM
ssh_authorized_keys: - sha-rsa $6$3EddsggdvX
- name: keagle
passwd: $6$eYYhaSqGDf45sEE
ssh_authorized_keys: - sha-rsa $6$3AxxxX10HdvX
我在网上找到的大多数示例都显示为平面列表,即:
{% set my_dict = { "name": "John", "age": 30, "city": "New York" } %}
请注意,这不是一个列表,而是一个字典。
您在 YAML 中显示的数据结构是映射的映射,因此在 Jinja/Python 中是字典的字典。
这是它在 Jinja 中的表示:
{%- set users = {
"user1": {
"username": "queef",
"hash": "$6$eMRWO7k8SM",
"key": "sha-rsa $6$3EddsggdvX",
},
"user2": {
"username": "keagle",
"hash": "$6$eYYhaSqGDf45sEE",
"key": "- sha-rsa $6$3AxxxX10HdvX",
},
} -%}