您的位置:首页 > 大数据 > 人工智能

[Saltstack]-{grains,pillar}[二]

2016-07-07 16:39 399 查看
[Saltstack][grains][pillar][二]
[grains]
<span style="color:#3333ff;"><strong>当minion端的minion服务启动的时候,会调用这个grains接口,然后收集minion的信息,收集到信息是可以在salt的其他
模块使用的,但是每当minion的服务启动的时候,也仅仅只会收集一次。不能实时的进行收集,除非重启minion端的服务。</strong></span>
--------------------------------------------------------------
salt '192.168.60.101' grains.ls
192.168.60.101:
- SSDs	固态硬盘
- biosreleasedate	BIOS发布时间
- biosversion	BIOS版本
- cpu_flags		CPU特征信息
- cpu_model		CPU型号
- cpuarch		CPU架构类型
- domain		默认名称
- fqdn 			正式域名
- fqdn_ip4		正式ipv4公网地址
- fqdn_ip6		正式ipv6公网地址
- gpus 			图形处理器
- host          主机类型
- hwaddr_interfaces  	硬件接口地址(物理mac地址)
- id            IP地址
- init          初始化状态
- ip4_interfaces 	IPV4接口地址
- ip6_interfaces 	IPV6接口地址
- ip_interfaces
- ipv4 		IPV4本地地址(127.0.0.1,192.168.X.X)
- ipv6 		IPV6本地地址
- kernel    核心
- kernelrelease  	核心版本
- locale_info 	本地信息
- localhost 	本地主机名称
- lsb_distrib_codename 		lsb版本名称
- lsb_distrib_id 		lsb的ID号
- lsb_distrib_release  	lsb版本
- machine_id    机器Id
- manufacturer 	制造商
- master   主服务器
- mdadm  		设备管理器
- mem_total 	物理内存
- nodename 		节点名称
- num_cpus  	CPU个数
- num_gpus		GPU个数
- os 			系统
- os_family     系统系列
- osarch  		系统架构类型
- oscodename	系统代码名称
- osfinger 		系统指向
- osfullname 	系统全名
- osmajorrelease 	系统主要版本
- osrelease 	系统版本号
- osrelease_info  系统版本信息
- path 			路径
- productname    产商名称
- ps 		系统当前运行进程状态
- pythonexecutable 		Python可执行状态
- pythonpath 			Python安装路径
- pythonversion 		Python版本
- saltpath 				salt安装路径
- saltversion 			salt版本
- saltversioninfo 	salt版本信息
- selinux 		selinux状态
- serialnumber  serial号
- server_id 	服务号
- shell		shell目录位置
- virtual  	相关虚拟信息
- zmqversion  zmq版本
--------------------------------------------------------------------------
salt '192.168.60.101' grains.items  可以列出可用于192.168.60.101的所有模块
salt '192.168.60.101' grains.item os 单独列出192.168.60.101的os系统信息
salt '*' grains.item ipv4  列出所有主机的有关于ipv4的模块信息
salt -G 'host:linux' grains.item ipv4 列出所有主机名为linux的主机的IPv4的地址
salt -G 'os:centos' test.ping  列出所有系统为centos系统的test.ping的连通性

[pillar]
pillar是柱子的意思,顾名思义就是一个非常重要的具有部署功能的组件,起到柱子的作用,它相较于grains有很强的灵活性,
grains是只能再minion服务启动的时候才能收集一次minion端的信息,而pillar则是动态的,数据可以随时更新。

(1)在使用pillar之前,需要先在master的配置文件里面打开它:
------------------------------
pillar_roots:
base:
- /srv/pillar
---------------------------
然后重新启动master的服务:  service salt-master restart
最后就可以直接创建一个目录:  mkdir /srv/pillar/

(2)需要在/srv/pillar目录下定义一个入口文件top.sls,内容如下:
(因为整个软件是以Python开发,所以严格使用python的缩进格式,即双空格的方式)
---------------------------------------------------------------------------
vim top.sls
base:
'192.168.60.101':
- date    #为主机192.168.60.101定义了一个属性数据,引用了top.sls同目录下的date.sls
'192.168.60.102':
- webserver  #为主机192.168.60.102定义了一个属性数据,引用了top.sls同目录下的webserver.sls
'*':
-   		<span style="color:#993399;"><strong>#为所有节点定义了一个属性数据,引用了/srv/pillar/目录下的init.sls
#这里指的是一个目录,salt会自动在top.sls文件中的应用目录中寻找状态文件
#所以会找到pillar目录中的init.sls文件
#测试的时候不要加任何注释</strong></span>
-----------------------------------------------------------
vim date.sls
date: some date
-----------------
vim webserver.sls
webserver: test_dir
-------------------------------
ll /srv/pillar
总用量 16
-rw-r--r--. 1 root root 16 7月   7 13:56 date.sls
-rw-r--r--. 1 root root 88 7月   7 15:51 top.sls
-rw-r--r--. 1 root root 20 7月   7 13:57 webserver.sls
-----------------------------------------------------------

