盐堆:向minion或top file添加谷物

4m1*_*4j1 4 python jinja2 salt-stack

在saltstack文档中说,添加:

{% set node_type = salt['grains.get']('node_type', '') %}

{% if node_type %}
  'node_type:{{ self }}':
    - match: grain
    - {{ self }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

/srv/salt/top.sls
Run Code Online (Sandbox Code Playgroud)

将创造一个叫做的谷物 node_type

我将下面的代码添加到顶层文件中,我想知道为什么我node_type在我的小兵中看不到:

myHost ~ # service salt-master restart; service salt-minion restart;
myHost ~ # salt '*' grains.get "node*"
Run Code Online (Sandbox Code Playgroud)

最后一个命令什么都不返回 我认为这是正常的,因为我还没有定义node_type/etc/salt/grains

这让我提出一个问题:有什么区别:

  • top.sls文件中声明node_type

  • 将它简单地添加到grain file(/etc/salt/grains)或minion文件(/etc/salt/minion)

Uta*_*ave 7

您无法在顶部文件中创建纹理.你能指点我告诉你的文件吗?所有顶级文件都会定义应将哪些Salt状态(sls文件)应用于哪些服务器.

您可以在顶部文件中使用谷物匹配.您没有在顶级文件中声明谷物.

您可以创建一个Salt状态,为您的minion添加一个颗粒,并在您的顶级文件中引用它.文档:http://docs.saltstack.com/en/latest/ref/states/all/salt.states.grains.html#salt.states.grains.present

这是一个例子

$ cat /srv/salt/top.sls

base:
  'server01':
    - rolegrain
Run Code Online (Sandbox Code Playgroud)

$ cat /srv/salt/rolegrain.sls

role:
  grains.present:
    - value: application_server
Run Code Online (Sandbox Code Playgroud)

运行高位时,这将导致具有Salt id的服务器具有server01带键role和值的粒度application_server.

这看起来像这样:

salt server01 state.highstate
Run Code Online (Sandbox Code Playgroud)

要么

salt server01 state.sls rolegrain
Run Code Online (Sandbox Code Playgroud)

然后你会得到这个输出

salt server01 grains.item role

server01:
    ----------
    role:
        application_server
Run Code Online (Sandbox Code Playgroud)

为了完整起见,这里有一些文档.

顶部文件:http://docs.saltstack.com/en/latest/ref/states/top.html

谷物:http://docs.saltstack.com/en/latest/topics/targeting/grains.html