在自動化運維的過程當中,咱們經常會經過命令行的形式使用Ansible模塊,ansible自帶了259各模塊,咱們能夠經過一些命令來查看ansible中所含的模塊,也能夠查看單一模塊的信息。下面,我就爲你們介紹一些經常使用的模塊。
關於ansible的部署安裝請參考:
部署自動化運維服務——Ansiblemysql
ansible-doc-l //顯示全部自帶模塊 ansible-doc -s 「模塊名稱」 //查看具體模塊的信息,使用‘q’退出介紹
Ah-Hoc經常使用可選項以下:web
command命令用於系統命令,不如ping、tail、date等命令,接下來我就以date、tail爲例,介紹他的使用方法,接下來的全部操做中,都會使用「web「分類。sql
ansible web -m command -a 'date' //-a後的參數需使用單引號 ansible web -m command -a 'tail -1 /etc/passwd'
Ansible中的cron模塊用於定義計劃性任務。其中有兩種狀態(state):present表示添加(默認使用,可省略),absent表示移除。shell
ansible-doc -s cron //查看模塊信息 ansible web -m cron -a 'minute="*/1" job="/bin/echo test" name="test cron job"' //每分鐘執行一次輸出test,name的名稱能夠自定義, ansible web -a 'crontab -l' //計劃性任務,command爲默認模塊,-m可省略
ansible web -m cron -a 'name="test cron job" state=absent' //在建立時所使用的名稱,取消是也要相對應,如果在建立時爲設定名稱,使用name=None便可
ping模塊用來測試指定主機的聯通性vim
ansible web -m ping
user模塊用於建立新用戶和更改、刪除已存在的用戶。其中name選項用於指明建立的用戶名稱bash
由於ansible user的passwd參數須要接收加密的值,因此須要利用openssl命令來生成密碼,採用md5加密。併發
echo ansible | openssl passwd -1 -stdin //此處爲「一」,不是「L」,明文爲ansible
ansible web -m user -a 'name=zhang password="$1$zF5aYItH$MKXWT.NfH8kOV6OH3Y/Tp0"' -o
ssh 172.16.10.30 -l zhang //ssh遠程登錄
ansible web -m user -a 'name="zhang" state=absent'
group模塊用於對用戶組管理運維
ansible web -m group -a 'name=mysql gid=306 system=yes' //新建mysql組,gid=306 ansible web -m user -a 'name=lisi uid=306 system=yes group=mysql' //新建用戶lisi,uid=306,並加入到mysql組
copy模塊用於實現文件複製和批量下發文件。其中使用src來定義本地源文件路徑,使用dest定義被管理主機文件路徑,使用content則是經過指定信息內容來生成文件。注意,複製或者下發文件,必定時管理主機上有的文件,不要使用管理主機上不存在的文件或目錄ssh
批量下發文件時,能夠同時指定文件的屬組屬主,文件權限等屬性ide
ansible web -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=lisi group=mysql mode=600 backup=yes' -o ansible web -m shell -a 'md5sum /opt/fstab.bak' -o //驗證下發功能
ansible web -m copy -a 'content="hello word!" dest=/opt/a.txt' -o ansible web -m shell -a 'md5sum /opt/a.txt' -o
shell模塊可在被管理主機上運行命令,並支持風管道符等功能的複雜命令
ansible zhangsan -m shell -a 'echo abc123 | passwd --stdin zhangsan' //免交互建立已有用戶密碼
file模塊用來設置文件屬性,其中使用path指定文件路徑,使用src定義源文件路徑,使用name或dest來替換建立文件的符號連接
ansible web -m file -a 'owner=lisi group=mysql mode=644 path=/opt/a.txt' -o ansible web -m shell -a 'ls -l /opt/a.txt'
ansible web -m file -a 'path=/opt/fstab.link src=/etc/fstab state=link' -o //src後的目錄及文件都爲和管理主機上全部
ansible web -m file -a "path=/opt/a.txt state=absent" -o
ansible web -m file -a "path=/opt/test state=touch" -o //建立一個文件
yum模塊負責在被管理主機上安裝與卸載軟件包,可使用本地yum倉庫,或是在線yum源,若是選用本地yum倉庫,則需爲被管理主機搭建yum倉庫。如果使用在線,則直接安裝,本次測試採用在線安裝,不搭建本地yum倉庫。
ansible web -m yum -a 'name=httpd state=latest' -o //在被管主機上安裝最新版本httpd軟件 ansible web -m shell -a 'rpm -qa httpd' -o //查看軟件包安裝狀況
ansible web -m yum -a 'name=httpd state=absent' -o ansible web -m shell -a 'rpm -qa httpd' -o
service模塊用來控制管理服務的運行狀態,其中,使用enablesd表示是否開機自啓,取值爲true或false;使用name定義服務名稱;使用state指定服務狀態,分別取值startd、stoped、restarted。
ansible web -m service -a 'enabled=true name=httpd state=started' -o ansible web -m shell -a '/usr/bin/netstat -ntap | grep httpd' //查看服務啓動是否成功 ansible web -a 'systemctl status httpd' //查看服務狀態
script模塊能夠將本地腳本複製到被管理主機上進行運行。注意,使用相對路徑來指定腳本
cd /opt vim test.sh #!/bin/bash echo this is ansible test > /opt/ansible.txt chmod +x test.sh
ansible web -m script -a 'test.sh' ansible web -m shell -a '/usr/bin/cat /opt/ansible.txt'
setup模塊收集、查看被管主機的facts(facts是ansible採集被管理主機設備信息的一個功能)。每一個被管理主機在接收並運行管理命令以前。都會將本身的相關信息(操做系統、IP地址等)發送給控制主機。
ansible web -m setup //內容特別多就不貼圖了