SaltStack

SaltStack功能:

主要功能:配置管理与远程执行

架构:

基于C/S架构:服务器Master,客户端Minion

工作机制:

  • Master和Minion都以守护进程的方式运行
  • Master监听配置文件里定义的ret_port(接受minio请求),和publish_port(发布消息)的端口
  • 当Minion运行时,它会自动连接到配置文件定义的Master地址ret_port端口进行连接认证
  • 当Master和Minion可以正常通信后,就可以进行各种各样的配置管理工作

 

安装配置:

1.编辑hosts文件或搭建DNS服务器,指向masternode

# vim /etc/hosts
192.168.173.153 master.test.com
192.168.173.154 node1.test.com

2.设置hostname

[iyunv@master ~]# vim /etc/sysconfig/network #node上同理
HOSTNAME=master.test.com

3.安装包注:先安装epel-release

服务端:epel-release salt-master salt-minion

客户端:epel-release salt-minion

4.配置:/etc/salt/minion

服务端&客户端:

master: masterip

#要地址解析,或用/etc/hosts解析;冒号后有空格

id: 主机名

5.启动服务:

服务端:

[root@localhost ~]# systemctl start salt-master

[root@localhost ~]# systemctl start salt-minion

客户端:systemctl start salt-minion

6.测试:在服务端

查看连接的nodesalt-key -L    #均未被接纳,unaccepted keys:

建立互信:salt-key -A -y           #接纳成功 Accepted keys:

测试通信:salt '*' test.ping         #显示True为正常

 

MasterMinion互信:

MasterMinion上线后与Master端联系,把自己的pubkey发过去,Master接受Minion的公钥后,互信建立完成

密钥管理:

salt-key -h

  -L:列出密钥

  -a:接受一个密钥

  -A:接受全部密钥

  -d:删除一个密钥

  -D:删除全部密钥

远程执行命令:

salt [options] '<target>' <function> [arguments]

target:指定Minion机器,可以通配符'*'

function:采用python的模块.方法样式

arguments是传递方法的参数

options:

-E:使用正则表达式匹配

-L:使用列表匹配",分隔"

-N:分组匹配,例:salt -N '组名1' test.ping

分组定义在/etc/salt/master

nodegroups:

组名:'L@主机名1,主机名2'       #L@表示列表分组,注意缩进

常用模块,方法:

  列出所有模块:salt '*' sys.list_modules

  列出模块所有方法:salt '*' sys.list_functions test (test表示模块名)

  列出模块帮助:salt '*' sys.doc test

  重载模块:salt '*' sys.reload_modules

  分发文件:cp.get_file

  执行命令:cmd.run

 

组件:

Grains:

是saltstack的重要组件;存储minion端的基本信息,一般为静态;Grains存储在minion本地,管理员可以在minion端进行grains值的修改

基础命令:

获取minion端所有grains信息:salt '*' grains.items

   

获取minion端的键值:salt '*' grains.item 键名

   

匹配minion端执行命令:salt -G 'miminion的键值' cmd.run '命令'

   

设置grains值:存放到slaver/etc/salt/grains文件中

单个值设置:salt '*' grains.setval 键名 值

   

多个值设置:salt '*' grains.setvals "{'键名1':'值1','键名2':'2'}"

   

删除自定义的grainssalt '*' grains.delval 键名

注:也可在/etc/salt/minion配置文件中找到grains的进行设置 

  pillar:

定义与被控主机相关的任何数据,定义好的数据可以被其它组件使用;存储在master端,存放要提供给minion的信息;常用于敏感信息,每个minion只能访问master分配给自己的pillar信息;用于经常动态变化的信息

启用:去掉/etc/salt/master文件中的注释,更改后重启服务

pillar_roots:

base:

  - /srv/pillar    #pillar_roots默认位置,自己创建

    定义pillar数据:/srv/pillar

pillar执行要一个top.sls的入口文件,采用YAML格式,通过top.sls文件组织其它pillar文件

top.sls文件配置

base:    #pillar_roots中定义一致

'vh02.tedu.cn'   #过滤目标,可以定义多个

- data     #用于包含.sls,创建同名的.sls文件,或同名目录下的init.sls文件,目录优先级高

   

data.sls文件配置:

   appname: 名字

flow:

键名: 键值

   

命令:

同步至minionsalt '*' saltutil.refresh_pillar

   

获取pillar全部数据:salt '*' pillar.items

获取指定数据:salt '*' pillar.item 指定内容

   

YAML语法:

结构通过空格展示

项目使用"-"表示

键值对使用":"表示

规则:

使用一个固定的缩进风格表示数据层级结构关系

一般每个缩进级别由两个空格组成

不要使用tab

{}表示字典

-表示列表

:-后有空格

   

   

  

posted @ 2018-11-13 19:52  KAZUYA  阅读(255)  评论(0编辑  收藏  举报