Saltctack基础入门
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Saltctack基础入门相关的知识,希望对你有一定的参考价值。
Saltsack架构 基于C/S架构 底层使用ZeroMQ最主要的两个功能:配置管理和远程执行
服务器端称Master
客户端称Minion
一、配置服务器端
[[email protected] saltstack]# yum -y install salt-master
[[email protected] saltstack]# systemctl start salt-master
[[email protected] saltstack]# ss -ltn | grep "450[56]"
LISTEN 0 128 *:4505 *:*
LISTEN 0 128 *:4506 *:*
二、修改/etc/hosts,实现名称解析(每台都要做)
[[email protected] saltstack]#tail -2 /etc/hosts
192.168.113.172 vh01
192.168.113.173 vh02
2.2 修改主配文件 实现与master的通信
[[email protected] ~]# vim /etc/salt/minion
16 master sm
103 id sm
[[email protected] ~]# vim /etc/salt/minion
16 master sm
103 id sm
2.3关闭防火墙
[[email protected] salt]#for i in 172 173;do ssh 192.168.113.${i} 'systemctl stop firewalld.service';done
2.4开启服务(172、173)
[[email protected] ~]# systemctl start salt-minion 开启服务
三 查看用户
[[email protected] saltstack]# salt-key -L 查看密钥信息
Accepted Keys:
Denied Keys:
Unaccepted Keys:
vh01
vh02
[[email protected] saltstack]# salt-key -A -y 接受密钥,完成互信
-L: 列出密钥
-a: 接受一个密钥
-A: 接受全部密钥
-D: 删除全部密钥
[[email protected] saltstack]# salt '*' test.ping 检查客户端服务是否启动
vh01:
True
vh02:
True
四、命令格式
salt[options] '<target>' <function> [arguments]
目标主机的集合 模块.方法 修饰函数.参数
[email protected] ~]# salt -L 'vh01,vh02' cmd.run 'uptime'
vh01: 01:50:01 up 5:49, 2 users, load average: 0.00, 0.01, 0.05
vh02: 01:50:01 up 5:32, 2 users, load average: 0.00, 0.01, 0.05
-L 列表
-E 正则
-N 分组
-S CIDR
[[email protected] ~]# vim /etc/salt/master 定义组
1085 nodegroups:
1086 nsd: '[email protected],vh02'
[[email protected] ~]# salt -N 'nsd' test.ping
vh01:
True
vh02:
True
五、模块及功能
[[email protected] salt]# salt 'vh01' sys.list_modules 所有模块
[[email protected] salt]# salt 'vh01' sys.list_functions uptime 查看模块所有功能
[[email protected] pillar]# salt 'vh01' sys.doc user 查看模块方法
[[email protected] salt]# salt 'vh01' user.add 'tom' 添加用户
vh01:
True
六、Grains组件 是saltstack重要组件之一 存放minion端的基本信息,这些信息一般都是静态的
Grains存储在minion本地,管理员可以在minion端进行grains值的修改
YAML的结构通过空格表示
项目使用"-"表示
键值使用":"表示
master和minion的配置文件均采用YAML语法
规则一 缩进级别由两个空格 不能用tab
规则二 键值对采用冒号分割
规则三 列表使用一个短横杠加一个空格
grains 组件
[[email protected] ~]# salt 'vh02' sys.list_modules 所有可用模块
[[email protected] ~]# salt 'vh02' sys.list_functions《模块》 查看所有模块
[[email protected] salt]# salt 'vh02' grains.items 查看所有信息
[[email protected] salt]# salt '*' saltutil.sync_grains 刷新所有grains信息
[[email protected] salt]# salt 'vh02' grains.item key 查看某台key的信息
[[email protected] salt]# salt -G 'os:RedHat' test.ping 匹配grains信息分类
[[email protected] ~]# salt 'vh02' sys.doc user.list_users 查看用法
[[email protected] ~]# salt 'vh02' sys.doc user.add
user.add:
Add a user to the minion
CLI Example:
salt '*' user.add name <uid> <gid> <groups> <home> <shell>
[[email protected] ~]# vim /etc/salt/minion 修改标签
120 grains:
121 web:
122 nginx
[[email protected] salt]# salt -G 'web:nginx' test.ping 匹配标签
vh01:
True
七、Pillae组件
作用是定义与被控主机相关的任何数据 定义好的数据可以被其他组件使用
Pillar需要一个pillar_roots来维护pillar的配置
默认pillar_roots为/srv/pillar
pillar_roots在Master配置文件中定义
[[email protected] ~]# vim /etc/salt/master
768 pillar_roots:
769 base:
770 - /srv/pillar
[[email protected] ~]#mkdir /srv/pillar
[[email protected] pillar]# vim top.sls
base: 与pillar_roots定义一致
'[email protected],vh02': 过滤目标
- appweb
- user 用于包含user.sls
[[email protected] pillar]# vim user.sls
users:
zhang3: 1000
li4: 1001
[[email protected] pillar]# vim appweb.sls
appname: web
software:
- apache
- nginx
[[email protected] pillar]# salt '*' saltutil.refresh_pillar 刷新所有信息
[[email protected] pillar]# salt '*' pillar.items 获取pillar所有信息
[[email protected] pillar]# salt '*' pillar.item user 获取指定数据
[[email protected] pillar]# salt -I 'software:nginx' test.ping 根据pillar值匹配minion
Jinja是基于Python的模板引擎
在saltstack中我们使用yaml——jinja渲染器来根据模块生产对应的配置文件
Jinja使用步骤
在state文件中使用"- template: jinja"声明
在模板文件中使用变量"{{ name }}"声明,name为变量,自己定义
在state文件中使用"- defautls: name: value"声明
States是satlstack中的配置语言
安装软件包、管理配置文件都需要编写一些states sls文件
states sls使用YAML语法
查看所有states列表
[[email protected] pillar]# salt 'vh01' sys.list_state_modules
查看states模块功能
[[email protected] pillar]# salt 'vh01' sys.list_state_functions file
为不同的环境设置不同的文件目录
[[email protected] salt]# vim /etc/salt/master
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
prod:
- /srv/salt/prod
[[email protected] salt]# systemctl restart salt-master.service
[[email protected] salt]# mkdir /srv/salt/{base,dev,prod}
例子1
[[email protected] srv]# mkdir base dev prod
[[email protected] base]# vim top.sls
base: 环境
'*': 用户
- dns 执行什么
[[email protected] srv]# vim dns.sls
abc:
file.managed: 调用的模块
- name: /etc/resolv.conf 目标文件
- source: salt://files/dns.conf 源文件
- user: root 所有者
- group: root 所属主
- mode: 644 权限
[[email protected] base]# mkdir files
[[email protected] base]# vim files/dns.conf
nameserver 192.168.1.1
[[email protected] base]# salt '*' state.highstate saltenv=base test=True 测试
[[email protected] base]# salt '*' state.highstate saltenv=base test=False 执行
[[email protected] base]# salt '*' cmd.run 'cat /etc/resolv.conf'
vh01:
nameserver 192.168.1.1
vh02:
nameserver 192.168.1.1
例子2
[[email protected] base]# vim top.sls 执行文件分发操作
base:
'*':
- dns
- setdns
[[email protected] base]# vim setdns.sls 用于向指定文件中追加文本
append_dns:
file.append: 追加内容
- name: /etc/sysconfig/network-scripts/ifcfg-eth0
- text:
- DNS1=9.9.9.9
进行查看
[[email protected] base]# salt '*' state.highstate saltenv=base test=False
[[email protected] base]# salt 'web1' cmd.run 'tail -1 /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=9.9.9.9
使用file.directory模块
用于创建或管理目录
[[email protected] base]# vim pkgs.sls
pkgs:
file.directory:
- name: /opt/rpm_pkgs
- user: root
- group: root
- dir_mode: 755
- file_mode: 644
[[email protected] base]# salt 'vh02' cmd.run 'touch /opt/rpm_pkgs/1.txt'
[[email protected] rpm_pkgs]# ll -ls
总用量 0
0 -rw-r--r--. 1 root root 0 1月 19 22:34 1.txt
【具体模块的使用需网上查看相关文档】
以上是关于Saltctack基础入门的主要内容,如果未能解决你的问题,请参考以下文章