|NO.Z.00004|——————————|NavigationLog|——|Ansible|
阿新 • • 發佈:2022-03-22
[NavigationIng:Ansible] [NavigationIng.了不起]
一、概述:
二、linux雲端計算工程師三大和核心職能:### --- 概述: ~~~ Ansible自動化運維工具簡介及特點剖析 ~~~ Ansible自動化運維工具原理和有點深入理解 ~~~ Ansible模組企業實戰工具及命令演練 ~~~ Ansible自動化運維工具playbook應用實戰 ~~~ 詳解Ansible配置檔案和高階效能調優
### --- 平臺架構組建: ~~~ 負責參與並稽核架構設計的合理性,搭建運維平臺管理架構,通過開源解決方案, ~~~ 以確保在產品釋出之後能高效穩定的執行, ~~~ 保障並不斷提升服務的可用性,確保使用者資料安全,提升使用者體驗。 ### --- 日常運營保障: ~~~ 負責用運維技術或者運維平臺確保產品可以高效的釋出上線, ~~~ 負責保障產品7*24小時穩定執行,在此期間可以對出現的問題可以快速定位並解決, ~~~ 在日常工作中不斷優化系統架構和部署的合理性,以提升系統服務的穩定性, ### --- 效能效率優化: ~~~ 用自動化工具或者運維平臺提升軟體在研發週期中的工程效率,不斷優化系統架構, ~~~ 提升部署效率,優化資源利用率,支援產品的不斷迭代,需要不斷的進行架構的優化調整, ~~~ 以確保整個產品能夠在功能不斷豐富和複雜的條件下,同時保證高可用性。
### --- Ansible是什麼:
~~~ Ansible簡單說是一個配置管理系統(configuration management system),
~~~ 你只需要可以使用ssh訪問你的伺服器或者裝置就行。
~~~ 它也不同於其他工具,因為他使用推送的方式,而不是puppet等。
~~~ 那樣使用拉取安裝agent的方式,你可以將程式碼部署到任意數量的伺服器上!
三、Ansible架構:### --- Ansible能做什麼: ~~~ Ansible可以幫助我們完成一些批量任務,或者完成一些需要經常重複的公工作; ~~~ 比如:同時在100臺伺服器上安裝nginx服務,並在安裝後啟動他們 ~~~ 比如:將某個檔案一次性拷貝到100臺伺服器上 ~~~ 比如:每當有新伺服器加入工作環境是, ~~~ 你都要為新伺服器部署某個服務,也就是你需要經常重複的完成相同的工作。 ~~~ 這些場景我們都可以使用到Ansible
### --- Ansible架構:
~~~ 右邊綠色是我們被管理的主機(虛擬機器、物理機、雲主機等)
~~~ 從以上架構圖中可以看出Ansible是由主機清單(配置),playbook(配置),
~~~ 以及各模組外掛組成,簡單的說就是,
~~~ 使用者(管理員)通過Ansible的主機清單配置或playbook配置(一組任務)
~~~ 呼叫Ansible的各種模組及引數來對,清單中的主機進行統一的管理。
~~~ Ansible可以工作在linux、BSD、Mac OS、等平臺,
~~~ 對Python環境的版本最低要求為Python2.6以上,如果作業系統Python軟體版本為2.4,
~~~ 需要升級方可使用Ansible工具;
四、配置Ansible實戰:
### --- 硬體環境:
~~~ Ansible-server端: 192.168.1.60
~~~ Ansible-client端: 192.168.1.70
~~~ Ansible-client端: 192.168.1.71
~~~ Ansible-client端: 192.168.1.72
### --- 安裝方式:
~~~ 原始碼安裝 ,pip,yum安裝;
~~~ Centos Red Hat作業系統可以直接基於YUM工具自動安裝Ansible,
~~~ Centos6.x或者Centos7.x安裝前,需要安裝epel擴充套件源,程式碼如下:
五、Ansible部署
### --- 環境準備
~~~ # 安裝擴充套件源
[root@localhost ~]# yum -y install epel-release // 安裝擴充套件源
[root@localhost ~]# yum install -y ansible
(11/15): ansible-2.9.14-1.el7.noarch.rpm
[root@localhost ~]# ansible --version // 檢視它的版本
ansible 2.9.14
python version = 2.7.5
~~~ # 可以檢視到它的配置檔案
[root@localhost ~]# ll /etc/ansible/
-rw-r--r-- 1 root root 19985 10月 8 01:35 ansible.cfg // 此檔案為Ansible的主配置檔案
-rw-r--r-- 1 root root 1016 10月 8 01:35 hosts // 定義主機組的
drwxr-xr-x 2 root root 6 10月 8 01:35 roles // 定義不同角色
### --- Ansible主機清單
~~~ # Ansible主機清單:
~~~ # Ansible遠端批量管理,其中執行命令是通過Ad-Hoc來完成,
~~~ # 也幾點對點單條執行命令,能夠快速執行,而且不需要儲存執行的命令,
~~~ # 預設hosts檔案配置主機列表,可以配置分組,可以定義各種ip及規則,hosts列表預設配置。
[root@localhost ansible]# cat hosts |more // 檢視Ansible主機清單
[root@localhost ansible]# vim hosts
### --- them like this:
[web] // 定義了一個組名
192.168.1.[70:72] // 定義了組內的主機、 70/71/72主機
[web] // 或者這樣定義也可以
192.168.1.70
192.168.1.71
192.168.1.72
### --- ping模組實戰
~~~ # Ansible最基礎的模組為ping模組,主要用判斷客戶端是否線上,用ping本身的伺服器,範滬指changed ping;
~~~ # ansible web -m ping //使用Ansible對web組內的主機進行ping模組測試
[root@localhost ansible]# ansible web -m ping
Are you sure you want to continue connecting (yes/no)? // 提示沒有配置祕鑰對,解決方案針對問題一
[root@localhost ~]# ansible web -m ping
192.168.1.70 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
192.168.1.72 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
192.168.1.71 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
### --- command模組:
~~~ # command模組:
~~~ # Ansible command模組為Ansible預設模組,主要用於執行linux命令,
~~~ # 可以在直接管理遠端伺服器,任務操作等。
[root@localhost ~]# ansible web -m command -a "date"
192.168.1.71 | CHANGED | rc=0 >>
Wed Nov 4 14:25:03 UTC 2020
192.168.1.70 | CHANGED | rc=0 >>
Wed Nov 4 14:25:03 UTC 2020
192.168.1.72 | CHANGED | rc=0 >>
Wed Nov 4 14:25:03 UTC 2020
[root@localhost ~]# ansible web -m command -a "ping -c 1 www.baidu.com"
[root@localhost ~]# ansible web -m command -a "yum install httpd -y"
[root@localhost ~]# ansible web -m command -a "systemctl start httpd.service"
[root@localhost ~]# ansible web -m command -a "ss -tan" // 檢視埠
六、Ansible Playbook應用:
### --- Ansible Playbook應用:
### --- Playbook由一個或多個“paly”組成的列表,
### --- play的主要功能Ansible中的Task定義好的角色,指定劇本對應的伺服器組;
### --- 遠端安裝nginx伺服器指令碼;playbook程式碼如下;
[root@localhost ~]# vim nginx_install.yaml
~~~ 指令碼內容;
-host:web
remote_user:root
tasks:
-name:cvc Pcre-devel and Zlib LIB Install.
yum:name=pcre-devel,pcre,zlib-devel,gcc-c++ state=installed
-name:cvc Nginx WEB Server Install Process.
shell:cd /tmp;rm -rf nginx-1.15.0.tar.gz;wget
http://nginx.org/download/nginx-1.15.0.tar.gz;tar xzf nginx-1.15.0.tar.gz;cd nginx-1.15.0;./configure --prefix=/usr/local/nginx;make,make isntall
### --- 執行指令碼在三臺主機上部署nginx
[root@localhost ~]# ansible-playbook nginx_install.yam1 -vvv
附錄一:
### --- 報錯現象
[root@localhost ansible]# ansible web -m ping
The authenticity of host '192.168.1.71 (192.168.1.71)' can't be established.
ECDSA key fingerprint is SHA256:+fXgJ0vWlg+shAIaDf+FJKJrFrdECU/NOXu5iVz3fuU.
ECDSA key fingerprint is MD5:bb:c7:9f:3b:69:7e:8c:cc:12:04:23:59:c1:ce:b5:df.
Are you sure you want to continue connecting (yes/no)? The authenticity of host '192.168.1.72 (192.168.1.72)' can't be established.
ECDSA key fingerprint is SHA256:+fXgJ0vWlg+shAIaDf+FJKJrFrdECU/NOXu5iVz3fuU.
ECDSA key fingerprint is MD5:bb:c7:9f:3b:69:7e:8c:cc:12:04:23:59:c1:ce:b5:df.
Are you sure you want to continue connecting (yes/no)? The authenticity of host '192.168.1.70 (192.168.1.70)' can't be established.
ECDSA key fingerprint is SHA256:+fXgJ0vWlg+shAIaDf+FJKJrFrdECU/NOXu5iVz3fuU.
ECDSA key fingerprint is MD5:bb:c7:9f:3b:69:7e:8c:cc:12:04:23:59:c1:ce:b5:df.
Are you sure you want to continue connecting (yes/no)?
### --- 報錯分析
### --- 錯誤提示:沒有和遠端主機配置祕鑰對,可以使用ssh-keygen配置祕鑰對
### --- 解決方案:免祕鑰配置
[root@localhost ~]# ssh-keygen
[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 [email protected] //將祕鑰對拷貝到目標主機。
[root@localhost ~]# ssh 192.168.1.70 // 測試目標配置是否成功
Last login: Sun Nov 1 06:29:29 2020 from 192.168.1.101
[root@cb687a8072d1 ~]# ip add
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)