快连VPN:速度和安全性最佳的VPN服务
官方文檔:https://docs.ansible.com/ansible/latest/command_guide/intro_adhoc.html
簡介
Ad-hoc命令是一種臨時輸入並執行的命令,通常用於測試和調試。它們不需要永久保存,簡單來說,ad-hoc就是“即時命令”。
常用模塊
1、command 模塊(默認模塊)
默認模塊,沒有shell強大,基本上shell模塊都可以支持command模塊的功能。
【1】幫助
ansible-doc command# 推薦使用下面這個ansible-doc command -s登錄後複製
【2】參數解釋
- free_form——必須參數,指定需要遠程執行的命令。需要說明一點,free_form 參數與其他參數(如果想要使用一個參數,那麼則需要爲這個參數賦值,也就是name=value模式)並不相同。比如,當我們想要在遠程主機上執行 ls 命令時,我們並不需要寫成”free_form=ls” ,這樣寫反而是錯誤的,因爲並沒有任何參數的名字是 free_form,當我們想要在遠程主機中執行 ls 命令時,直接寫成 ls 即可。因爲 command 模塊的作用是執行命令,所以,任何一個可以在遠程主機上執行的命令都可以被稱爲 free_form。
- chdir——此參數的作用就是指定一個目錄,在執行對應的命令之前,會先進入到 chdir 參數指定的目錄中。
- creates——看到 creates,你可能會從字面上理解這個參數,但是使用這個參數並不會幫助我們創建文件,它的作用是當指定的文件存在時,就不執行對應命令,比如,如果 /testdir/test文件存在,就不執行我們指定的命令。
- removes——與 creates 參數的作用正好相反,它的作用是當指定的文件不存在時,就不執行對應命令,比如,如果 /testdir/tests 文件不存在,就不執行我們指定的命令,此參數並不會幫助我們刪除文件。
【3】示例演示
# 上面命令表示在 web 主機上執行 ls 命令,因爲使用的是 root 用戶,所以默認情況下,ls 出的結果是 web 主機中 root 用戶家目錄中的文件列表。ansible web -m command -a "ls"# chdir 參數表示執行命令之前,會先進入到指定的目錄中,所以上面命令表示查看 web 主機上 /testdir 目錄中的文件列表,返回顯示有2個文件。ansible web -m command -a "chdir=/testdir ls"# 下面命令表示 /testdir/testfile1 文件存在於遠程主機中,則不執行對應命令。/testdir/testfile3 不存在,才執行”echo test”命令。ansible web -m command -a "creates=/testdir/testfile1 echo test"# 下面命令表示 /testdir/testfile3 文件不存在於遠程主機中,則不執行對應命令。/testdir/testfile1 存在,才執行”echo test”命令。ansible web -m command -a "removes=/testdir/testfile1 echo test"登錄後複製
2、shell 模塊
shell模塊 [執行遠程主機的shell/python等腳本]。
【1】查看幫助
ansible-doc shell -s登錄後複製
【2】示例演示
# -o:一行顯示# 安裝httpdansible web -m shell -a 'yum -y install httpd' -o# 查看時間ansible web -m shell -a 'uptime' -o登錄後複製
3、script 模塊
script模塊 [在遠程主機執行主控端的shell/python等腳本 ]。
【1】查看幫助
ansible-doc script -s登錄後複製
【2】參數解釋
- free_form——必須參數,指定需要執行的腳本,腳本位於 ansible 管理主機本地,並沒有具體的一個參數名叫 free_form,具體解釋請參考 command 模塊。
- chdir——此參數的作用就是指定一個遠程主機中的目錄,在執行對應的腳本之前,會先進入到 chdir 參數指定的目錄中。
- creates——使用此參數指定一個遠程主機中的文件,當指定的文件存在時,就不執行對應腳本,可參考 command 模塊中的解釋。
- removes——使用此參數指定一個遠程主機中的文件,當指定的文件不存在時,就不執行對應腳本,可參考 command 模塊中的解釋。
【3】示例演示
# 下面命令表示 ansible 主機中的 /testdir/testscript.sh 腳本將在 web 主機中執行,執行此腳本之前,會先進入到 web 主機中的 /opt 目錄ansible web -m script -a "chdir=/opt /testdir/testscript.sh"# 下面命令表示,web主機中的 /testdir/testfile1文件已經存在,ansible 主機中的 /testdir/testscript.sh 腳本將不會在 web 主機中執行。ansible web -m script -a "creates=/testdir/testfile1 /testdir/testscript.sh"# 下面命令表示,web 主機中的 /testdir/testfile1 文件存在,ansible 主機中的 /testdir/testscript.sh 腳本則會在 web 主機中執行。ansible ansible-demo3 -m script -a "removes=/testdir/testfile1 /testdir/testscript.sh"登錄後複製
4、raw 模塊
raw模塊 [類似於command模塊、支持管道傳遞]。
【1】查看幫助
ansible-doc raw -s登錄後複製
【2】示例演示
ansible web -m raw -a "ifconfig eth0 |sed -n 2p |awk '{print $2}' |awk -F: '{print $2}'"登錄後複製
5、copy 模塊
copy 模塊 從主控端複製文件到被控端。
【1】查看幫助
ansible-doc copy -s登錄後複製
【2】示例演示
# -a,--args:後面接參數ansible web -m copy -a 'src=/etc/ansible/hosts dest=/tmp/hosts owner=root group=bin mode=777'# backup=yes/no:文件存在且文件內容不一樣是否備份,默認不備份ansible web -m copy -a 'src=/etc/ansible/hosts dest=/tmp/hosts owner=root group=bin mode=777 backup=yes'登錄後複製
6、fetch 模塊
copy 模塊從被控端複製文件到主控端,正好跟copy相反。
【1】查看幫助
ansible-doc fetch -s登錄後複製
【2】示例演示
# 跟copy支持的參數差不多,src:遠端主機的目錄,dest:主控端目錄,其實真正存放的目錄在:/tmp/192.168.182.129/tmp/up.sh,會按每臺主機分組存放#This `must' be a file, not a directory:只支持單個文件獲取ansible 192.168.182.129 -m fetch -a "src=/etc/fstab dest=/testdir/ansible/"登錄後複製
7、unarchive 模塊(解包模塊)
unarchive 模塊是解包模塊。
【1】查看幫助
ansible-doc unarchive -s登錄後複製
【2】參數解釋
- copy——默認爲yes,當copy=yes,那麼拷貝的文件是從ansible主機複製到遠程主機上的,如果設置爲copy=no,那麼會在遠程主機上尋找src源文件。
- src——源路徑,可以是ansible主機上的路徑,也可以是遠程主機上的路徑,如果是遠程主機上的路徑,則需要設置copy=no。
- dest——遠程主機上的目標路徑。
- mode——設置解壓縮後的文件權限。
【3】示例演示
ansible 192.168.182.129 -m unarchive -a 'src=/testdir/ansible/data.tar.gz dest=/tmp/tmp/'登錄後複製
8、archive模塊(打包模塊)
unarchive 模塊是打包模塊。
【1】查看幫助
ansible-doc archive -s登錄後複製
【2】示例演示
# path:主控端目錄,format:壓縮格式,dest:被控端目錄文件'ansible 192.168.182.129 -m archive -a 'path=/tmp/ format=gz dest=/tmp/tmp/t.tar.gz'登錄後複製
9、user 模塊
【1】查看幫助
ansible-doc user -s登錄後複製
【2】示例演示
# 創建用戶(present:默認,可以不寫)ansible web -m user -a 'name=test state=present'# 刪除用戶(absent)ansible web -m user -a 'name=test state=absent'# 修改密碼# 步驟一、生成加密密碼echo '777777'|openssl passwd -1 -stdin# 步驟二、修改祕密ansible web -m user -a 'name=test password="$1$Jo5FD9Jr$2QB.BuybbtR35ga4O5o8N."'# 修改shellansible web -m user -a 'name=test shell=/sbin/noglogin append=yes'登錄後複製
10、group 模塊
【1】查看幫助
ansible-doc group -s登錄後複製
【2】示例演示
# 創建ansible 192.168.182.129 -m group -a 'name=testgroup system=yes'# 刪除ansible 192.168.182.129 -m group -a 'name=testgroup state=absent'登錄後複製
11、yum 模塊
【1】查看幫助
ansible-doc yum -s登錄後複製
【2】示例演示
# 升級所有包ansible web -m yum -a 'name="*" state=latest'# 安裝apacheansible web -m yum -a 'name="httpd" state=latest'登錄後複製
12、service 模塊
【1】查看幫助
ansible-doc service -s登錄後複製
【2】示例演示
ansible web -m service -a 'name=httpd state=started'ansible web -m service -a 'name=httpd state=started enabled=yes'ansible web -m service -a 'name=httpd state=stopped'ansible web -m service -a 'name=httpd state=restarted'ansible web -m service -a 'name=httpd state=started enabled=no'登錄後複製
13、file 模塊
【1】查看幫助
ansible-doc file -s登錄後複製
【2】示例演示
# 創建文件ansible web -m file -a 'path=/tmp/88.txt mode=777 state=touch'# 創建目錄ansible web -m file -a 'path=/tmp/99 mode=777 state=directory'# 刪除ansible web -m file -a 'path=/tmp/99 state=absent'登錄後複製
14、setup 模塊
【1】查看幫助
ansible-doc setup -s登錄後複製
【2】示例演示
ansible web -m setupansible web -m setup -a 'filter=ansible_all_ipv4_addresses'登錄後複製
15、cron 模塊
【1】查看幫助
ansible-doc cron -s登錄後複製
【2】示例演示
# 創建定時任務ansible 192.168.182.129 -m cron -a 'minute=* weekday=1,3,5,6,7 job="/usr/bin/wall FBI warning" name=warningcron'# 關閉定時任務ansible 192.168.182.129 -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'# 刪除定時任務ansible 192.168.182.129 -m cron -a ' job="/usr/bin/wall FBI warning" name=warningcron state=absent'登錄後複製
16、hostname 模塊
【1】查看幫助
ansible-doc hostname -s登錄後複製
【2】示例演示
ansible 192.168.182.129 -m hostname -a 'name=192.168.182.129'登錄後複製
以上就是Ansible Ad-Hoc(點對點模式)的詳細內容,更多請關注本站其它相關文章!