1. 程式人生 > 其它 >|NO.Z.00004|——————————|NavigationLog|——|Ansible|

|NO.Z.00004|——————————|NavigationLog|——|Ansible|



[NavigationIng:Ansible]                                                                                                  [NavigationIng.了不起]








一、概述:
### --- 概述:

~~~		Ansible自動化運維工具簡介及特點剖析
~~~		Ansible自動化運維工具原理和有點深入理解
~~~		Ansible模組企業實戰工具及命令演練
~~~		Ansible自動化運維工具playbook應用實戰
~~~		詳解Ansible配置檔案和高階效能調優
二、linux雲端計算工程師三大和核心職能:
### --- 平臺架構組建:
~~~		負責參與並稽核架構設計的合理性,搭建運維平臺管理架構,通過開源解決方案,
~~~		以確保在產品釋出之後能高效穩定的執行,
~~~		保障並不斷提升服務的可用性,確保使用者資料安全,提升使用者體驗。

### --- 日常運營保障:
~~~		負責用運維技術或者運維平臺確保產品可以高效的釋出上線,
~~~		負責保障產品7*24小時穩定執行,在此期間可以對出現的問題可以快速定位並解決,
~~~		在日常工作中不斷優化系統架構和部署的合理性,以提升系統服務的穩定性,

### --- 效能效率優化:
~~~		用自動化工具或者運維平臺提升軟體在研發週期中的工程效率,不斷優化系統架構,
~~~		提升部署效率,優化資源利用率,支援產品的不斷迭代,需要不斷的進行架構的優化調整,
~~~		以確保整個產品能夠在功能不斷豐富和複雜的條件下,同時保證高可用性。
### --- Ansible是什麼:

~~~		Ansible簡單說是一個配置管理系統(configuration management system),
~~~		你只需要可以使用ssh訪問你的伺服器或者裝置就行。
~~~		它也不同於其他工具,因為他使用推送的方式,而不是puppet等。
~~~		那樣使用拉取安裝agent的方式,你可以將程式碼部署到任意數量的伺服器上!
### --- Ansible能做什麼:

~~~		Ansible可以幫助我們完成一些批量任務,或者完成一些需要經常重複的公工作;
~~~		比如:同時在100臺伺服器上安裝nginx服務,並在安裝後啟動他們
~~~		比如:將某個檔案一次性拷貝到100臺伺服器上
~~~		比如:每當有新伺服器加入工作環境是,
~~~		你都要為新伺服器部署某個服務,也就是你需要經常重複的完成相同的工作。
~~~		這些場景我們都可以使用到Ansible
三、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)