Ansible


Ansible

簡介:

Ansible是一個基於python開發的配置管理和應用部署工具,現在也在自動化管理領域大放異彩。它融合了眾多老牌運維工具的優點,Pubbet和Saltstack能實現的功能,Ansible基本上都可以實現。

Ansible能批量配置、部署、管理上千台主機。比如以前需要切換到每個主機上執行的一或多個操作,使用Ansible只需在固定的一台Ansible控制節點上完成所有主機的操作。

Ansible是基於模塊工作的,它只是提供了一種運行框架,它本身沒有完成任務的能力,真正執行操作的是Ansible的模塊,比如copy模塊用於拷貝文件到遠程主機上,service模塊用於管理服務的啟動、停止、重啟等。

Ansible其中一個比較鮮明的特性是Angentless,即無Agent的存在,它就像普通命令一樣,並非C/S軟件,也只需在某個作為控制節點的主機上安裝一次Ansible即可,通常它基於ssh連接來控制遠程主機,遠程主機上不需要安裝Ansible或其它額外的服務。

使用者在使用時,在服務器終端輸入命令或者playbooks,會通過預定好的規則將playbook拆解為play,再組織成ansible可以識別的任務,調用模塊和插件,根據主機清單通過ssh將臨時文件發給遠程的客戶端執行並返回結果,執行結束后自動刪除。

Ansible的另外一個比較鮮明的特性是它的絕大多數模塊都具備冪等性(idempotence)。所謂冪等性,指的是多次操作或多次執行對系統資源的影響是一致的。比如執行systemctl stop xxx命令停止服務,當發現要停止的目標已經處於停止狀態,它什么也不會做,所以多次停止的結果仍然是停止,不會改變結果,它是冪等的,而是systemctl restart xxx是非冪等的。

Ansible的很多模式在執行時都會先判斷目標節點是否要執行任務,所以,可以放心大膽地讓Ansible去執行任務,重復執行某個任務絕大多數時候不會產生任何副作用。

 ansible 環境安裝部署

 

 ansible命令行模塊

命令格式:ansible <組名> -m <模塊> -a <參數列表>

 

 

 1、command模塊

在遠程主機執行命令。不支持管道,重定向等shell的特性

 2、shell模塊

在遠程主機執行命令,相當於調用主機的shell進程,然后再該shell下打開一個子shell運行命令(支持管道符號等功能)

 

 

 3、cron模塊

 在遠程主機定義任務計划。其中有兩種狀態(state):present表示添加(可以省略),ansent表示移除

 

 

 4、user模塊

用戶管理的模塊

常用的參數:

name 用戶名,必選參數
state=present|absent 創建賬號或者刪除賬號,present表示創建,absent表示刪除
system=yes|no 是否為系統賬號
uid 用戶uid
group 用戶基本組
shell 默認使用的shell
move_home=yes|no 如果設置的家目錄已經存在,是否將已經存在的家目錄進行移動
password 用戶的密碼。建議使用加密后的字符串
command 用戶注釋信息
remove=yes|no 當state=absent時,是否刪除用戶的家目錄

 

 

 

 

 

 

 

 

 

 

 

 5、group模塊

 用戶組管理的模塊

 6、copy模塊

用於復制指定主機文件到遠程主機

常用參數:

dest 指出復制文件的目標及位置,使用絕對路徑,如果是源目錄,指目標也要是目錄,如果目標文件已經存在會覆蓋原有的內容
src 指出源文件的路徑,可以使用相對路徑或絕對路徑,支持直接指定目錄,如果源是目錄則目標也要是目錄
mode 指出復制時,目標文件的權限
owner 指出復制時,目標文件的屬主
group 指出復制時,目標文件的屬組
content 指出復制到目標主機上的內容,不能與src一起使用

 

 

 

 

 

 7、file模塊

設置文件屬性

 

 

 

 

 8、hostname模塊

用於管理遠程主機上的主機名

 

 9、ping模塊

檢測遠程主機的連通性

 

 10、yum模塊

在遠程主機上安裝與卸載軟件包

 

 11、service/systemd模塊

用於管理遠程主機上的管理服務的運行狀態

常用參數:

name 被管理的服務名稱
state=started|stopped|restarted 動作包含啟動關閉或重啟
enable=yes|no 表示是否設置該服務開機自啟
runlevel 如果設定了enabled開機自啟,則要定義在那些運行目標下自啟動

 

 

 

 

 

 

 12、script模塊

實現遠程批量運行本地的shell腳本

 13、setup模塊

facts組件是用來收集被管理節點信息,使用setup模塊可以獲取這些信息

 

  inventory 主機清單 

Inventory支持對主機進行分組,每個組內可以定義多個主機,每個主機都可以定義任何一個或多個主機組內

inventory 中的變量

Inventory變量名  含義
ansible_host  ansible連接節點時的IP地址
ansible_port  連接對方的端口號,ssh連接時默認為22
ansible_user   連接對方主機時使用的主機名。不指定時,將使用執行ansible或ansible-playbook命令的用戶
ansible_password  連接時的用戶的ssh密碼,僅在未使用密鑰對驗證的情況下有效
ansible_ssh_private_key_file 指定密鑰認證ssh連接時的私鑰文件
ansible_ssh_common_args 提供給ssh、sftp、scp命令的額外參數
ansible_become  允許進行權限提升
ansible_become_method  指定提升權限的方式,例如可使用sudo/su/runas等方式
ansible_become_user   提升為哪個用戶的權限,默認提升為root
ansible_become_password   提升為指定用戶權限時的密碼

 

 

 

 

 

 

 

 

 

(1)主機變量

 (2)組變量

(3)組嵌套

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM