首页
学习
活动
专区
圈层
工具
发布

金甲盐
EN

Stack Overflow用户
提问于 2021-08-11 10:11:18
回答 1查看 647关注 0票数 1

我试图根据IP第一个数字执行一个salt状态。

代码语言:javascript
复制
{% if grains['fqdn_ip4'].startswith('10') %}
task
{% endif %}

我得到:

代码语言:javascript
复制
failed: Jinja variable 'list object' has no attribute 'startswith'

我的语法似乎很好,如果我用id替换谷物项fqdn_ip4,它可以工作:

代码语言:javascript
复制
{% if grains['id'].startswith('10') %}
task
{% endif %}

不过,格式似乎不一样:

代码语言:javascript
复制
salt-call grains.get id

返回

代码语言:javascript
复制
local:
admin.local

代码语言:javascript
复制
salt-call grains.get fqdn_ip4

返回

代码语言:javascript
复制
local:
- 10.25.64.33

所以我在fqdn_ip4值前面有一个"-“。

提前谢谢你,

B.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-11 10:56:05

根据错误和grains.get输出,我们可以看到fqdn_ip4粒度是一个列表/数组。在有超过一个IP地址的机器上,这个粒度将包含多个元素。

示例:

代码语言:javascript
复制
minion:
  - 127.0.0.1
  - 1.2.3.4
  - 5.6.7.8

因此,如果要将条件与列表的第一个元素匹配,则必须使用grains['fqdn_ip4'][0]。如下所示:

代码语言:javascript
复制
{% if grains['fqdn_ip4'][0].startswith('10') %}
show-ip:
  module.run:
    - name: test.echo
    - text: grains['fqdn_ip4'][0]
{% endif %}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68740001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档