一.saltstack
saltstack是一个配置管理系统,能够维护预定义状态的远程节点。
saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。
saltstack是运维人员提高工作效率、规范业务配置与操作的利器。
Salt的核心功能
(1)使命令发送到远程系统是并行的而不是串行的
(2)使用安全加密的协议
(3)使用最小最快的网络载荷
(4)提供简单的编程接口
Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。
二.saltstack安装与配置
1.搭建yum仓库(master与minion一样)
[root@server9 ~]# cd /etc/yum.repos.d
[root@server9 yum.repos.d]# vi salt.repo
[root@server9 yum.repos.d]# yum clean all
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Cleaning repos: dvd salt
[root@server9 yum.repos.d]# yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
dvd | 4.3 kB 00:00:00
salt | 3.0 kB 00:00:00
(1/3): dvd/group_gz | 146 kB 00:00:00
(2/3): dvd/primary_db | 4.2 MB 00:00:00
(3/3): salt/primary_db | 12 kB 00:00:00
repo id repo name status
dvd rhel7.6 5,152
salt saltstack 3000.3 18
repolist: 5,170
[salt]
name = saltstack 3000.3
baseurl = http://172.25.13.250/3000
gpgcheck = 0
2.master端配置
[root@server9 yum.repos.d]# yum search python-setproctitle
[root@server9 yum.repos.d]# yum install -y python-setproctitle.x86_64
[root@server9 yum.repos.d]# yum install -y salt-master.noarch
[root@server9 yum.repos.d]# systemctl start salt-master
3.minion端配置
[root@server10 ~]# yum install salt-minion.noarch
[root@server10 ~]# systemctl enable --now salt-minion
Created symlink from /etc/systemd/system/multi-user.target.wants/salt-minion.service to /usr/lib/systemd/system/salt-minion.service.
[root@server10 ~]# vi /etc/salt/minion
master: 172.25.13.9
3.master端执行命令允许minion连接
[root@server9 yum.repos.d]# salt-key -L
[root@server9 yum.repos.d]# salt-key -A
4.saltstack的安装与配置
master端测试与minion端的连接
[root@server9 yum.repos.d]# salt '*' test.ping
server10:
True
server11:
True
三.saltstack远程执行
1.远程执行shell命令
[root@server9 yum.repos.d]# salt '*' cmd.run hostname
[root@server9 yum.repos.d]# salt '*' cmd.run 'uname -a'
[root@server9 yum.repos.d]# salt server10 pkg.install httpd
2.编写远程执行模块
(1)创建模块目录
[root@server9 salt]# mkdir _modules
(2)编写模块文件
[root@server9 _modules]# vi mydisk.py
def df():
return __salt__['cmd.run']('df -h')
(3)同步模块
[root@server9 _modules]# salt server10 saltutil.sync_modules
server10:
- modules.mydisk
(4)运行模块
[root@server9 _modules]# salt server10 mydisk.df
server10:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 17G 1.2G 16G 7% /
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 120K 496M 1% /dev/shm
tmpfs 496M 13M 483M 3% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 1014M 132M 883M 14% /boot
tmpfs 100M 0 100M 0% /run/user/0
3.配置管理(apache)
Salt 状态系统的核心是SLS,或者叫SaLt State 文件。
SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。
sls文件命名:
sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。
使用子目录来做组织是个很好的选择。
init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以apache/init.sls 就是表示apache.
如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.
(1)创建sls文件
[root@server9 salt]# mkdir httpd
[root@server9 salt]# cd httpd
[root@server9 httpd]# vi apache.sls
(2)指定主机执行
[root@server9 httpd]# salt server10 state.sls apache
(3)准备top文件
[root@server9 salt]# vi top.sls
base:
'server10':
- httpd.service
(4)批量执行
[root@server9 salt]# salt server10 state.highstate
4.配置管理(下载安装apache,php,php-mysql,修改配置文件,开启,重启服务)
(1)编写sls文件
(2)指定主机执行
(3)将管理与安装分开
(4)批量化执行
4.配置管理(nginx源码安装,修改配置文件)
(1)编写sls文件
[root@server9 salt]# mkdir nginx
[root@server9 salt]# cd nginx
[root@server9 nginx]# mkdir files
[root@server9 nginx]# cd files
[root@server9 files]# mv ~/nginx-1.18.0.tar.gz .
[root@server9 nginx]# vi install.sls
(2)指定主机执行
[root@server9 nginx]# salt server11 state.sls nginx.install
重复执行时会显示原文件一存在,不会重复生成