盐改变 /etc/hosts,但仍在缓存旧的?
Salt changing /etc/hosts, but still caching old one?
盐缓存/etc/hosts吗?
我处于更改 /etc/hosts 以便 FQDN 指向外部 IP 地址而不是 127.0.0.1
的情况
问题是在第一个 运行 中,fqdn_ipv4 保持为 127.0.0.1,我需要重新 运行 salt '*' state.highstate
以获得正确的值。这会导致像 这样的问题,这让我浪费了很多时间。
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] }}
Salt 正在缓存 grains 的值。因此 salt['config.get']('fqdn_ip4')
将从脚本开头检索值。
在您的状态文件中使用以下内容来刷新颗粒信息:
refreshgrains:
module.run:
- name: saltutil.sync_grains
Salt 会在执行之前渲染状态,因此您可能无法在状态文件本身中使用任何新的粒度信息。
但是您将能够在文件的 Jinja 模板中使用新的粒度值。我假设第二个代码片段来自 Salt file.managed
使用的模板,所以你在这里应该是安全的。
盐缓存/etc/hosts吗? 我处于更改 /etc/hosts 以便 FQDN 指向外部 IP 地址而不是 127.0.0.1
的情况问题是在第一个 运行 中,fqdn_ipv4 保持为 127.0.0.1,我需要重新 运行 salt '*' state.highstate
以获得正确的值。这会导致像
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] }}
Salt 正在缓存 grains 的值。因此 salt['config.get']('fqdn_ip4')
将从脚本开头检索值。
在您的状态文件中使用以下内容来刷新颗粒信息:
refreshgrains:
module.run:
- name: saltutil.sync_grains
Salt 会在执行之前渲染状态,因此您可能无法在状态文件本身中使用任何新的粒度信息。
但是您将能够在文件的 Jinja 模板中使用新的粒度值。我假设第二个代码片段来自 Salt file.managed
使用的模板,所以你在这里应该是安全的。