Ansible常見模塊介紹


本節內容:

  • ansible命令基礎
  • 常見模塊舉例

 

一、ansible命令基礎

語法:

ansible <host-pattern> [-f forks] [-m module_name] [-a args] [options] 
  • host-pattern:這次的命令對哪些主機生效;
  • -f forks:啟動的並發線程數,就是一次並行處理多少主機;
  • -m module_name:要使用的模塊;
  • -a args:模塊特有的參數。

 

常見的模塊:

  • user
  • yum
  • copy
  • cron
  • command:這是默認的模塊,表示在被管理主機上運行一個命令。對於command模塊,-a不再是指定參數,而是命令本身。
  • shell

 

二、常見模塊舉例

1. /etc/ansible/hosts配置文件內容

 

2. command模塊

command模塊是默認的模塊,表示在被管理主機上運行一個命令。對於command模塊,-a不再是指定參數,而是命令本身。所以這個模塊有個缺陷,運行的命令中不能使用變量或者參數。

示例:

[root@node1 ~]# ansible nginx -m command -a "date"

[root@node1 ~]# ansible mysql -m command -a "tail -3 /etc/passwd"

 

3. cron模塊

cron模塊可以讓每一個被管理節點能夠自動生成一個定期任務計划。查看cron模塊的用法:

[root@node1 ~]# ansible-doc -s cron

示例:

[root@node1 ~]# ansible mysql -m cron -a 'minute="*/10" job="/usr/bin/echo hello" name="test cron job"'

注意:

  • 所有的參數可以用""包含起來
  • day之類的參數沒有指定,默認都是*
  • 默認state參數的值為present

 

4. user模塊

user模塊實現用戶賬號管理。查看user模塊的用法:

[root@node1 ~]# ansible-doc -s user

幾個主要參數:

  • name=:用戶名
  • uid:用戶的uid
  • group:所屬組,即私有組
  • groups:附加組。
  • state:狀態。

示例:

[root@node1 ~]# ansible mysql -m user -a 'name="jack"'

[root@node1 ~]# ansible mysql -m user -a 'name="jack" state=absent'

 

5. group模塊

group模塊:組管理。查看group模塊的用法:

示例:

[root@node1 ~]# ansible-doc -s group

[root@node1 ~]# ansible mysql -m group -a 'name=mysql gid=306 system=yes'

 

6. copy模塊

copy模塊實現文件復制。查看copy模塊的用法:

[root@node1 ~]# ansible-doc -s copy

幾個主要參數:

  • src=:指明源文件本地路徑。可以是絕對路徑,也可以是相對路徑。可以不使用src,使用content。就是說用content內容來生成文件。
  • dest=:定義遠程目標文件路徑,只能使用絕對路徑。
  • content=:可以不使用src,使用content。就是說用content內容來生成文件。

示例:

[root@node1 ~]# ansible mysql -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible owner=root mode=640'

[root@node1 ~]# ansible mysql -m copy -a 'content="Hello World\nGood boy" dest=/tmp/test.txt owner=root mode=640'

 

7. file模塊

file模塊可以設定文件屬性,還可以創建文件的符號鏈接。查看file模塊的用法:

[root@node1 ~]# ansible-doc -s file

幾個重要參數:

  • path=:指明對哪個文件做管理。也可以使用dest和name。
  • 創建文件的符號鏈接:src=:指明源文件,path=:指明符號鏈接文件路徑

示例:

[root@node1 ~]# ansible mysql -m file -a 'owner=root group=mysql mode=644 path=/tmp/test.txt'

[root@node1 ~]# ansible mysql -m file -a 'path=/tmp/test.link src=/tmp/test.txt state=link'

 

8. ping模塊

ping模塊測試指定主機是否能連接。查看ping模塊的用法:

[root@node1 ~]# ansible-doc -s ping

示例:

[root@node1 ~]# ansible nginx -m ping

 

9. service模塊

service模塊是管理服務的。查看service模塊的用法:

[root@node1 ~]# ansible-doc -s service

幾個重要參數:

  • enabled=:是否開機自動啟動,取值為true或false;
  • name=:服務名字;
  • state=:狀態,取值有started,stoped,restarted。

示例:

[root@node1 ~]# ansible 172.16.7.151 -m service -a 'enabled=true name=httpd state=stopped'

 

10. shell模塊

和command模塊類似,但是可以使用變量。用於執行一些復雜的命令。查看shell模塊的使用方法:

[root@node1 ~]# ansible-doc -s shell

示例:

[root@node1 ~]# ansible mysql -m user -a 'name="test"'
[root@node1 ~]# ansible mysql -m command -a 'echo wisedu | passwd --stdin test'
[root@node1 ~]# ansible mysql -m command -a 'tail -1 /etc/passwd'

[root@node1 ~]# ansible mysql -m shell -a 'echo wisedu | passwd --stdin user1'
[root@node1 ~]# ansible mysql -m command -a 'tail -1 /etc/shadow'

所以一旦有管道、變量之類的,你最好使用shell模塊,而不要用command模塊。

 

11. script模塊

script模塊將本地腳本復制到遠程主機並運行之。查看script模塊的用法:

[root@node1 ~]# ansible-doc -s script

示例:

[root@node1 ~]# vim test.sh
#/bin/bash                                                                                                                                    
echo "hello world" >/tmp/nba.txt
[root@node1 ~]# chmod +x test.sh 
[root@node1 ~]# ansible mysql -m script -a '/root/test.sh'

 

12. yum模塊  

yum模塊管理程序包。查看yum模塊的用法:

[root@node1 ~]# ansible-doc -s yum  

幾個重要參數:

  • name=:指定要安裝的程序包,可以帶上版本號,否則安裝最新版本;
  • state=:present表示安裝,absent表示卸載。

示例:

[root@node1 ~]# ansible mysql -m yum -a 'name=ksh'

 

13. setup模塊

setup模塊:收集遠程主機的facts。ansbile在管理每一個主機時,這些主機在被運行管理命令之前,會首先向ansible節點報告自己主機當前的各種可能被ansible主機用到的狀態信息,如操作系統版本、ip地址等信息,這些信息都是以變量的形式,ansible主機可以在jinjia2中調用,為不同的服務器生成不同的配置文件。

[root@node1 ~]# ansible mysql -m setup

 


免責聲明!

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



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