Ansible可使用命令行方式進行自動化管理,基本語法以下:mysql
ansible <host-pattern> [-m module_name] [-a args]web
<host-pattern> 對哪些主機生效sql
[-m module_name] 須要使用的模塊shell
[-a args] 模塊特有的參數,這裏在使用時需加單引號哦!vim
Ansible的命令行管理工具都是由一系列模塊、參數所支持的,能夠在命令行後加上-h或--help獲取幫助。如使用ansible-doc工具能夠經過ansible-doc -h查看其幫助信息。bash
ansible自帶了不少模塊,可以下發執行Ansible的各類管理任務。下面介紹下Ansible經常使用的一些核心模塊:運維
Ansible管理工具使用-m來指定使用模塊,默認使用command模塊,即不指定-m選項時會默認使用command模塊來執行管理任務。ide
# 例如: # ansible webserver -m command -a 'date' # ansible mysql -a 'date' #不指定-m 選項時,默認使用command模塊
Ansible中的cron模塊用於定義任務計劃。其中有兩種狀態(state):present表示添加(省略時默認使用添加);absent表示移除。工具
ansible-doc -s cron #查看cron模塊的幫助信息測試
# ansible webserver -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job"' #添加一個計劃性任務
# ansible webserver -a 'crontab -l' #查看計劃性任務
# ansible webserver -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state=absent' #absent表示移除
Ansible中的user模塊用於建立新用戶和更改、刪除已存在的用戶。其中name選項用來指明建立的用戶名稱。
user模塊是請求的是useradd, userdel, usermod三個指令
ansible webserver -m user -a 'name="zyc"' #建立用戶zyc
ansible webserver -m command -a 'tail /etc/passwd' #查看webserver主機上的用戶列表
ansible webserver -m user -a 'name="zyc" state=absent' #刪除用戶
ansible webserver -m command -a 'tail /etc/passwd' #再次查看用戶列表
Ansible中的group模塊用於對用戶組進行管理。
ansible-doc -s group
ansible mysql -m group -a 'name=mysql gid=306 system=yes' #建立mysql組 將mysql用戶添加進去
ansible mysql -a 'tail /etc/group'
ansible mysql -m user -a 'name=mysql uid=306 system=yes group=mysql'
ansible mysql -a 'tail /etc/passwd'
ansible mysql -a 'id mysql'
5.copy模塊
Ansible中的copy模塊用於實現文件複製和批量下發文件。其中src用來定義本地源文件路徑,使用dest定義被管理主機文件路徑,使用content是經過指定信息內容來生成目標文件。
ansible-doc -s copy
ansible webserver -m copy -a 'src=/etc/fstab dest=/opt/fstab.back owner=root mode=640'
#(屬主root 權限640)ansible webserver -a 'ls -l /opt'
ansible webserver -a 'cat /opt/fstab.back'
ansible webserver -m copy -a 'content="hello heihei!"dest=/opt/fstab.back' #將hello heihei!寫入/opt/fstab.back
ansible webserver -a 'cat /opt/fstab.back'
6.file模塊
Ansible中file模塊用來設置文件屬性。(path指定文件路徑,src指定源文件路徑,name或者dest替換建立文件的符號連接)
ansible-doc -s file
ansible webserver -m user -a 'name=mysql system=yes'
ansible webserver -m group -a 'name=mysql system=yes'
ansible webserver -m file -a 'owner=mysql group=mysql mode=644 path=/opt/fstab.back' #修改文件的屬主屬組權限等
ansible webserver -m file -a 'path=/opt/fstab.link src=/opt/fstab.back state=link' #設置/opt/fstab.link爲/opt/fstab.back的連接文件
ansible webserver -m file -a "path=/opt/fstab.back state=absent" #刪除一個文件
ansible webserver -m file -a "path=/opt/school state=touch" #建立一個文件
7.ping模塊
Ansible中ping模塊用來測試指定主機的連通性
ansible all -m ping #測試全部主機的連通性
8.shell模塊
Ansible中的shell模塊可在被管理主機上運行命令,並支持像管道符號等功能的複雜命令。
ansible mysql -m user -a 'name=zyc' #建立用戶
ansible mysql -m shell -a 'echo 123123|passwd --stdin zyc' #給用戶設置密碼
9.yum模塊
Ansible中的yum模塊負責在被管理主機上安裝與卸載軟件包,可是須要提早在每一個節點配置本身的yum倉庫。
name指定須要安裝的軟件包,須要帶上軟件包的版本號,不然默認安裝最新版
state指定安裝軟件包的狀態,present、latest表示安裝;absent表示卸載
ansible webserver -m yum -a 'name=http' #安裝http軟件
ansible webserver -m yum -a 'name=http state=absent' #卸載http軟件
10.service模塊
Ansible中使用service模塊來控制管理服務的運行狀態。
enabled表示是否開機自啓動,取值爲true和false
name定義服務名稱
state指定服務狀態,取值爲:started(開啓)、stoped(中止)、restarted(重啓)
# ansible webserver -m yum -a 'name=http' #安裝http軟件 # ansible webserver -m service -a 'enabled=true name=httpd state=started' # ansible webserver -a 'systemctl status httpd.service'
11.script模塊
Ansible中的script模塊能夠將本地腳本複製到被管理主機上運行。(注意:腳本路徑須要使用相對路徑)
# ansible-doc -s script # vim abc.sh #在本地編寫一個abc的腳本 #!/bin/bash echo "hello ansible from script"> /opt/script.txt # chmod +x abc.sh #賦予執行權限 # ansible webserver -m script -a 'abc.sh' #將腳本複製到被管理主機上運行 # ansible webserver -a 'cat /opt/script.txt' #查看腳本信息
12.setup模塊
Ansible中的setup模塊主要收集、查看被管理主機的facts(facts是Ansible採集被管理主機設備信息的一個功能)。
# ansible webserver -m setup #收集信息