我是靠谱客的博主 含糊春天,最近开发中收集的这篇文章主要介绍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





最后

以上就是含糊春天为你收集整理的Saltstack-01基本命令的全部内容,希望文章能够帮你解决Saltstack-01基本命令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部