-m:要執行的模塊,默認為command
-a:指定模塊的參數
-u:ssh連接的用戶名,默認用root,ansible.cfg中可以配置
-b,--become:變成那個用戶身份,不提示密碼
-k:提示輸入ssh登錄密碼,當使用密碼驗證的時候用
-s:sudo運行
-U:sudo到哪個用戶,默認為root
-K:提示輸入sudo密碼,當不是NOPASSWD模式時使用
-C:只是測試一下會改變什么內容,不會真正去執行
-c:連接類型(default=smart)
-f:fork多少進程並發處理,默認為5個
-i:指定hosts文件路徑,默認default=/etc/ansible/hosts
-I:指定pattern,對已匹配的主機中再過濾一次
-list-host:只打印有哪些主機會執行這個命令,不會實際執行
-M:要執行的模塊路徑,默認為/usr/share/ansible
-o:壓縮輸出,摘要輸出
--private-key:私鑰路徑
-T:ssh連接超時時間,默認是10秒
-t:日志輸出到該目錄,日志文件名以主機命名
-v:顯示詳細日志
ansible server1 -m setup #產看指定主機server1上的facts變量信息
ansible * -m setup #查看指定的所有主機上的facts變量信息
ansible-doc -l:列出有哪些可用的模塊,按q退出
ansible-doc -l | wc -l:列出有多少個可用的模塊
ansible-doc -l | grep user:列出與user有關的模塊
ansible-doc user:查看user模塊的幫助文檔,按q退出。也可以在最后一行輸入/passwd,來過濾與passwd有關的內容
ansible test -a 'df -h' 在test組執行df -h命令
ping
n ping模塊用來檢查目標主機是否在線
n 例子:ansible webserver -m ping
yum
n yum模塊用來在Centos系統上使用yum命令安裝軟件包
n 選項:
u name: 指定安裝包的名字
u state:latest 安裝最新版 present 默認安裝 installed 安裝 absent 卸載
removed 卸載
n 例子:ansible webservers -m yum -a ‘name=httpd state=latest’
command
n command模塊用來執行系統命令,但是不支持shell下的特殊符號 如:| &&等
n 例子:ansible webservers -m command -a ‘echo 李想’
shell
n shell模塊和command模塊使用方法基本一致,但是他可以支持shell的特殊符號,如: | && 等
n 例子:ansible webservers -m shell -a “cd /opt/ && touch lixiang”
service
n service模塊用來管理centos上的服務的啟動、關閉、重啟和重載
n 選項:
u name: 服務名字
u state: started(啟動) stopped(停止) restarted(重啟) reloaded(重載)
u enabled: 默認是no,將服務設置為開機自啟
file
n file模塊用來創建文件、目錄、鏈接文件
n 選項:
u group:定義文件/目錄的屬組
u mode:定義文件/目錄的權限
u owner:定義文件/目錄的屬主
u path:必選項,定義文件/目錄的路徑
u recurse:遞歸的設置文件的屬性,只對目錄有效
u src:要被鏈接的源文件的路徑,只應用於state=link的情況
u dest:被鏈接到的路徑,只應用於state=link的情況
u state:
l directory:如果目錄不存在,創建目錄
l file:即使文件不存在,也不會被創建
l link:創建軟鏈接
l hard:創建硬鏈接
l touch:如果文件不存在,則會創建一個新的文件,如果文件或目錄已存在,則更新其最后修改時間
l absent:刪除目錄、文件或者取消鏈接文件
user
n user模塊用來創建用戶
n 選項:
u home: 指定創建的家目錄
u groups:指定用戶組
u uid:指定UID
u password:設置密碼,密碼必須是密文
Openssl passwd
u name:創建的用戶名字
u createhome:是否創建家目錄(yes/no)
u state: 是創建還是刪除。(present,absent),默認是創建
u shell: 指定用戶登錄的shell環境
u remove:刪除用戶家目錄,默認為no
group
n group用來創建用戶組
n 選項
u gid:指定用的gid。
u name:指定用戶名。
u state:是創建還是刪除。(present,absent)
copy
n copy模塊用來復制文件至目標主機
n 選項:
u src:文件在管理主機的據對路徑或者相對路徑
u dest:將文件復制到目標主機的路徑
u backup:是否將目標主機的同名文件備份,默認為no
u mode: 授權
u directory_mode:遞歸授權
n 例子:
ansible webservers -m copy -a ‘src=/root/nginx.sh dest=/opt/’
unarchive
n unarchive模塊用來解壓文件
n 選項:
u copy:在解壓文件之前,是否先將文件復制到遠程主機,默認為yes。若為no,則要求目標主機上壓縮包必須存在
u creates:指定一個文件名,當該文件存在時,則解壓指令不執行
u dest:遠程主機上的一個路徑,即文件解壓的絕對路徑。
u group:解壓后的目錄或文件的屬組
u mode:解壓后文件的權限
u src:如果copy為yes,則需要指定壓縮文件的源路徑
u owner:解壓后文件或目錄的屬主
n 例子:
ansible webservers -m unarchive -a ‘src=/root/nginx.tar.gz dest=/opt/ group=www ower=www mode=777 ’
get_url
n get_url模塊,該模塊主要用於從http、ftp、https服務器上下載文件(類似於wget
n 選項:
u url: 指定要下載的文件的URL地址
n 例子:
ansible webservers -m get_url -a ‘url= http://nginx.org/download/nginx-1.15.7.tar.gz dest=/root/’
synchronize
n 使用rsync同步文件,將主控方目錄推送到指定節點的目錄下,使用此模塊需要先安裝rsync
n delete: 刪除不存在的文件,delete=yes 使兩邊的內容一樣(即以推送方為主),默認no
n src: 要同步到目的地的源主機上的路徑; 路徑可以是絕對的或相對的。如果路徑使用”/”來結尾,則只復制目錄里的內容,如果沒有使用”/”來結尾,則包含目錄在內的整個內容全部復制
n dest:目的地主機上將與源同步的路徑; 路徑可以是絕對的或相對的。
n dest_port:默認目錄主機上的端口 ,默認是22,走的ssh協議。
n mode: push或pull,默認push,一般用於從本機向遠程主機上傳文件,pull 模式用於從遠程主機上取文件。
n rsync_opts:通過傳遞數組來指定其他rsync選項。
fetch
n fetch模塊它用於從遠程機器獲取文件,並將其本地存儲在由主機名組織的文件樹中。
n 選項:
u src:遠程系統上要獲取的文件。 這必須是一個文件,而不是一個目錄。 后續版本可能會支持遞歸提取。
u dest:保存文件的目錄
setup
n setup 模塊用於收集遠程主機的一些基本信息。
n 選項:
u filter參數:用於進行條件過濾。如果設置,僅返回匹配過濾條件的信息。
u 常用的過濾關鍵詞:
l ansible_all_ipv4_addresses:僅顯示ipv4的信息
l ansible_devices:僅顯示磁盤設備信息
l ansible_distribution:顯示是什么系統,例:centos,suse等
l ansible_distribution_major_version:顯示是系統主版本
l ansible_distribution_version:僅顯示系統版本
l ansible_machine:顯示系統類型,例:32位,還是64位
l ansible_eth0:僅顯示eth0的信息
l ansible_hostname:僅顯示主機名
l ansible_kernel:僅顯示內核版本
l ansible_lvm:顯示lvm相關信息
l ansible_memtotal_mb:顯示系統總內存
l ansible_memfree_mb:顯示可用系統內存
l ansible_memory_mb:詳細顯示內存情況
l ansible_swaptotal_mb:顯示總的swap內存
l ansible_swapfree_mb:顯示swap內存的可用內存
l ansible_mounts:顯示系統磁盤掛載情況
l ansible_processor:顯示cpu個數(具體顯示每個cpu的型號)
l ansible_processor_vcpus:顯示cpu個數(只顯示總的個數)
l ansible_python_version:顯示python版本
u 例子:
獲取目標主機的ipv4地址
ansible webservers -m setup -a 'filter=ansible_all_ipv4_addresses'