网站分几种类型,淄博网站排名外包,wordpress设置权限,标准型网站---北京网站建设一、SaltStack概述 Salt#xff0c;,一种全新的基础设施管理方式#xff0c;部署轻松#xff0c;在几分钟内可运行起来#xff0c;扩展性好#xff0c;很容易管理上万台服务器#xff0c;速度够快#xff0c;服务器之间秒级通讯。 salt底层采用动态的连接总线, 使其可以…一、SaltStack概述 Salt,一种全新的基础设施管理方式部署轻松在几分钟内可运行起来扩展性好很容易管理上万台服务器速度够快服务器之间秒级通讯。 salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等. 多种配置管理工具对比Puppetrubby开发现在很少使用ansiblepython开发轻量级没有agent大规模环境下使用ssh会很慢串行传输Saltstackpython开发远程执行、配置管理、事件驱动基础设施、使用saltcloud可以管理私有云和公有云 官方文档https://docs.saltstack.com/en/getstarted/gt;官方提供官方yum源repo.slatstack.com--可以使用cobbler自定义yum仓库进行同步官方安装源http://repo.saltstack.com/2016.11.html#rhelgt;Saltstack组件SaltMasterSaltMinionExecution Modules 环境说明 主机名IP地址说明系统linux-node1.example.com192.168.56.11模式masterCentos 7.4linux-node2.example.com192.168.56.12模式minionCentos 7.4二、SaltStack安装 1.安装指定的yum源 [rootlinux-node1 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.11-2.el7.noarch.rpm
[rootlinux-node2 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.11-2.el7.noarch.rpm 2.安装salt-master和salt-minion [rootlinux-node1 ~]# yum install -y salt-master
[rootlinux-node1 ~]# yum install -y salt-minion
[rootlinux-node2 ~]# yum install -y salt-minion 3.修改minion配置并启动 [rootlinux-node1 ~]# systemctl start salt-master #启动salt-master
[rootlinux-node1 ~]# vim /etc/salt/minion #配置salt-minion
master: 192.168.56.11 #可以是主机名需要解析指定服务端的IP地址冒号有空格
id 唯一标识符可以不配不配默认就是主机名
[rootlinux-node1 ~]# systemctl start salt-minion #启动salt-minion
[rootlinux-node2 salt]# vim minion
master: 192.168.56.11 #可以是主机名需要解析指定服务端的IP地址冒号有空格
id 唯一标识符可以不配不配默认就是主机名
[rootlinux-node2 salt]# systemctl start salt-minionminion配置中有一个id配置默认是hostname如果id配置和hostname不一致会导致无法进行通信那么当hostname做了修改或者错误的时候该怎么配置呢
①关闭salt-minion
②salt-key -d id 在master上删除minion的id
③minion上删除pki目录
④minion上删除minion_id文件
⑤修改完成启动minion
#此处必须先停掉minion修改并删除相应的文件否则会默认地去查找原先的配置已踩坑#以下是刚装完查看minion_id变成了www.test123.com。进行修改成linux-node2.example.com
[rootlinux-node2 salt]# cat minion_id
www.test123.com
[rootlinux-node2 salt]# systemctl stop salt-minion
[rootlinux-node2 salt]# rm -rf pki
[rootlinux-node2 salt]# rm -rf minion_id
[rootlinux-node2 salt]# systemctl start salt-minion
[rootlinux-node2 salt]# cat minion_id
linux-node2.example.com 4.配置说明 [rootlinux-node2 salt]# ll
总用量 124
-rw-r----- 1 root root 2624 9月 15 23:19 cloud
drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.conf.d
drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.deploy.d
drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.maps.d
drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.profiles.d
drwxr-xr-x 2 root root 6 9月 16 00:41 cloud.providers.d
-rw-r----- 1 root root 46034 9月 15 23:19 master
drwxr-xr-x 2 root root 6 9月 16 00:41 master.d
-rw-r----- 1 root root 35101 1月 16 10:29 minion
drwxr-xr-x 2 root root 27 1月 16 11:47 minion.d
-rw-r--r-- 1 root root 23 1月 16 11:45 minion_id
drwxr-xr-x 3 root root 19 1月 16 11:45 pki
-rw-r----- 1 root root 26984 9月 15 23:19 proxy
drwxr-xr-x 2 root root 6 9月 16 00:41 proxy.d
-rw-r----- 1 root root 344 9月 15 23:19 roster说明
1salt-minion首次启动会在/etc/salt/pki/minion目录下生成公钥和秘钥
[rootlinux-node2 salt]# ll /etc/salt/pki/minion/
总用量 12
-rw-r--r-- 1 root root 450 1月 16 11:47 minion_master.pub
-r-------- 1 root root 1674 1月 16 11:45 minion.pem
-rw-r--r-- 1 root root 450 1月 16 11:45 minion.pub2并且在salt-master的/etc/salt/pki/master/minion_pre中存放了salt-minion的公钥。
[rootlinux-node1 ~]# ll /etc/salt/pki/master/minions_pre/
linux-node1.example.com
linux-node2.example.com5.配置salt-master和slat-minion通信 [rootlinux-node1 salt]# salt-key
Accepted Keys: 同意的
Denied Keys: 拒绝的
Unaccepted Keys: 等待同意的
linux-node1.example.com
linux-node2.example.com
Rejected Keys: 同意认证的方法分为三种 [rootlinux-node1 salt]# salt-key -A
[rootlinux-node1 salt]# salt-key -a 指定id
[rootlinux-node1 salt]# salt-key -a 支持通配符
[rootlinux-node1 master]# salt-key -a linux*
The following keys are going to be accepted:
Unaccepted Keys:
linux-node1.example.com
linux-node2.example.com
Proceed? [n/Y] Y
Key for minion linux-node1.example.com accepted.
Key for minion linux-node2.example.com accepted.salt-key 命令参数介绍
-L 列出所有
-d 删除指定的支持通配符
-D 删除所有
-A 添加所有
-a 指定添加同意之后生成的文件
pki/
├── master
│ ├── master.pem
│ ├── master.pub
│ ├── minions
│ │ ├── linux-node1.example.com
│ │ └── linux-node2.example.com
│ ├── minions_autosign
│ ├── minions_denied
│ ├── minions_pre
│ └── minions_rejected
└── minion├── minion_master.pub 同意之后master发送公钥├── minion.pem└── minion.pub 三、SaltStack远程执行和配置管理 1.远程执行 第一条命令
[rootlinux-node1 master]# salt * test.ping
linux-node2.example.com:True
linux-node1.example.com:True说明
salt命令
*匹配目标使用通配符
test.ping模块.方法
#此处的ping并非ICMP的ping命令而是master向minion发送了一个包minion收到了返回一个True[rootlinux-node1 ~]# salt * cmd.run uptime
linux-node1.example.com:11:51:47 up 21 days, 5:57, 2 users, load average: 0.04, 0.03, 0.05
linux-node2.example.com:11:51:47 up 12 days, 6:26, 2 users, load average: 0.00, 0.03, 0.05
[rootlinux-node1 ~]# salt * cmd.run w
linux-node1.example.com:11:52:11 up 21 days, 5:58, 2 users, load average: 0.03, 0.02, 0.05USER TTY FROM LOGIN IDLE JCPU PCPU WHATroot pts/2 192.168.56.1 06Jan18 6:51 3.27s 3.27s -bashroot pts/3 192.168.56.1 06Jan18 3.00s 6:17 0.46s /usr/bin/python /usr/bin/salt * cmd.run w
linux-node2.example.com:11:52:11 up 12 days, 6:26, 2 users, load average: 0.00, 0.03, 0.05USER TTY FROM LOGIN IDLE JCPU PCPU WHATroot pts/1 192.168.56.1 Mon10 21:59m 0.28s 0.28s -bashroot pts/3 192.168.56.1 06Jan18 6:59 4.82s 0.02s -bash
[rootlinux-node1 ~]# salt * cmd.run df -h
linux-node2.example.com:Filesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 18G 17G 1.1G 95% /devtmpfs 905M 0 905M 0% /devtmpfs 916M 12K 916M 1% /dev/shmtmpfs 916M 41M 876M 5% /runtmpfs 916M 0 916M 0% /sys/fs/cgroup/dev/sda1 497M 171M 326M 35% /boottmpfs 184M 0 184M 0% /run/user/0/dev/loop0 4.1G 4.1G 0 100% /mnt
linux-node1.example.com:Filesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 18G 11G 7.2G 60% /devtmpfs 905M 0 905M 0% /devtmpfs 916M 28K 916M 1% /dev/shmtmpfs 916M 57M 860M 7% /runtmpfs 916M 0 916M 0% /sys/fs/cgroup/dev/sda1 497M 171M 326M 35% /boottmpfs 184M 0 184M 0% /run/user/0[rootlinux-node1 ~]# netstat -tulnp|grep minion
minion不需要监听端口说明minion需要主动去链接mastermaster监听端口为4505、4506
[rootlinux-node1 ~]# netstat -tulnp|grep python
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 37039/python
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 37045/python #master和minion默认使用一个叫zeroMQ进行并行通信zeroMQ属于底层传输层的消息队列
#相当于一个发布与订阅系统比如你订了一个教室听课那么所有订了此间课室的人都能听到老师的课程。[rootlinux-node1 ~]# lsof -ni:4505
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 37039 root 16u IPv4 3394584 0t0 TCP *:4505 (LISTEN)
salt-mast 37039 root 18u IPv4 3412804 0t0 TCP 192.168.56.11:4505-192.168.56.12:43126 (ESTABLISHED)
salt-mast 37039 root 19u IPv4 3412811 0t0 TCP 192.168.56.11:4505-192.168.56.11:38262 (ESTABLISHED)
salt-mini 39623 root 27u IPv4 3412810 0t0 TCP 192.168.56.11:38262-192.168.56.11:4505 (ESTABLISHED) 查看4505端口我们可以发现salt-minion使用一个随机端口通过4505端口与salt-master通信master使用4505端口发送指定到salt-minion上进行执行。而4606端口是用于接收数据的返回用于zeroMQ的请求与响应的系统。 可以通过date命令查看salt的并行通信可以看到是同时返回
[rootlinux-node1 ~]# salt * cmd.run date
linux-node2.example.com:Tue Jan 16 12:01:52 CST 2018
linux-node1.example.com:Tue Jan 16 12:01:52 CST 2018 2.配置管理 1saltstack是使用YAML的格式作为管理文件的格式下面的YAML的样例 YAML样例
house:
family:
name: Doe
parents:- John- Jane
children:- Paul- Mark- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345 2YAML的规则①缩进表示层级关系默认缩进是2个空格、4个空格、6个空格②冒号后面有个空格以冒号结尾可以有空格可以无空格③短横线代表一个列表短横线后面有个空格 3定义yaml文件放的位置salt内置一个fileserver在master文件配置file_roots[rootlinux-node1 ~]# vim /etc/salt/master #定义yaml文件放的位置,base环境是必备的
file_roots:base:- /srv/salt/basedev:- /srv/salt/devtest:- /srv/salt/testprod:- /srv/salt/prod
[rootlinux-node1 ~]# mkdir -p /srv/salt/{base,dev,test,prod}
[rootlinux-node1 ~]# systemctl restart salt-master
[rootlinux-node1 ~]# cd /srv/salt/base/
[rootlinux-node1 base]# mkdir web
[rootlinux-node1 web]# vim apache.sls #编写安装apache的YAML文件
apache-install:pkg.installed:----------模块pkg方法installed会匹配操作系统进行选择安装的方法- name: httpd---------装的包的名称apache-service:-----------id要唯一service.running:--------状态模块servicerunning为模块的方法- name: httpd---------管理服务的名称- enable: True--------设置开机自动启动[rootlinux-node1 ~]# salt linux-node2.example.com state.sls web.apache
#如果apache.sls的位置是在prod目录下需要在后面增加saltenvprod
#salt linux-node2.example.com state.sls web.apache saltenvprod实现自动化安装需要写一个top.sls
[rootlinux-node1 base]# pwd
/srv/salt/base
[rootlinux-node1 base]# vim top.sls #必须在base环境下写
base:linux-node1.example.com:- web.apachelinux-node2.example.com:- web.apache
****************************
如果只有一个任务在全部机子上执行也可以
base:*- web.apache
****************************
[rootlinux-node1 ~]# salt * state.highstate #去top.sls读取*代表通知哪些主机salt * state.highstate testTrue #在不想影响当前主机的运行情况可以使用testTrue 进行预测试转载于:https://blog.51cto.com/jinlong/2061645