Ansible經常使用Ad-Hoc命令介紹

在自動化運維的過程當中,咱們經常會經過命令行的形式使用Ansible模塊,ansible自帶了259各模塊,咱們能夠經過一些命令來查看ansible中所含的模塊,也能夠查看單一模塊的信息。下面,我就爲你們介紹一些經常使用的模塊。
關於ansible的部署安裝請參考:
部署自動化運維服務——Ansiblemysql

ansible-doc-l                          //顯示全部自帶模塊
ansible-doc -s 「模塊名稱」      //查看具體模塊的信息,使用‘q’退出介紹

Ad-Hoc命令格式

Ah-Hoc經常使用可選項以下:web

  • v:--verbose:輸出更詳細的執行過程信息,-vvv可獲得執行過程全部信息
  • i:PATH,--inventory=PATH:指定inventory信息,默認/etc/absible/hosts
  • f:NUM,--forks=NUM:併發線程數,默認5個線程
  • m:NAME,--module-name=NAME:指定執行使用的模塊
  • M:DIRECTORY,--module-path=DIRECTORY:指定模塊存放路徑,默認/usr/share/ansible,也能夠經過ANSIBLE_LIBRARY設定默認路徑
  • a:'ARGUMENTS',--args='ARGUMENTS':模塊參數
  • k:--ask-pass SSH:認證密碼
  • K:--ask-sudo-pass sudo:用戶的密碼(--sudo時使用)
  • o:--one-line:標準輸出至一行
  • s:--sudo:至關於Linux系統下的sudo命令
  • c:CONNECTION,--connection=CONNECTION:指定鏈接方式,可用選項paramiko(SSH)、ssh、local,local方式經常使用於crontab和kickstarts
  • --list-hosts:列出符合條件的主機列表,不執行任何命令

aommand模塊

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經常使用Ad-Hoc命令介紹

cron模塊

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經常使用Ad-Hoc命令介紹

移除計劃性任務

ansible web -m cron -a 'name="test cron job" state=absent'   
//在建立時所使用的名稱,取消是也要相對應,如果在建立時爲設定名稱,使用name=None便可

Ansible經常使用Ad-Hoc命令介紹

ping模塊

ping模塊用來測試指定主機的聯通性vim

ansible web -m ping

Ansible經常使用Ad-Hoc命令介紹

user模塊

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經常使用Ad-Hoc命令介紹

刪除用戶

ansible web -m user -a 'name="zhang" state=absent'

group模塊

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模塊

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經常使用Ad-Hoc命令介紹

寫入指定內容到文件

ansible web -m copy -a 'content="hello word!" dest=/opt/a.txt' -o
ansible web -m shell -a 'md5sum /opt/a.txt' -o

shell模塊

shell模塊可在被管理主機上運行命令,並支持風管道符等功能的複雜命令

ansible zhangsan -m shell -a 'echo abc123 | passwd --stdin zhangsan'   //免交互建立已有用戶密碼

file模塊

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經常使用Ad-Hoc命令介紹

設置連接文件

ansible web -m file -a 'path=/opt/fstab.link src=/etc/fstab state=link' -o    //src後的目錄及文件都爲和管理主機上全部

Ansible經常使用Ad-Hoc命令介紹

刪除文件

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倉庫。如果使用在線,則直接安裝,本次測試採用在線安裝,不搭建本地yum倉庫。

安裝軟件包

ansible web -m yum -a 'name=httpd state=latest' -o   //在被管主機上安裝最新版本httpd軟件
ansible web -m shell -a 'rpm -qa httpd' -o           //查看軟件包安裝狀況

Ansible經常使用Ad-Hoc命令介紹

卸載軟件包

ansible web -m yum -a 'name=httpd state=absent' -o
ansible web -m shell -a 'rpm -qa httpd' -o

service模塊

service模塊用來控制管理服務的運行狀態,其中,使用enablesd表示是否開機自啓,取值爲true或false;使用name定義服務名稱;使用state指定服務狀態,分別取值startd、stoped、restarted。

開啓httpd服務

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'                                                         //查看服務狀態

Ansible經常使用Ad-Hoc命令介紹

script模塊

script模塊能夠將本地腳本複製到被管理主機上進行運行。注意,使用相對路徑來指定腳本

編寫簡單的shell腳本

cd /opt
vim test.sh
#!/bin/bash
echo this is ansible test > /opt/ansible.txt
chmod +x test.sh

下發shell腳本執行

ansible web -m script -a 'test.sh'
ansible web -m shell -a '/usr/bin/cat /opt/ansible.txt'

Ansible經常使用Ad-Hoc命令介紹

setup模塊

setup模塊收集、查看被管主機的facts(facts是ansible採集被管理主機設備信息的一個功能)。每一個被管理主機在接收並運行管理命令以前。都會將本身的相關信息(操做系統、IP地址等)發送給控制主機。

ansible web -m setup     //內容特別多就不貼圖了
相關文章
相關標籤/搜索