vivion34 发表于 2015-11-26 12:31:49

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.lsGrains数据能够使用'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 函数来同步。
  


  


  




  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  
页: [1]
查看完整版本: Salt 翻译之Grains