SaltStack的数据系统
一.SaltStack数据系统的分类
1.Grains(收集的是静态数据)
官方使用文档:https://www.unixhot.com/docs/saltstack/topics/targeting/grains.html
Grains是Minion在启动时候,收集的系统的信息,收集的这些信息是静态的数据,如果系统在启动之后一些参数发生了变化,Minion是收集不到的,除非将Minion重启,才会重新对系统信息做收集。
应用场景:
1.Grains可以在state(状态)系统中使用,用于配置管理模块。 2.Grains可以target(匹配目标)中使用,在用来匹配Minion,比如匹配操作系统,使用-G选项。 3.Grains可以用于信息查询,Grains保存这收集到的客户端的详细信息。
使用案例:
salt 'linux-node2' grains.ls #列出所有收集系统的信息项 salt 'linux-node2' grains.items #将收集的系统的所有项和内容都列出来 salt -G 'os:CentOS' cmd.run 'uptime' #对所有minion中系统是CentOS操作系统的,执行uptime命令 salt 'linux-node2' grains.item fqdn_ip4 #查看通过主机名解析出来的ip地址,这个ip地址是唯一的
实际使用场景:
想让本地的apache监听本地的IP地址和端口
使用到的技术:static的Graiins数据系统、jinja模版语言
(jinja语言使用方法,可参考我的博客:https://www.cnblogs.com/Jackie-Chen/articles/10763484.html )
lamp-install: pkg.installed: - pkgs: - httpd - php - php-pdo - php-mysql apache-config: file.managed: - name: /etc/httpd/conf/httpd.conf #这个文件中要使用到Jinja模板中的变量 - source: salt://web/files/httpd.conf - user: root - group: root - mode: 644 - template: jinja #使用template参数,指定使用的模板,用Jinja模板 - defaults: #通过defaults指定变量 PORT: 80 #定义一个PORT变量,值为80 IPADDR: {{ grains['fqdn_ip4'][0] }} #定义一个IP地址,值为minion本地的IP地址 - require: - pkg: lamp-install
对于apache中使用Jinja模板配置如下,监听的端口和地址使用Jinja中的变量:
vim /etc/httpd/conf/httpd.conf
Listen {{ IPADDR }}:{{ PORT }}
2.Pillar
未完待续。。。。。