在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 退出。