Ansible-doc里面的一些簡單模塊使用


ansible-doc  -l |grep 模塊名                  //模塊搜索

ansible-doc  模塊名  =============>    /EXAMPLE      //查看幫助

 

針對於普通用戶在命令行執行ansible命令:

       ansible 主機或主機集合   -m    模塊  -u  普通用戶  -a    '遠程命令'    -become=true

eg:

ansible 10.10.31.100 -m apt -a 'name="safe-rm" state=present' -become=true 

 

在ansible.cfg配置文件的同級目錄下執行

1.command模塊:    遠程執行命令,並返回結果到ansible主機

ansible 主機或主機集合   -m(模塊) command -a(命令) '遠程命令'

“<” ,“>”, “|”(管道), “;", “&”,“ $” 都只能在shell模塊中執行,該模塊不支持|管道命令

  • chdir:切換目錄

ansible 主機 -m command -a 'chdir=/opt/test ls'                   //切換目錄執行命令

  • creates:當文件存在則不執行命令,可用於判斷,不會真的創建

ansible 主機 -m command -a 'creates=/opt/test ls'                //目錄存在則不執行命令

  • removes:當文件不存在則不執行命令,可用於判斷,不會真的刪除

ansible 主機 -m command -a 'removes=/opt/test ls'       //目錄如果不存在,則不執行命令

 

 

2.shell模塊:同於command模塊 ,但shell模塊是通過調用遠程主機的shell解釋器執行命令的,可以執行shell的各種功能命令

eg:

ansible webs -m shell -a 'echo ${HOSTNAME}'                 //取消本地的結果輸出,直接在ansible遠程主機上執行echo ${HOSTNAME}

ansible webs -m shell -a "echo ${HOSTNAME}"                 //在本機事先執行echo ${HOSTNAME},再輸出到遠程的ansible被管理主機上

 

3.yum模塊

ansible 主機或主機集合   -m yum -a 'name=軟件包名  state=狀態'

                                                                                             installed \removed

 

4.service模塊

ansible 主機或主機集合  -m service -a 'name=服務名     enabled=yes\no     state=狀態’

                                                                                           開機是否自啟         state: started    stopped   restarted   reloaded

 

5.copy模塊:同於rsync 中的/                      //只能拷貝文件,或壓縮包

/opt/test/    /mnt                   把/opt/test/下的內容拷貝到/mnt下

/opt/test     /mnt                   把/opt下的test拷貝到/mnt下

ansible 主機或主機集合  -m copy -a 'src=本地文件   dest=ansible遠程主機文件路徑'

  • content:用於替換src,可以直接指定文件的值

ansible 主機集合 -m copy -a 'content="內容信息\n"  dest=目標路徑  mode=0644'

  

6.fetch模塊   從遠程拷貝文件到本機              //只能拷貝文件,或壓縮包

ansible 主機或主機集合 -m fetch -a "src=遠程主機上的文件 dest=本機路徑

force=yes                                    強制復制文件。YES:覆蓋,NO:遠程主機存在不復制

backup=yes"                          備份源文件,備份文件包含時間信息

 

7.lineinfile模塊  : 類似於sed中的s(替換)

ansible 主機或主機集合  -m lineinfile -a 

'path=要修改的文件                  "/etc/my.cnf"

regexp="正則表達式 "                "^binlog_format"

line="替換的新值 "  '                    "binlog_format=row"

 

8.replace模塊  修改匹配的字段

ansible 主機或主機集合 -m replace -a 

'path=修改文件                           "/etc/my.cnf"

regexp=正則表達式                    "row"

replace=替換的新值'                   "mixed"

 

9.setup模塊 (用於獲取主機的信息

ansible 主機或主機集合 -m setup

eg:

ansible webs -m setup -a 'filter= 過濾條件’      filter只能是過濾某個字段的信息,

====ansible webs -m setup|grep 過濾條件

 

ansible 主機集合  -m setup|grep 過濾條件  --tree    /opt/data                         //將setup的過濾信息保存到文件中,文件名為托管主機IP或域名

                                                                                                            ansible主機上自動創建                                                                                                  

10.script模塊

幫助我們在遠程主機上執行 ansible 管理主機上的腳本,也就是說,腳本一直存在於 ansible 管理主機本地,不需要手動拷貝到遠程主機后再執行

ansible 主機或主機集合 -m script -a '腳本絕對路徑'

 

11.file模塊

ansible 主機或主機集合 -m file -a 'path=目錄或文件路徑   state=狀態

recurse:是否遞歸

state:

directory:目錄,不存在則創建

file:文件,不存在也不創建

link:創建軟鏈接        dest=指定鏈接的路徑

hard:創建硬鏈接

touch:文件不存在的時候,創建一個新的文件

absent:刪除目錄、文件或者是取消鏈接文件

 

 

 

 

link:創建軟連接 ln -s

ansible 主機集合  -m file -a 'path=目標路徑/連接文件名   src=源鏈接的文件   state=link'

ansible  wwe   -m  file  -a  'path=/usr/bin/rm  src=/usr/bin/safe-rm  state=link force=yes' -become=true 

           ==ln -s /usr/bin/safe-rm /usr/bin/rm

force=yes   :強制覆蓋

-become=true :成為root用戶執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM