配置管理篇(2)_SaltStack grains
来源:互联网 发布:淘宝店铺怎么虚拟发货 编辑:程序博客网 时间:2024/06/04 20:00
转载自: https://www.xiaomastack.com/2014/10/31/saltstack-grains/
grains主要负责采集并返回客户端minion的一些基本信息, saltstack自带grains模块可以采集机器的很多基本信息,对于比较特别的信息grains可以在客户端或服务器端自定义item后采集,不管是那种方式自定义grains的item,最终grains的item值都是由客户端minion采集完成后上报给服务端master的,采集动作只在启动客户端或有新的grains添加时触发,grains采集上报的数据可以作为资产管理的元数据。一个客户端在启动时就将自定义或基本的item信息值读取到内存了,这些值是个常量在下次重启客户端之前不会改变。
先看看怎样使用,然后瞧瞧怎样自定义(4种自定义方法)
查看所有的grains项 grains.ls
[root@saltstack ~]
# salt minion01 grains.ls
minion01:
- biosreleasedate
- biosversion
- cpu_flags
- cpu_model
- cpuarch
- defaultencoding
... ... ...
查看所有的grains项的详细信息 grains.items
[root@saltstack ~]
# salt minion01 grains.items
minion01:
biosreleasedate: 07
/02/2012
biosversion: 6.00
... ... ...
查看grains指定的item信息
[root@saltstack ~]
# salt minion01 grains.item shell
minion01:
shell:
/bin/sh
[root@saltstack ~]
# salt minion01 grains.item os
minion01:
os: CentOS
[root@saltstack ~]
# salt minion01 grains.item ipv4
minion01:
ipv4:
127.0.0.1
192.168.186.135
grains添加自定义items
1、在master端添加
在配置文件file_roots指定的目录(默认是/srv/salt)下创建_grains目录,编写可以返回一个字典的py文件(需要懂点python)。
[root@saltstack ~]
# grep -Ev "^$|^#" /etc/salt/master
file_roots:
base:
-
/srv/salt
pillar_roots:
base:
-
/srv/pillar
[root@saltstack ~]
#
例如grains添加自定义item(disk_size)返回磁盘的大小,注意python脚本返回值是一个字典。
[root@saltstack _grains]
# cat disk.py
#coding=utf-8
import
os
def
disk_size():
''' get disk size '''
disk
=
os.statvfs(
"/"
)
capacity
=
disk.f_bsize
*
disk.f_blocks
ret
=
int
(
float
(capacity)
/
1000
/
1000
/
1000
)
if
ret >
1000
:
obj
=
ret
/
1000.0
disk_size
=
(
"%.1f"
%
obj)
+
'T'
else
:
ret
=
str
(ret)
disk_size
=
ret
+
'G'
return
{
'disk_size'
: disk_size}
用saltutil.sync_grains或者saltutil.sync_all将自定义的grains item 同步到minion端,如果只同步grains建议使用saltutil.sync_grains。
[root@saltstack _grains]
# salt minion01 saltutil.sync_grains
minion01:
- grains.__init__
- grains.disk
[root@saltstack _grains]
# salt minion01 saltutil.sync_all
minion01:
----------
grains:
modules:
outputters:
renderers:
returners:
states:
从结果可以看到sync_grains和sync_all不同之处了吧。
同步完成后在minion端的以下目录中可以找到master下发的grains文件
[root@minion01 minion.d]
# ls /var/cache/salt/minion/extmods/grains/
disk.py disk.pyc __init__.py
看看是否同步成功
[root@saltstack _grains]
# salt minion01 grains.item disk_size
minion01:
disk_size: 19G
[root@saltstack _grains]
#
2、在minion端添加
可以直接在配置文件/etc/salt/minion中添加,但一般不这么干。一般会将default_include: minion.d/*.conf配置项打开,然后将自定义grains的以.conf结尾的配置文件放到minion.d这个目录中。
[root@minion01 ~]
# grep -Ev "^$|#" /etc/salt/minion
default_include: minion.d/*.conf
master: 192.168.186.134
id
: minion01
在minion.d目录中添加并编辑grains.conf文件(文件名随意)
[root@minion01 minion.d]
# cat grains.conf
grains:
IDC: xxx-xxx-xxx
dFlag: 2014
/10/31
[root@minion01 minion.d]
#
重启salt-minion后生效,然后在master端查看自定义的grains
[root@saltstack _grains]
# salt minion01 grains.get IDC
minion01:
xxx-xxx-xxx
[root@saltstack _grains]
# salt minion01 grains.get dFlag
minion01:
2014
/10/31
[root@saltstack _grains]
# salt minion01 grains.item dFlag
minion01:
dFlag: 2014
/10/31
[root@saltstack _grains]
# salt minion01 grains.item IDC
minion01:
IDC: xxx-xxx-xxx
[root@saltstack _grains]
#
3、在master端直接用grains.setval为指定minion的grains设定一个item
设定welcome的值为’hello world’
[root@saltstack _grains]
# salt minion01 grains.setval welcome 'hello world'
minion01:
welcome: hello world
查看定义的item的值
[root@saltstack _grains]
# salt minion01 grains.item welcome
minion01:
welcome: hello world
[root@saltstack _grains]
# salt minion01 grains.get welcome
minion01:
hello world
[root@saltstack _grains]
#
这次定义的grains保存在minion端的配置文件/etc/salt/grains中
[root@minion01 salt]
# pwd
/etc/salt
[root@minion01 salt]
# cat grains
welcome: hello world
4、在master端通过states的grains方法也可以自定义grains
为了方便管理,在文件夹/salt/srv下再创建文件夹gitems,然后再该文件夹下编辑新的sls文件gtest.sls
[root@saltstack gitems]
# pwd
/srv/salt/gitems
[root@saltstack gitems]
# ls
gtest.sls
[root@saltstack gitems]
# cat gtest.sls
country:
grains.present:
- value: china
[root@saltstack gitems]
#
下发到minion端,并查看新添加的item
[root@saltstack gitems]
# salt minion01 state.sls gitems.gtest
minion01:
----------
ID: country
Function: grains.present
Result: True
Comment: Set grain country to china
Changes:
----------
country:
china
Summary
------------
Succeeded: 1
Failed: 0
------------
Total: 1
[root@saltstack gitems]
# salt minion01 grains.get country
minion01:
china
该方法定义的grains同样保存在minion端的配置文件/etc/salt/grains中
[root@minion01 salt]
# cat grains
country: china
welcome: hello world
[root@minion01 salt]
#
转载请注明出处:http://www.xiaomastack.com/2014/10/31/saltstack-grains/ 谢谢!
- 配置管理篇(2)_SaltStack grains
- 配置管理工具Saltstack 之 自定义grains
- Grains
- 自动化管理工具Saltstack之Grains篇(4)
- saltstack grains
- saltstack grains
- saltstack grains
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 配置管理
- 读书笔记(一)
- Xcode插件管理工具Alcatraz的安装
- 内存存储 MemoryStore
- 栈&队列面试题之两个队列实现一个栈
- 【从C到C++学习笔记】C++介绍/推荐书籍/开发工具
- 配置管理篇(2)_SaltStack grains
- 用flask开发个人博客(2)—— Flask中的请求对象request
- saltstack api部署,使用.
- cocoapods的安装笔记
- MyEclipse——主题设置
- xml学习
- 915
- JSP学习
- 【从C到C++学习笔记】bool类型/const限定符/#define//结构体对齐