概述
实验环境以及基础安装
操作系统:
Salt master:
Ubuntu 16.04.2 LTS
Three minions:
Both CentOS Linux release 7.3.1611 (Core)
还有salt-master本身也可以作为minion.
安装很简单,yum,apt-get 等等即可.简单配置minion的/etc/salt/minion文件中的salt master为master的hostname,启动minion上的salt-minion service。然后在salt-master端,使用命令salt-key -L 查看cache的minion keys以及salt-key -a key1 或者salt-key -A直接接受所有的minion key,这样初始环境就搭建好了。
Salt 基础命令介绍
salt 命令的结构:
salt [options] '<target>' <function> [arguments]
options,salt-master端的操作,target是要操作的minion,func是指salt的模块函数,arguments是指minion上面运行的命令。
- target的匹配。比如'*' 代表所有的minion.salt '*' cmd.run 'echo hello',这条命的意思是在所有的('*'匹配所有)minions上面执行命令‘echo hello’,cmd.run是salt的一个函数,cmd是一个module.结果为
- centser1:
hello
ubunser1:
hello
centser2:
hello - 通过正则表达式子匹配,命令方式为salt -E 'pattern' mod.func args.正则表达式下面的全局匹配为salt -E '.*' test.ping,test.ping一般用于在salt-key 命令之后测试master与minion是否联通的命令
- 列表匹配salt -L 'centser1,ubunser1,centser2' test.ping,
salt查看模块函数的帮助文档:salt ‘centser1’ sys.doc test.ping
Grains:
Grains用于描述minion本身的固有静态数据。例如minino的系统版本,内存的大小,网卡的MAC地址等。
salt 'centser1' grains.items可以列出minion的所有Grain数据。
salt '*' grains.item os 查看所有mininon的操作系统
查看所有的grains name:
salt 'centser1' grains.ls
查看单个grain的值
salt 'centser1' grains.item uuid
使用grains 匹配target
salt -G 'os:CentOs' test.ping (操作系统名大小写不敏感)
手动设置自定义的grains
salt 'centser1' grains.setval usage webserver 设置cetser1为webserver
到centser1上cat /etc/salt/minion 为
# cat /etc/salt/grains
usage: webserver
usage: webserver
已经设置成功,重启服务也会生效。
另外一种设置minion grain的方法是创建minion的/etc/salt/minion.d/grain.conf文件夹,并写入相关的grains数据:
例如:
grains:
new1: bar
new2:
- one
- two
new1: bar
new2:
- one
- two
restart minion service,就可以生效
也可以使用Json语法,Json语法简介:
JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
Pillars
pillars属于动态数据,在运行时候动态获取属性的值,grains是minion service重启以后或者在master设置之后就固定的。
例如在master下面设置相对于不同的服务器不同的key文件。
在/srv/pillar下面创建 centser1_key.sls centser2_key.sls两个文件,centser1.sls的内容为:
private_key: key1
centser2 类似,并且创建top.sls文件,并写入:
base:
'centser1':
- centser1_key
'centser2':
- centser2_key
'centser1':
- centser1_key
'centser2':
- centser2_key
然后使用命令:
salt '*' saltutil.refresh_pillar 刷新所有pillar数据。
查看salt 'centser1' pillar.item private_key
输出
centser1:
----------
private_key:
key1
----------
private_key:
key1
案例1:使用Jinja模板动态下发配置文件
结合Jinja2 模板以及grains 和pillar下发配置文件
创建文件 template.sls
template_test:
file.managed:
- source: salt://test.j2
- name: /tmp/test.conf
- user: root
- group: root
- template: jinja
file.managed:
- source: salt://test.j2
- name: /tmp/test.conf
- user: root
- group: root
- template: jinja
注意这里需要有template的定义为jinja
创建test.j2文件
cpu_num = {{ grains['num_cpus'] }}
mem_total = {{ grains['mem_total'] }}
hostname = {{ grains['host'] }}
mem_total = {{ grains['mem_total'] }}
hostname = {{ grains['host'] }}
info = {{ pillar['info'] }}
运行salt '*' state.sls template
登陆机器查看结果
[root@centser2 minion.d]# cat /tmp/test.conf
cpu_num = 1
mem_total = 740
hostname = centser2
info = some data
cpu_num = 1
mem_total = 740
hostname = centser2
info = some data
[root@centser2 minion.d]# cat /tmp/test.conf
cpu_num = 1
mem_total = 740
hostname = centser2
info = some data
cpu_num = 1
mem_total = 740
hostname = centser2
info = some data
最后
以上就是含糊春天为你收集整理的Saltstack-01基本命令的全部内容,希望文章能够帮你解决Saltstack-01基本命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复