用來查看遠程主機的一些基本信息node
ansible web -m setup #因爲主機基本信息較多,此處已單臺主機爲例
linux二、ping
用來測試遠程主機的運行狀態
ansible web -m ping
nginx三、file
相關選項以下:
force:須要在兩種狀況下強制建立軟連接,一種是源文件不存在,但以後會創建的狀況下;另外一種是目標軟連接已存在,須要先取消以前的軟鏈,而後建立新的軟鏈,有兩個選項:yes|no
group:定義文件/目錄的屬組
mode:定義文件/目錄的權限
owner:定義文件/目錄的屬主
path:必選項,定義文件/目錄的路徑
recurse:遞歸設置文件的屬性,只對目錄有效
src:被連接的源文件路徑,只應用於state=link的狀況
dest:被連接到的路徑,只應用於state=link的狀況
state:
directory:若是目錄不存在,就建立目錄
file:即便文件不存在,也不會被建立
link:建立軟連接
hard:建立硬連接
touch:若是文件不存在,則會建立一個新的文件,若是文件或目錄已存在,則更新其最後修改時間
absent:刪除目錄、文件或者取消連接文件
ansible web -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link" #遠程文件符號連接建立
ansible web -m command -a " ls –al /tmp/resolv.conf" #遠程文件信息查看
ansible web -m file -a "path=/tmp/resolv.conf state=absent" #遠程文件符號連接刪除
web四、copy
複製文件到遠程主機
相關選項以下:
backup:在覆蓋以前,將源文件備份,備份文件包含時間信息。有兩個選項:yes|no
content:用於替代「src」,能夠直接設定指定文件的值
dest:必選項。要將源文件複製到的遠程主機的絕對路徑,若是源文件是一個目錄,那麼該路徑也必須是個目錄
directory_mode:遞歸設定目錄的權限,默認爲系統默認權限
force:若是目標主機包含該文件,但內容不一樣,若是設置爲yes,則強制覆蓋,若是爲no,則只有當目標主機的目標位置不存在該文件時,才複製。默認爲yes
others:全部的file模塊裏的選項均可以在這裏使用
src:被複制到遠程主機的本地文件,能夠是絕對路徑,也能夠是相對路徑。若是路徑是一個目錄,它將遞歸複製。在這種狀況下,若是路徑使用「/」來結尾,則只複製目錄裏的內容,若是沒有使用「/」來結尾,則包含目錄在內的整個內容所有複製,相似於rsync。shellansible web -m copy -a "src=/tmp/123.txt dest=/tmp/123.txt owner=root group=root mode=0644" #將本地文件「/ tmp/123.txt」複製到遠程服務器
緩存五、command
在遠程主機上執行命令,默認模塊,此命令不支持$NAME、<、>、|、;、&等變量、特殊字符、管道。bash
raw, shell, command的區別:三個模塊都能調用對象機器上的某條指令或者某個可執行文件;
raw和shell模塊很像, 都支持管道; command模塊不支持管道服務器
相關選項以下:
creates:一個文件名,當該文件存在,則該命令不執行
free_form:要執行的linux指令
chdir:在執行指令以前,先切換到該目錄
removes:一個文件名,當該文件不存在,則該選項不執行
executable:切換shell來執行指令,該執行路徑必須是一個絕對路徑app
ansible web -m command -a "uptime" #查看web組主機的系統運行時間
ide六、shell
遠程執行腳本
經常使用參數
free_form參數 :必須參數,指定須要遠程執行的命令,可是並無具體的一個參數名叫free_form,具體解釋參考 command 模塊。
chdir參數 : 此參數的做用就是指定一個目錄,在執行對應的命令以前,會先進入到 chdir 參數指定的目錄中。
creates參數 :使用此參數指定一個文件,當指定的文件存在時,就不執行對應命令,可參考command 模塊中的解釋。
removes參數 :使用此參數指定一個文件,當指定的文件不存在時,就不執行對應命令,可參考 command 模塊中的解釋。
executable參數:默認狀況下,shell 模塊會調用遠程主機中的 /bin/sh 去執行對應的命令,一般狀況下,遠程主機中的默認 shell 都是 bash。若是你想要使用其餘類型的 shell 執行命令,則可使用此參數指定某種類型的 shell 去執行對應的命令。指定 shell 文件時,須要使用絕對路徑。
示例:
1)先在本地建立一個SHELL腳本
cat /tmp/rocketzhangtest.sh
#!/bin/sh
date +%F%H:%M:%S
#chmod +x /tmp/rocketzhang_test.sh
2)將建立的腳本文件分發到遠程
ansible web -m copy -a "src=/tmp/123.sh dest=/tmp/123.sh owner=root group=root mode=0755"
3)遠程執行
ansible web -m shell -a "/tmp/123.sh" 或者 ansible web -m shell -a "bash /tmp/123.sh"
4)其餘演示
ansible ansible-demo3 -m shell -a "chdir=/testdir echo mytest > test"
因爲shell支持管道與重定向等符號。上面命令打印出mytest並寫入test文件
ansible web -m shell -a "chdir=/tmp echo mytest > test ; cat /tmp/test"七、yum
用於軟件的安裝,升級,卸載,支持紅帽.rpm軟件的管理
相關選項以下:
conf_file:設定遠程yum執行因此來的yum配置文件
disable_gpg_check: 關閉gpg_check
name:須要安裝的軟件名稱
update_cache:安裝軟前更新緩存
disablerepo:不啓用某個源
enablerepo:指定repo源名稱
skip_broken:跳過異常軟件節點
state:軟件包狀態,包括:installed,present,latest,removed,absent,其中installed and present等效,latest標誌安裝yum中最新版本,removed和absent表示卸載
ansible web -m yum -a "name=lrzsz state=installed"
ansible web -m yum -a "name=lrzsz state=removed"八、service
管理遠程主機上的服務;要管理遠程主機中的某個服務,那麼這個服務必須能被 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart 中的任意一種所管理,不然 service 模塊也沒法管理遠程主機的對應服務。
經常使用參數
name參數:用於指定須要操做的服務名稱,好比 nginx。
state參數:用於指定服務的狀態, state有爲 started、stopped、restarted、reloaded。
enabled參數:此參數用於指定是否將服務設置爲開機 啓動項,設置爲 yes 表示將對應服務設置爲開機啓動,設置爲 no 表示不會開機啓動。
ansible web –m service –a 「name=httpd state=started」 #給本地linux系統安裝httpd服務,並設置開機自啓
獲取遠程文件狀態信息, 包括atime, ctime, mtime, md5, uid, gid等信息.
ansible web -m stat -a "path=/etc/resolv.conf"
十、get_url
#主要用於從http、ftp、https服務器上下載文件(相似於wget)
經常使用選項
sha256sum:下載完成後進行sha256 check;
timeout:下載超時時間,默認10s
url:下載的URL
url_password、url_username:主要用於須要用戶名密碼進行驗證的狀況
use_proxy:是事使用代理,代理需事先在環境變動中定義
dest:文件下路後的保存路徑
ansible web -m get_url -a "url=file:///root/free.sh dest=/tmp" #將本地/root/free.sh下載到/tmp
將遠端的url鏈接下載到本地/tmp目錄下
ansible web -m get_url -a "url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/tmp"十一、script
運行腳本
ansible web -m script -a 「/root/sys_init.sh」十二、fetch
從客戶端取文件至服務端,與copy相反,目錄可先tar
ansible web -m fetch -a "src=/root/a.sh dest=/home/script"1三、Hostname
管理主機名
ansible web -m hostname -a "name=node"1四、Cron
計劃任務,支持分時日月周,即 minute hour dag month weekday
ansible web -m cron -a "minute=*/5 job=/usr/sbin/ntpdate 172.16.0.1 & > /dev/null name=sysctime" #建立任務
ansible web -m cron -a "state=absent name=sysctime" #刪除任務1五、User
管理用戶
ansible web m user –a 'name=user1 comment="test user" uid=1000 home=/app/user1 group=root' #建立用戶,用戶說明,uid,指定家目錄和加入的組
ansible web –m user –a "name=user2 system=yes home=/app/user2" #建立用戶,且爲系統用戶並指定家目錄
ansible web –m user –a "name=user2 state=absent remove=yes" # 刪除用戶及家目錄等數據1六、Group
管理組ansible web –m group –a "name=testgroup system=yes" #建立組並未系統組ansible web –m group –a "name=testgroup state=absent" #刪除組