在web上使用mariadb客户端,经过命令 mysql -u wp_zh -p1 -h 10.0.0.51 能够检测web与数据库的是否能够链接 批量管理要选择批量管理工具,ansible saltstack 使用: 1.批量命令执行 2.批量安排服务 3.批量配置同步 4.批量任务执行 5.批量代码部署 做用: 1.提升工做效率 2.提升工做准确度 3.减小维护成本 4.减小重复性工做 优点: 1.远程执行 批量执行远程命令,能够对多台主机进行远程操做 2.配置管理 批量配置软件服务,能够进行自动化方式配置,服务的统一配置管理,和启停 3.事件驱动 经过Ansible的模块,对服务进行不一样的事件驱动 好比: 1)修改配置后重启 2)只修改配置文件,不重启 3)修改配置文件后,从新加载 4)远程启停服务管理 4.管理公有云 经过API接口的方式管理公有云,不过这方面作的不如saltstack. saltstack自己能够经过saltcloud管理各大云厂商的云平台。 5.二次开发 由于语法是Python,因此便于运维进行二次开发。 6.任务编排 能够经过playbook的方式来统一管理服务,而且可使用一条命令,实现一套架构的部署 7.跨平台,跨系统 ansible不须要下载客户端,不须要启动,可是要作优化 #centos使用dnf命令安装ansible [root@m01 ~]# yum provides dnf dnf-4.0.9.2-1.el7_6.noarch : Package manager
同类型软件对比:python
1.puppet学习难,安装ruby环境难,没有远程执行功能mysql
2.ansible轻量级,大规模环境下只经过ssh会很慢,串行的,不须要安装客户端,不须要启动,只支持Python2web
3.saltstack,通常选择sall的c/s结构模式,须要安装客户端,经过端对端的方式链接服务器,可是也能够不安装客户端,经过ssh协议链接服务器,salt-master和salt-minion是并行的,大规模批量操做的时候,会比ansible快一些,底层使用的是zero-MQ消息队列,可是比较占资源,saltstack既有Python2和Python3sql
saltstack官网shell
cs/s结构中,服务端与客户端的链接不须要sshd进程,甚至能够开启或者关闭ssh服务数据库
saltstack服务端能够管理全部的saltstack客户端vim
[root@m01 ~]# yum install -y salt-master salt-minion [root@m01 ~]# rpm -q salt-master salt-minion salt-master-2015.5.10-2.el7.noarch salt-minion-2015.5.10-2.el7.noarch [root@m01 ~]# rpm -ql salt-master /etc/salt/master /usr/bin/salt /usr/bin/salt-cp /usr/bin/salt-key /usr/bin/salt-master /usr/bin/salt-run /usr/bin/salt-unity /usr/lib/systemd/system/salt-master.service [root@m01 ~]# rpm -ql salt-minion /etc/salt/minion /usr/bin/salt-call /usr/bin/salt-minion /usr/lib/systemd/system/salt-minion.service #取消注释(指定能够链接谁)(选作) [root@m01 ~]# vim /etc/salt/master interface: 0.0.0.0 #启动 [root@m01 ~]# systemctl start salt-master.service #取消注释,指定master(指定客户端寻找的ip) [root@m01 ~]# vim /etc/salt/minion master: 10.0.0.61 #启动 [root@m01 ~]# systemctl start salt-minion.service #查看saltstack端口(4505发送,4506接收) [root@m01 ~]# netstat -lntup tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 1415/python tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 1423/python [root@m01 ~]# salt-key Accepted Keys: #接受的 Denied Keys: #拒绝的 Unaccepted Keys: #没有被容许的key m01 Rejected Keys: 拒绝的 [root@m01 ~]# salt-key -A #接受全部客户端密匙 The following keys are going to be accepted: Unaccepted Keys: m01 web01 Proceed? [n/Y] y Key for minion m01 accepted. Key for minion web01 accepted. [root@m01 ~]# salt-key -a xx #能够选择接受指定客户端密匙 [root@m01 ~]# salt-key Accepted Keys: m01 web01 Denied Keys: Unaccepted Keys: Rejected Keys: #检查服务端和客户端是否能够连通 [root@m01 ~]# salt '*' test.ping web01: True m01: True
saltstack客户端centos
客户端的使用不须要端口ruby
[root@web01 ~]# yum install -y salt-minion #修改配置文件 [root@web01 ~]# vim /etc/salt/minion master: 10.0.0.61 #启动saltstack客户端 [root@web01 ~]# systemctl start salt-minion.service #之内saltstack很占服务器资源,因此不用的时候须要关闭 [root@m01 ~]# systemctl stop salt-master.service salt-minion.service
查看客户端主机名,IP,内存,磁盘bash
cmd.run 能够执行任何操做命令,cmd实际上就是saltstack的一个模块 .就至关于调用函数,方法(playbook) [root@m01 ~]# salt 'web01' cmd.run 'free -m' web01: total used free shared buff/cache available Mem: 972 209 247 25 515 592 Swap: #查看客户端详细信息,主机名,IP(内置变量) [root@m01 ~]# salt '*' grains.items [root@m01 ~]# salt 'web01' grains.items #查看客户端主机名 [root@m01 ~]# salt 'm01' grains.get 'fqdn' m01: m01 #查看客户端IP [root@m01 ~]# salt 'm01' grains.get 'fqdn_ip4' m01: - 10.0.0.61 - 172.16.1.61 [root@m01 ~]# salt 'm01' grains.get 'ip4_interfaces' m01: ---------- eth0: - 10.0.0.61 eth1: - 172.16.1.61 lo: - 127.0.0.1 [root@m01 ~]# salt 'm01' grains.get 'ip4_interfaces:eth0' m01: - 10.0.0.61 [root@m01 ~]# salt 'm01' grains.get 'master' m01: 10.0.0.61 #开启或者关闭客户端web01的进程 [root@m01 ~]# salt 'web01' cmd.run 'systemctl start sshd' [root@m01 ~]# salt 'web01' 'systemctl start sshd' #使用ansible操做主机组 [root@m01 ~]# salt 'web0_group' cmd.run 'systemctl start sshd'
由于ansible只安装在服务端,不用安装客户端(由于ansible基于ssh协议),这种服务端也叫控制端,客户端叫被控端,受控端
ansible服务之星流程:
1.ansible读取playbook剧本(host),剧本中会记录对哪些主机之星哪些任务
2.首先ansible经过主机清单找到要执行的主机,而后调用具体的模块
3.其次ansible会经过链接插件链接对应的主机并推送对应的任务列表
4.最后被管理的主机将ansible发送过来的任务解析为本地shell命令执行
saltmast和ansible不能同时安装,否则会致使Python环境发生冲突,两个软件都用不了
Ansible的架构
一、链接插件connection plugins
用于链接主机 用来链接被管理端
二、核心模块core modules
链接主机实现操做, 它依赖于具体的模块来作具体的事情
三、自定义模块custom modules
根据本身的需求编写具体的模块(通常开发使用)
四、插件plugins
完成模块功能的补充
五、剧本playbook
,ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
六、主机清单inventor
定义ansible须要操做主机的范围
最重要的一点是 ansible是模块化的 它全部的操做都依赖于模块

Ansible的执行流程
1.Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些任务。
2.首先Ansible经过主机清单找到要执行的主机,而后调用具体的模块。
3.其次Ansible会经过链接插件链接对应的主机并推送对应的任务列表。
4.最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行。
[ansible任务执行模式] ad-hoc: ad-hoc模式使用单个模块,支持批量执行单条命令。'ad-hoc命令是一种能够快速输入的命令',并且不须要保存起来的命令。至关于bash中的一句shell。 playbook: playbook模式是ansible主要管理方式,也是ansible功能强大的关键所在。playbook经过多个task集合完成一类功能,如web服务的安装部署、数据库服务器的批量备份等。'能够简单地把playbook理解为经过组合多条ad-hoc操做的配置文件。' [ansible命令执行过程] 一、加载本身的'主配置文件',默认/etc/ansible/ansible.cfg 二、查找对应的'playbook',找到要执行的主机或者组。 三、加载本身对应的'模块文件',如command 四、经过ansible将模块或命令生成对应的'临时py文件',并将该'文件传输'至远程服务器 五、'对应执行用户家目录的.ansible/tmp/XXX/XXX.PY文件' 六、给文件+x执行 七、执行并返回结果 八、删除临时py文件,sleep 0 退出。