盐缓存/ etc / hosts? 我遇到的情况是我更改了/ etc / hosts,使得FQDN指向外部IP地址而不是127.0.0.1
问题是在第一次运行时,fqdn_ipv4保持127.0.0.1,我需要重新运行salt '*' state.highstate
才能获得正确的值。这导致像this这样的问题,这花费了我很多时间。
Salt在执行之前呈现所有内容(或缓存DNS)吗?我该如何解决这个问题?
状态文件如下所示:
127.0.0.1:
host.absent:
- name: {{ nodename }}
- ip: 127.0.0.1
127.0.1.1:
host.absent:
- name: {{ nodename }}
- ip: 127.0.1.1
{% for minion, items in salt['mine.get']('environment:' + environment, 'grains.item', expr_form='grain')|dictsort %}
{{ minion }}:
host.present:
- ip: {{ items['ip_addr'] }}
- names:
- {{ minion }}
- {{ minion.split('.')[0] }}
{% endfor %}
使用IP的代码如下所示:
{% set ipv4 = salt['config.get']('fqdn_ip4') -%}
# IP Address that Agent should listen on
listening_ip={{ ipv4[0] }}
答案 0 :(得分:0)
盐正在缓解谷物的价值。因此,salt['config.get']('fqdn_ip4')
将从脚本的开头检索值。
在状态文件中使用以下内容来刷新粒度信息:
refreshgrains:
module.run:
- name: saltutil.sync_grains
Salt将在执行之前呈现状态,因此您可能无法在状态文件本身内使用任何新的粒度信息。
但是你可以在Jinja模板中使用新的谷物值来存储文件。我假设第二个代码段来自Salt file.managed
使用的模板,因此您应该在这里安全。