(3)进行测试:首先同步属性数据到各个minion主机,然后单独采集单个主机信息:
[root@localhost pillar]# salt '*' pillar.items
192.168.60.101:
----------
date:
some date
192.168.60.102:
----------
webserver:
test_dir
[root@localhost pillar]# salt '192.168.60.101' pillar.item date
192.168.60.101:
----------
date:
some date
[root@localhost pillar]# salt '192.168.60.102' pillar.item webserver
192.168.60.102:
----------
webserver:
test_dir
-------------------------------------------这只是一个简单的小实验----------------------

(4)上面进行的只是一个针对单一环境的映射,那么如果在/srv/pillar的下面有个多个目录,该如何呢,
其实很简单,就在master的配置文件里面增加生效的映射目录就可以了,即:
-----------------
file_roots:
base:
- /srv/salt
-------------------可以添加目录-----------
file_roots:
base:
- /srv/salt
dev:
- /srv/salt/dev
prod:
- /srv/salt/prod
--------------------------
这样就可以实现了。
这样<strong><span style="color:#cc66cc;">top.sls在写入内容的时候就可以引用多个环境</span></strong>。例如:
-------------------------------
vim top.sls
base:
'192.168.60.101':
- date
dev:
'192.168.60.102':
- webserver
------------------------
<span style="color:#3333ff;"><strong>【注意】比如date或者webserver的这类文件因为是和top.sls文件是同级的,所以需要放在一个目录里面,如果要放在不同的目录
里面,也要让目录与top.sls同级!这个时候top.sls文件里面的映射则需要加上目录名,然后以“.”号分隔加上sls的文件名,
比如:nginx.sls位于gogo目录下面,就应该写成“- gogo.nginx”</strong></span>
(5)pillar示例:
更改top.sls
---------------------
vim top.sls
base:
'*':
- data
- packages
-----------------
mkdir /srv/pillar/data/ && touch /srv/pillar/data/init.sls
vim init.sls
role: DB_master
------------------------------------------------------------
[root@localhost pillar]# vim packages.sls
{% if grains['id'] == '192.168.60.102' %}
apache: httpd
git: git
{% elif grains['id'] == '192.168.60.101' %}
vim: install
gcc: install
{% endif %}
---------------------------------------------
salt '*' saltutil.refresh_pillar   <span style="color:#3333ff;">//刷新定义未生效的数据</span>
[root@localhost pillar]# salt '*' pillar.items   <span style="color:#3333ff;">//查看minion上面的所有pillar数据</span>
192.168.60.101:
----------
gcc:
install
role:
DB_master
vim:
install
192.168.60.102:
----------
a
4000
pache:
httpd
git:
git
role:
DB_master
--------------------------------
[root@localhost pillar]# salt '*' pillar.raw
192.168.60.102:
----------
role:
DB_master
192.168.60.101:
----------
role:
DB_master
----------------------------

[分组group]
为了便于主机的集中化管理,便需要分组来实现:
一:将分组的信息写入master的配置文件/etc/salt
二:将分组的信息写入一个单独的配置文件中,然后主配置文件来include包含这个分组的配置文件
那么第二种方式的做法:
1.进入master的配置文件找到
default_include: master.d/*.conf  去掉前面的注释
此句意思相当于只要是放到master.d的文件目录中的配置文件都生效,都可以被主配置文件master所承认。

2.master.d的文件默认情况下是没有的,需要手动建立:mkdir /etc/salt/master.d/
顺便建立group.conf的分组配置文件: touch /etc/salt/master.d/group.conf
--------------------------------
vim /etc/salt/master.d/group.conf
nodegroups:
group1: 'L@192.168.60.101'
group2: 'L@192.168.60.102'
--------------------------------------
#L@ 表示minion列表,列表成员为每个minion的id,而这个ID在minion的配置文件中声明
#G@ 表示匹配的是grains的属性  例如:group2: 'G@os:RedHat'

最后重启master的服务:service salt-master restart 或者 /etc/init.d/salt-master restart

3.用test.ping测试组
[root@localhost master.d]# salt -N group1 test.ping
192.168.60.101:
True
[root@localhost master.d]# salt -N group2 test.ping
192.168.60.102:
True

4.同样的,因为上面在做分组之前有同步date和webserver的属性,这里也可以通过组的方式来进行收集:
[root@localhost salt]# salt -N group1 pillar.item date
192.168.60.101:
-----------
date:
some date
[root@localhost salt]# salt -N group2 pillar.item webserver
192.168.60.102:
-----------
webserver:
test_dir
-----------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  saltstack