1.setup
該模組主要用於收集資訊,是通過呼叫facts元件來實現的
ansible-doc -s setup
ansible mysql -m setup #檢視mysql伺服器上所有資訊
檢視遠端主機基本資訊
ansible all -m setup
2.ping測試遠端主機執行狀態
ansible all -m ping
3.file
該模組主要用於設定檔案的屬性,比如建立檔案、建立鏈結檔案、刪除檔案等
ansible-doc -s file
touch /opt/file.txt
ansible mysql -m file -a 'path=/opt/file.txt owner=test02 group=mysql mode=666'
#對test檔案設定屬主、屬組、許可權
當然,也可以建立空檔案,操作相對簡單
ansible mysql -m file -a 'path=/opt/abc.txt state=touch' #建立空檔案
ansible mysql -m file -a 'path=/opt/abc.txt state=absent' #刪除
設定檔案屬性
group:定義檔案/目錄的屬組
mode:定義檔案/目錄的許可權
owner:定義檔案/目錄的屬主
path:必選項,定義檔案/目錄的路徑
recurse:遞迴設定檔案的屬性,只對目錄有效
state:
directory:如果目錄不存在,就建立目錄
file:即使檔案不存在,也不會被建立
touch:如果檔案不存在,則會建立乙個新檔案,如果檔案或目錄已存在,則更新其最後修改時間
遠端檔案鏈結建立
ansible [hostgroup or ip] -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"
遠端檔案鏈結刪除
ansible all -m file -a "path=/tmp/resolv.conf state=absent"
4.copy
這個模組用於將檔案複製到遠端主機,同時支援給定內容生成檔案和修改許可權等
ansible-doc -s copy
ansible all -m copy -a 'src=/etc/fstab dest=/opt/fstab.bk owner=root mode=644'
#src:原檔案 dest:複製後目標檔案 owner:屬主 mode:許可權
ansible mysql -a 'ls -l /opt' #在控制主機上檢視
ansible mysql -m copy -a 'content="hello world!" dest=/opt/hello.txt'
#複製檔案hello.txt中寫入「hello world!」
ansible mysql -a 'cat /opt/test.txt' #在控制主機上檢視
複製檔案到遠端主機
backup:在覆蓋之前,將原始檔備份,備份檔案包含時間資訊。有兩個選項:yes|no
content:用於替代「src」,可以直接設定指定檔案的值
dest:必選項。要將原始檔複製到的遠端主機的絕對路徑,如果原始檔是乙個目錄,
那麼該路徑也必須是個目錄
directory_mode:遞迴設定目錄的許可權,預設為系統預設許可權
force:如果目標主機包含該檔案,但內容不同,如果設定為yes,則強制覆蓋,如果為no,
則只有當目標主機的目標位置不存在該檔案時,才複製。預設為yes
others:所有的file模組裡的選項都可以在這裡使用
src:被複製到遠端主機的本地檔案,可以是絕對路徑,也可以是相對路徑。
如果路徑是乙個目錄,它將遞迴複製。在這種情況下,如果路徑使用「/」來結尾,
則只複製目錄裡的內容,如果沒有使用「/」來結尾,則包含目錄在內的整個內容全部複製,
類似於rsync。
將本地檔案「/root/1.txt 」複製到遠端伺服器
ansible all -m copy -a "src=/root/1.txt dest=/tmp/1.txt owner=root group=root mode=0644"
5.command
這個模組可以直接在遠端主機上執行命令,並將結果返回本主機。注意,該命令不支援 | 管道命令
ansible [主機] [-m 模組] [-a args]
ansible-doc -l #列出所有安裝模組(q退出)
ansible-doc -s yum #列出yum模組描述資訊和操作動作
ansible all -m command -a 'date' #查詢date
ansible all -a 'ls /' #如果不加-m模組,預設執行command模組
在遠端主機上執行命令
creates:乙個檔名,當該檔案存在,則該命令不執行
free_form:要執行的linux指令
chdir:在執行指令之前,先切換到該目錄
removes:乙個檔名,當該檔案不存在,則該選項不執行
executable:切換shell來執行指令,該執行路徑必須是乙個絕對路徑
ansible all -m command -a "uptime"
#執行命令不寫入history
遠端檔案資訊檢視
ansible all -m command -a "ls –l /tmp/1.txt"
6.shell
shell模組可以在遠端主機上呼叫shell直譯器執行命令,支援shell的各種功能,例如管道等
ansible-doc -s shell
ansible webserver -m user -a 'name=jerry'
ansible webserver -m shell -a 'echo abc123 | passwd --stdin jerry'
#建立使用者,免互動設定密碼
切換到shell執行指定的指令,引數與command相同。
與command不同的是,此模組可以支援命令管道,同時還有另乙個模組也具備此功能:raw
先在本地建立乙個shell指令碼
vim /tmp/test.sh
#!/bin/sh
date +%f_%h:%m:%s
chmod +x /tmp/test.sh
將建立的指令碼檔案分發到遠端
ansible all -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh owner=root group=root mode=0755"
遠端執行
ansible all -m shell -a "/tmp/test.sh"
7.cron
該模組適用於管理cron計畫任務的
建立和刪除計畫任務
ansible [hostgroup or ip] -m cron -a "name='....' job='.....' $time"
-m 跟模組,使用的是 cron 模組
name= 指定計畫任務的名字,方便日後管理
job= 指定具體的任務
$time 指定具體的執行時間,minute分鐘,hour小時,day 天,month 月份。weekday 0 或者 7 代表週末。
state= 選項用來指定 name 並刪除
增加計畫任務
ansible all -m cron -a "name='test cron' job='/bin/bash /tmp/test.sh' weekday=6"
刪除計畫任務
ansible all -m cron -a "name='test cron' state=absent"
8.user
該模組主要是用來管理使用者賬號
ansible-doc -s user
ansible all -m user -a 'name=test' #建立使用者
ansible mysql -m command -a 'tail /etc/passwd'
ansible mysql -m user -a 'name=test01 state=absent' #刪除使用者
9.yumansible-doc -s yum
ansible webserver -m yum -a 'name=httpd' #安裝httpd
ansible webserver -m yum -a 'name=httpd state=absent' #移除httpd
10.service
該模組用於服務程式的管理
#開啟httpd服務 ; enabled:開機自啟動
ansible webserver -m service -a 'name=httpd enabled=true state=stopped' #關閉httpd服務
ansible-doc -l 列出ansible所有的模組
ansible-doc -s module_name 檢視指定模組具體適用
Ansible常用模組
1.ping模組2.ansible command模組是ansible預設模組,主要用於執行linux基礎命令,可以執行遠端伺服器命令執行 任務執行等操作。但command模組不支援變數 重定向 管道符等,這些操作需要用shell模組執行 command模組使用詳解 chdir 執行命令前,切換到目...
Ansible 常用模組
ansible是基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點 具有批量系統配置 批量程式部署 批量執行命令等功能。是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種...
Ansible常用模組
例子 ansible webserver m pingname 指定安裝包的名字 state latest 安裝最新版 present 預設安裝 installed 安裝 absent 解除安裝 removed 解除安裝 例子 ansible webservers m yum a name http...