Salt 翻译之Grains

原文地址:http://docs.saltstack.com/topics/targeting/grains.html

之所以翻译这样子的文章,是因为自己在学下Salt,举手之劳,希望能帮助他人,如果误导了你,在此表示歉意。

Grains

Salt 迎来了一个能够获取基础系统的静态信息的接口,之所以被称为grains接口,是因为通过salt获取了minion的基础信息。

Grains

当minion第一次启动的时候,它会收集关于系统的所有的静态信息。

grains 接口是用于salt的核心模块和组件,以便正确的salt minion命令在特定的系统上能够自动可用。

重要的是需要记住当salt minion启动时那些从它获取到的静态信息,因为这些信息是静态的。这意味着在grains中的信息是不变的,因此这些自然的数据时静态的,所以

grains的信息是像这样子的,运行内核,或者操作系统。

匹配所有CentOS 从服务器:

salt -G 'os:CentOS' test.ping

匹配所有64位CPU从服务器,并且返回可用的核数:

salt -G 'cpuarch:x86_64' grains.item num_cpus

列出GRAINS

可用的grains能够使用'grains.ls'模块列出:

salt '*' grains.ls
Grains数据能够使用'grains.items'模块列出:

salt '*' grains.items

Grains 在从服务器上配置

Grains的数据能够在从服务器的配置文件中静态的指定,通过增加grains选项和更改选项指定:

grains:
  roles:
    - webserver
    - memcache
  deployment: datacenter4
  cabinet: 13
  cab_u: 14-15

然后这些在你服务器上的数据能够通过Salt获取,或者使用State 系统匹配。在上面的例子中,可以根据你的系统环境自主设置。

关于GRAINS需要注意的:

Grains的配置很容易写,grains接口数据是通过执行所有‘公共’功能模块来获取位于grains包或者自定义的grains目录。返回的信息必须是Python

dict数据,在字典中的键值是grains的名字,并且它的值是字典中的变量。

自定义的grains值应该放在一个_grains目录中位于file_roots master指定配置文件中。当运行state.highstate时,他们会被分发到从服务器上。或者

通过执行saltutil.sync_grains和saltutil.sync_all函数。

在添加grain信息之前,需要认真考虑grain信息是哪些,哪些需要静态的数据,如果这些数据是可变的,考虑使用Pillar替代。


Grains的例子:

在Grains包中核心的模块,提供了如何书写Grains的例子。

https://github.com/saltstack/salt/blob/develop/salt/grains/core.py

同步Grains

同步Grains数据可以使用多种方法,当state.highstate调用时可以自动的同步,或者使用saltutil.sync_grains or saltutil.sync_all 函数来同步。























你可能感兴趣的:(Salt 翻译之Grains)