yaml - StrinctUndefined 类型的 saltstack jinja 错误参数不可迭代
问题描述
我正在处理一个 saltstack 状态,它应该根据主机区域和环境类型将 url 添加到 windows 环境变量中。我定义了以下支柱文件:
host: myhost-uat-ln
url_mapping:
http://test-uat-ln.com:
environment:
- UAT
- STAGE
region: LN
http://test-prod-ln.com:
environment:
- PROD
region: LN
http://test-uat-ny.com:
environment:
- UAT
- STAGE
region: NY
http://test-prod-ny.com:
environment:
- PROD
region: NY
我的状态以下列方式定义:
{% set host = pillar ['host'] | replace('-','_') | lower %}
{% set region = pillar['host'].split('-')[-1] %}
{% set env = pillar['host'].split('-')[-2] %}
{% for url, url_args in salt['pillar.get']('url_mapping', {}).iteritems() %}
{% for env_arg in url_args['environment'] %}
{% if env_arg in env and url_args['region'] == region %}
Set url {{ url }} for host {{ host }}:
environ.setenv:
- name: HOST_URL_MAPPING
- value: {{ url }}/{{ host }}
- permanent: HKLM
{% endif %}
{% endfor %}
{% endfor%}
问题是当我试图通过 saltstack 执行它时,我得到:
failed: Jinja error: argument of type 'StrictUndefined' is not iterable
{% if env_arg in env and url_args['region'] == region %} <=====================
我检查了变量,看起来所有变量都定义为列表。有人可以告诉我我做错了什么吗?
解决方案
我发现了我的问题。从命令行执行状态时,我覆盖了主机支柱:myhost_uat_ln 这就是它不起作用的原因。
推荐阅读
- php - 如何使用 laravel 通过 jquery ajax 将表单值插入数据库?
- image - docker镜像或docker容器的大小会影响容器的创建时间吗
- r - 对于 r 中的每种情况,将索引范围变为 0
- excel - 二维数组的动态上限
- xamarin - 如何在 Xamarin 表单中自定义 AutoCompleteTextView
- sql - 如何编写一种方法来为 SQL 和数组构建查询?
- java - 如何在我的 java 代码中实现 Haystack java 工具包库?
- react-native - 如何使用 react-native 设置 Sentry-cli 源映射
- r - 使用 dplyr 汇总特定列
- jquery - 是否有可能知道星星是否亮起?(jQuery Raty 插件)