1. 程式人生 > 實用技巧 >NH.A.0004——Ansible的20個模組講解及Playbook劇本剖析

NH.A.0004——Ansible的20個模組講解及Playbook劇本剖析

一、概述:1、Ansible自動化運維工具簡介及特點剖析2、Ansible自動化運維工具原理和有點深入理解3、Ansible模組企業實戰工具及命令演練4、Ansible自動化運維工具playbook應用實戰5、詳解Ansible配置檔案和高階效能調優linux雲端計算工程師三大和興只能:平臺架構組建:負責參與並稽核架構設計的合理性,搭建運維平臺管理架構,通過開源解決方案,以確保在產品釋出之後能高效穩定的執行,保障並不斷提升服務的可用性,確保使用者資料安全,提升使用者體驗。日常運營保障:負責用運維技術或者運維平臺確保產品可以高效的釋出上線,負責保障產品7*24小時穩定執行,在此期間可以對出現的問題可以快速定位並解決,在日常工作中不斷優化系統架構和部署的合理性,以提升系統服務的穩定性,效能效率優化:用自動化工具或者運維平臺提升軟體在研發週期中的工程效率,不斷優化系統架構,提升部署效率,優化資源利用率,支援產品的不斷迭代,需要不斷的進行架構的優化調整,以確保整個產品能夠在功能不斷豐富和複雜的條件下,同時保證高可用性。Ansible是什麼: Ansible簡單說是一個配置管理系統(configuration management system),你只需要可以使用ssh訪問你的伺服器或者裝置就行。它也不同於其他工具,因為他使用推送的方式,而不是puppet等。那樣使用拉取安裝agent的方式,你可以將程式碼部署到任意數量的伺服器上!
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實戰:1、硬體環境:Ansible-server端:192.168.1.60Ansible-client端:192.168.1.70Ansible-client端:192.168.1.71Ansible-client端:192.168.1.72
安裝方式: 原始碼安裝 ,pip,yum安裝; Centos Red Hat作業系統可以直接基於YUM工具自動安裝Ansible,Centos6.x或者Centos7.x安裝前,需要安裝epel擴充套件源,程式碼如下:
2、環境安裝:
[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遠端批量管理,其中執行命令是通過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模組: 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應用:Playbook由一個或多個“paly”組成的列表,play的主要功能Ansible中的Task定義好的角色,指定劇本對應的伺服器組;遠端安裝nginx伺服器指令碼;playbook程式碼如下;
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

[root@localhost ~]# ansible-playbook nginx_install.yam1 -vvv   
 //執行指令碼在三臺主機上部署nginx





問題一:
[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 addr




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)