1. 程式人生 > >自動化運維之Ansible應用基礎模塊(超詳細)

自動化運維之Ansible應用基礎模塊(超詳細)

rip gid 軟件 start 文件路徑 use 發送 con 移除

Ansible是一種基於模塊進行工作的框架結構。批量部署能力就是由Ansible所運行的模塊實現的。簡而言之Ansible是基於“模塊”完成各種“任務”的。

Ansible常用的核心模塊

模塊的基本語法如下

ansible [主機] [-m 模塊] [-a args]  //命令格式
# ansible-doc -l //列出所有已安裝的模塊  註:按q退出
# ansible-doc -s yum //-s列出yum模塊描述信息和操作動作

1.command 模塊

command模塊用於被管理主機上運行命令。
# ansible 192.168.92.156 -m command -a ‘date‘ //指定IP執行date
# ansible node2 -m command -a ‘date‘ //指定被管理主機中的分類執行date
# ansible all -m command -a ‘date‘ //所有主機清單上的主機執行date
# ansible all -a ‘ls /etc‘ //若省略-m選項,默認運行command模塊

技術分享圖片

2.cron模塊

cron模塊用於定義任務計劃,兩種狀態(state):present 表示添加(可以省略),absent 表示移除。
# ansible-doc -s cron //查看cron模塊信息
# ansible node2 -m cron -a ‘minute="*/1" job="/bin/echo hello" name="test cron job"‘ //添加計劃任務
# ansible node2 -a ‘crontab -l‘ //查看計劃任務信息
# ansible node2 -m cron -a ‘name="test cron job" state=absent‘ //移除計劃任務

技術分享圖片

3.user模塊

user模塊用於創建新用戶和更改、刪除已存在的用戶。其中name選項用來指明創建的用戶名稱。
# ansible-doc -s user //查看user模塊信息
# ansible node2 -m user -a ‘name="test01"‘ //創建用戶test01
# ansible node2 -a ‘tail /etc/passwd‘ //查看test01 用戶
# ansible node2 -m user -a ‘name="test01" state=absent‘ //刪除用戶test01

技術分享圖片

4.group模塊

group模塊用於對用戶組進行管理
# ansible-doc -s group //查看group模塊信息
# ansible node3 -m group -a ‘name=node3 gid=306
system=yes‘ //創建node3系統組
# ansible node3 -a ‘tail /etc/group‘ //查看組信息
# ansible node3 -m user -a ‘name=test01 uid=306 system=yes group=node3‘ //將test01用戶添加到node3組中
# ansible node3 -a ‘id test01‘ //查看用戶信息

技術分享圖片

5.copy 模塊

copy模塊用於實現文件復制和批量下發文件,其中用src定義本地文件路徑,使用dest定義被管理主機文件路徑。
# ansible-doc -s copy //查看copy模塊信息
# ansible node3 -m copy -a ‘src=/etc/fstab dest=/opt/fstab.bk owner=root mode=640‘
//將本地文件fstab復制到被管理主機上,所有者為root,權限為640
# ansible node3 -a ‘ls -l /opt‘ //查看文件信息
# ansible node3 -a ‘cat /opt/fstab.bk‘ //查看文件內容
# ansible node3 -m copy -a ‘content="HELLO ansible" dest=/opt/fstab.bk‘ 
//在fstab.bk文件中寫入HELLO ansible
# ansible node3 -a ‘cat /opt/fstab.bk‘ //查看內容

技術分享圖片
技術分享圖片

6.file 模塊

filem模塊是用來設置文件屬性。其中使用path指定文件路徑,使用src定義原文件路徑,使用name或dest來替換創建文件的符號鏈接。
# ansible-doc -s file //查看file模塊信息
# ansible node3 -m file -a ‘owner=jerry group=jerry mode=644 path=/opt/fstab.bk‘
//設置文件fstab.bk的所屬主為jerry,所屬組為jerry,權限644
# ansible node3 -m file -a ‘path=/opt/fstab.link src=/opt/fstab.bk state=link‘
//設置/opt/fstab.link為/opt/fstab.bk的鏈接文件
# ansible node3 -m file -a ‘path=/opt/fstab.link state=absent‘ //刪除一個文件
# ansible node3 -m file -a ‘path=/opt/abc state=touch‘ //創建一個空文件

技術分享圖片

7.ping模塊

ping模塊用來檢測指定主機的連通性。
# ansible all -m ping  //檢測所有主機

技術分享圖片

8.yum模塊

yum 模塊負責在被管理主機上安裝與卸載軟件包,其中name指定安裝的軟件包,present、latest用來表示安裝,absent表示卸載。
# ansible-doc -s yum //查看yum模塊信息
# ansible node3 -m yum -a ‘name=httpd‘ //安裝httpd軟件包
# ansible node3 -m yum -a ‘name=httpd state=absent‘ //卸載httpd軟件包

技術分享圖片

9.service 模塊

service模塊用來控制被管理服務的運行狀態,其中enabled表示是否開機自啟動,取值true或false;使用name定義服務名稱,使用state指定服務狀態,取值分別為started、stoped、restarted。
# ansible-doc -s service //查看service模塊信息
# ansible node3 -a ‘systemctl status httpd‘ //查看httpd服務狀態
# ansible node3 -m service -a ‘enabled=true name=httpd state=started‘ 
//啟動httpd服務並設置開機自動啟動

技術分享圖片

10.shell模塊

shell模塊可以在被管理主機上運行命令,支持管道符功能的復雜命令。
# ansible-doc -s shell //查看shell模塊信息
# ansible node3 -m user -a ‘name=tom‘ //創建用戶tom
# ansible node3 -m shell -a ‘echo 123123|passwd --stdin tom‘ 
//使用無交互模式給用戶設置密碼

技術分享圖片

11.script 模塊

script 模塊可以將本地腳本復制到被管理主機上進行運行,需要註意的是,使用相對路徑來指定腳本。
# ansible-doc -s script //查看script模塊信息
編輯一個本地腳本test.sh,復制到被管理主機上運行。
# vim test.sh
   #!/bin/bash
   echo "this is test script" > /opt/test.txt
   chmod 666 /opt/test.txt
# chmod +x test.sh 
# ansible node3 -m script -a ‘test.sh‘ //執行腳本

技術分享圖片

12.setup 模塊

setup 模塊用來收集、查看被管理主機的facts(facts是Ansible采集被管理主機設備信息的一個功能)。每個被管理主機在接受並運行管理命令之前,都鬼將自己的相關信息(操作系統版本、IP地址等)發送給控制主機。
# ansible-doc -s setup //查看setup模塊信息
# ansible node3 -m setup  //查看node3主機輸出信息

技術分享圖片

自動化運維之Ansible應用基礎模塊(超詳細)