天天看點

[Linux]Ansible自動化運維② - 工具與子產品

目錄

一、Ansible的工具

1.1 Ansible的工作前提

1.2 Ansible的安裝檔案

1.3 Ansible的配置檔案

1.4 Ansible的相關工具

1.4.1 【幫助工具】Ansible-doc

1.4.2 【角色共享】Ansible-galaxy

1.4.3 【劇本工具】Ansible-playbook

1.4.4 【加密工具】Ansible-vault

1.4.5 【互動工具】Ansible-console

二、Ansible的子產品

2.1 Ansible 子產品簡介

2.2 Ansible 子產品速查

2.3 共同的傳回值

2.3.1 Facts

2.3.2 Status

2.3.3 其他的共同傳回值

參考:

Ansible Documentation

Ansible中文權威指南 — 國内最專業的Ansible中文官方學習手冊 (ansible-tran.readthedocs.io)

[Linux]Ansible自動化運維② - 工具與子產品

Ansible正常工作需要滿足兩個前提:

主要機與被控機都要開啟SSH服務

主要機與被控即都要裝有Python

通過 <code>rpm -ql ansible | more</code> 指令可檢視 Ansible的相關檔案:

<code>/etc/ansible/ansible.cfg</code>:預設ansible的預設配置檔案位置

<code>/etc/ansible/hosts</code> :預設inventory主機清機關置

<code>/etc/ansible/roles</code>:預設inventory角色位置

<code>/usr/bin/ansible</code>:ansible指令的檔案

<code>/usr/lib/python3.6/site-packages/ansible</code>:提供Python子產品

<code>/usr/share/man/man1/</code> :幫助文檔

備注:RPM(紅帽軟體包管理器)。RPM 有點像Windows 系統中的控制台,會建立統一的資料庫檔案,詳細記錄軟體資訊并能夠自動分析依賴關系。

以下是<code>/etc/ansible/ansible.cfg</code>中配置塊的含義:

<code>[defaults]</code>:預設常用配置

<code>[inventory]</code>:主機清單插件

<code>[privilege_escalation]</code>:用于提權

<code>[paramiko_connection]</code>:Python paramiko子產品的連接配接裝置(預設SSH)

<code>[ssh_connection]</code>:SSH連接配接設定

<code>[persistent_connection]</code>:長連接配接設定

<code>[accelerate]</code>:加速模式的配置

<code>[selinux]</code>:selinux設定

<code>[colors]</code>:輸出結果顔色的設定

<code>[diff]</code>:輸出不同的設定

輸入 <code>ansible</code> 然後輕按兩下Tab鍵

<code>ansible</code>:主程式,臨時指令執行工具

<code>ansible-doc</code>:用于檢視配置文檔,子產品功能

<code>ansible-galaxy</code>:用于上傳、下載下傳Roles子產品,需要網絡

<code>ansible-playbook</code>:用于定制自動化任務,編排劇本的工具

<code>ansible-pull</code>:用于遠端執行指令的工具

<code>ansible-vault</code>:檔案加密工具

<code>ansible-console</code>:基于Console界面與使用者互動的執行工具

利用ansible實作管理的主要方式:

臨時指令使用場景 —&gt; Ad-hoc

大型項目場景,有規劃過程 —&gt; Ansible-playbook

<code>ansible-doc -l | wc -l</code> :可以檢視ansible有多少個子產品

<code>ansible-doc -l | grep &lt;子產品&gt;</code> :可以檢視相關的子產品

<code>ansible-doc &lt;子產品&gt;</code> :可以檢視對應子產品的詳細功能

Ansible-galaxy官網:Ansible Galaxy

Galaxy中可以下載下傳到寫好的Roles(Roles可以了解為Playbook的集合)

Galaxy安裝一個Nginx Rols的示例:

以Web類為例

[Linux]Ansible自動化運維② - 工具與子產品

下載下傳一個Nginx

[Linux]Ansible自動化運維② - 工具與子產品
[Linux]Ansible自動化運維② - 工具與子產品

通過指令<code>ansible-galaxy install &lt;子產品&gt;</code>安裝

安裝完之後,預設會放在使用者家目錄下的.ansible目錄中

預設放在:<code>/root/.ansible/roles/&lt;角色&gt;</code>

會有以下的目錄及檔案

[Linux]Ansible自動化運維② - 工具與子產品

各個檔案夾下檔案的作用後面補充

<code>ansible-playbook &lt;劇本&gt;</code> :用于執行寫好的劇本

<code>ansible-vault encrypt &lt;劇本&gt;</code>:加密Playbook

<code>ansible-vault decrypt &lt;劇本&gt;</code>:解密Playbook

<code>ansible-vault view &lt;劇本&gt;</code>:檢視加密的Playbook

<code>ansible-vault edit &lt;劇本&gt;</code>:編輯加密的Playbook

<code>ansible-vault create &lt;劇本&gt;</code>:建立新的加密的Playbook

加解密的示例:

一個未加密的 test.yml 檔案

[Linux]Ansible自動化運維② - 工具與子產品

将 test.yml 加密

[Linux]Ansible自動化運維② - 工具與子產品

通過 <code>ansible-console</code> 工具,可以實作互動輸入指令

<code>forks n</code>:設定并發數

<code>cd &lt;主機組&gt;</code>:切換主機組

<code>list</code>:列出主機組清單

<code>help</code>&amp;<code>?</code>:列出内置指令

<code>ping</code>:ping測試(目前主機組)

簡介 — 國内最專業的Ansible中文官方學習手冊

我們可以通過 <code>ansible-doc -l</code> 檢視所有的子產品。

通過 <code>ansible-doc &lt;子產品&gt;</code> 檢視指定子產品的幫助資訊。

子產品有兩種調用方式,一種通過ad-hoc指令行,另一種通過playbook調用。

第一種:ad-hoc 指令行

格式:<code>ansible &lt;主機組&gt; -m &lt;子產品&gt; -a "key=value"</code>

通過 -m 指定子產品,通過 -a 指定參數(key=value的形式)

例如:

第二種:playbook 劇本

以簡單key:value的形式傳遞參數

​ 或者簡寫成:

以yaml文法中的"complex args"傳遞參數

Ansible中的子產品種類有很多,如雲計算類子產品、叢集類子產品、指令類子產品、資料庫類子產品、檔案類子產品、消息類子產品、監控類子產品等等。根據需求可以到網站中查找子產品的詳細說明。

至于一些常見的子產品,後面專門整理一篇博文(✿◡‿◡)!

All modules — Ansible Documentation

所有内置的子產品都可以到上面的文檔中查找👆

[Linux]Ansible自動化運維② - 工具與子產品
[Linux]Ansible自動化運維② - 工具與子產品

一些子產品傳回"facts"(例如:setup子產品),這些是通過一個"ansible_facts"作為key和内部一些自動收集的值直接作為目前主機的變量并且他們不需要注冊這些資料。

每一個子產品都必須傳回一個status,來表示這個子產品是成功的,是否有任何改變或者沒有發生改變。當檢查模式下發現子產品不支援或者不滿足某些條件,Ansible自己會傳回一個status并跳過這個子產品。

如msg,會被用來解釋執行失敗的原因或者是關于執行過程的一些說明。

繼續閱讀