Saltstack系列4:Saltstack之Grains组件

  • 来源:网络
  • 更新日期:2020-08-10

摘要:建站服务器 grains说明 grains是Saltstack最重要的组件之一,grains的作用是手机被控主机的基本信息,这些信息通常都是一些静态类的数据,包括

建站服务器 grains说明

grains是Saltstack最重要的组件之一,grains的作用是手机被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU、内核、操作系统、虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可以利用这些信息对不同业务进行个性化定制。

例:(janja模板)

{% if grains['os'] == 'Ubuntu' %}
host: {{ grains['host'] }}
{% elif grains['os'] == 'CentOS' %}
host: {{ grains['fqdn] }}
{% endif %}
grains常用操作命令

匹配内核版本为2.6.32-358.14.1.el6.x86_64的主机

salt -G 'kernelrelease:2.6.32-358.14.1.el6.x86_64' cmd.run 'uname -a'

获取所有主机的grains项信息

salt '*' grains.ls
定义grains数据

定义grains数据的方法有两种,一种为在被控主机定制配置文件:另一种是通过主控端扩展模块API实现。区别是模块更灵活,可以通过Python编程动态定义,而 
配置文件只适合相对固定的键与值。下面分别进行说明:

1、被控端主机定制grains数据

【/etc/salt/minion】

default_include:minion.d/*.conf #自定义grains配置文件路径

grains配置文件:【/etc/salt/minion.d/hostinfo.conf】

grains:
  roles:
    - webserver
    - memcache
  deployment: datacenter4
  cabinet: 13

重启salt-minion使之生效: service salt-minion restart
验证:

salt 'wx' grains.item roles deployment cabinet

结果:

salt 'wx' saltutil.sync_all

结果:文件同步到被控端的cache目录中

/var/cache/salt/minion/extmods/grains/grains_openfile.py
/var/cache/salt/minion/files/base/_grains/grains_openfile.py
#注:/var/cache/salt/minion/extmods/grains/为扩展模块文件最终存放位置,刷新模块后将在同路径下生产字节码pyc;/var/cache/salt/minion/files/base/_grains/为临时存放位置。

刷新模块:

salt 'wx' sys.reload_modules
#生成pyc字节码
/var/cache/salt/minion/extmods/grains/grains_openfile.py
/var/cache/salt/minion/extmods/grains/grains_openfile.pyc
/var/cache/salt/minion/files/base/_grains/grains_openfile.py

验证:

salt 'wx' grains.item max_open_file

结果:

wx:
----------
  max_open_file:
    1024

参考资料:

根据刘天斯《Python自动化运维技术与最佳实践》整理

新网虚拟主机