一.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

saltstack管理windows saltstack安装部署_saltstack

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

saltstack管理windows saltstack安装部署_saltstack管理windows_02

3.master端执行命令允许minion连接

[root@server9 yum.repos.d]# salt-key -L
[root@server9 yum.repos.d]# salt-key -A

saltstack管理windows saltstack安装部署_saltstack_03

4.saltstack的安装与配置

master端测试与minion端的连接

[root@server9 yum.repos.d]# salt '*' test.ping
server10:
    True
server11:
    True

saltstack管理windows saltstack安装部署_linux_04

三.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

saltstack管理windows saltstack安装部署_nginx_05

2.编写远程执行模块

(1)创建模块目录
[root@server9 salt]# mkdir _modules
(2)编写模块文件
[root@server9 _modules]# vi mydisk.py
def df():
    return __salt__['cmd.run']('df -h')

saltstack管理windows saltstack安装部署_apache_06

(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

saltstack管理windows saltstack安装部署_saltstack_07

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

saltstack管理windows saltstack安装部署_apache_08

(2)指定主机执行
[root@server9 httpd]# salt server10 state.sls apache

saltstack管理windows saltstack安装部署_saltstack_09

(3)准备top文件
[root@server9 salt]# vi top.sls
base:
  'server10':
   - httpd.service

saltstack管理windows saltstack安装部署_saltstack_10

(4)批量执行
[root@server9 salt]# salt server10 state.highstate

saltstack管理windows saltstack安装部署_linux_11

saltstack管理windows saltstack安装部署_linux_12

4.配置管理(下载安装apache,php,php-mysql,修改配置文件,开启,重启服务)

(1)编写sls文件

saltstack管理windows saltstack安装部署_linux_13

(2)指定主机执行

saltstack管理windows saltstack安装部署_apache_14

(3)将管理与安装分开

saltstack管理windows saltstack安装部署_saltstack_15

saltstack管理windows saltstack安装部署_saltstack管理windows_16

(4)批量化执行

saltstack管理windows saltstack安装部署_saltstack_17

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

saltstack管理windows saltstack安装部署_linux_18

(2)指定主机执行
[root@server9 nginx]# salt server11 state.sls nginx.install

saltstack管理windows saltstack安装部署_nginx_19

saltstack管理windows saltstack安装部署_saltstack管理windows_20

saltstack管理windows saltstack安装部署_saltstack_21


saltstack管理windows saltstack安装部署_saltstack_22


重复执行时会显示原文件一存在,不会重复生成

saltstack管理windows saltstack安装部署_saltstack管理windows_23