Saltstack-01基本命令

实验环境以及基础安装

操作系统:

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

已经设置成功,重启服务也会生效。
另外一种设置minion grain的方法是创建minion的/etc/salt/minion.d/grain.conf文件夹,并写入相关的grains数据:
例如:
grains:
  new1: bar
  new2:
    - one
    - two
restart minion service,就可以生效

也可以使用Json语法,Json语法简介:

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
salt 'centser1' grains.setval cpu_info '[Intel', 'Xeon', '8']'

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
然后使用命令:
salt '*' saltutil.refresh_pillar 刷新所有pillar数据。
查看salt 'centser1' pillar.item private_key
输出
centser1:
    ----------
    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
注意这里需要有template的定义为jinja
创建test.j2文件
cpu_num = {{ grains['num_cpus'] }}
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
[root@centser2 minion.d]# cat /tmp/test.conf 
cpu_num = 1
mem_total = 740
hostname = centser2
info = some data





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值