换盐/ etc / hosts,但仍然缓存旧的?

时间:2015-06-23 15:36:39

标签: salt-stack

盐缓存/ 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] }}

1 个答案:

答案 0 :(得分:0)

盐正在缓解谷物的价值。因此,salt['config.get']('fqdn_ip4')将从脚本的开头检索值。

在状态文件中使用以下内容来刷新粒度信息:

refreshgrains:
  module.run:
    - name: saltutil.sync_grains

Salt将在执行之前呈现状态,因此您可能无法在状态文件本身内使用任何新的粒度信息。

但是你可以在Jinja模板中使用新的谷物值来存储文件。我假设第二个代码段来自Salt file.managed使用的模板,因此您应该在这里安全。