1. 程式人生 > >ansible安裝部署和配置、常用模塊整理

ansible安裝部署和配置、常用模塊整理

自動化運維工具 輸出信息 pat 秘鑰 img 系統命令 hair 作用 環境

今天心情不錯~~~~第25個生日了,又遇昨晚百年難得一見的藍月亮,所以昨晚連夜整理了文檔,

會分為兩部分發出去,ansible批量化部署在工作中是非常實用,建議呢 整理大量常用模塊去練習



1.1.1 ansible軟件介紹

1. ansible是一個基於python開發的自動化運維工具!(saltstack

2. 其功能的實現是基礎SSH遠程連接服務的

3. ansible可以實現批量系統配置、批量軟件部署、批量文件拷貝、批量運行命令等功能

1.1.2 ansible軟件相關參考鏈接信息

http://docs.ansible.com/ansible/intro_installation.html

http://www.ansible.com.cn/

http://docs.ansible.com/modules_by_category.html

http://www.ansible.cn/docs/

1.1.3 ansible軟件特點

1. 不需要單獨安裝客戶端,基於ssh服務

2. 不需要安裝服務端

3. 需要依靠大量的模塊實現批量部署

4. 配置文件/etc/ansible/ansible.cfg

1.1.4 ansible軟件安裝部署和配置

PS:為了安全,盡量不要配置外網

首先保證:可以免秘鑰登錄被管理端

1. 管理端安裝軟件:

yum install ansible -y

2. 被管理端安裝軟件:

yum install libselinux-python -y

PS:如果關閉selinux,那麽被管理端可以不安裝(建議安裝)

3. ansible軟件管理配置文件

vim /etc/ansible/hosts #定義ansible可管理的主機

[george]

172.16.1.7

172.16.1.31

172.16.1.41

4. 進行ansible軟件批量管理:

ansible george -m command -a "uptime"

PS: 查看的是george主機組,模塊為command,的主機負載信息

george #主機組

-m #指定模塊參數(command為默認模塊,不寫也可以)

command #模塊名稱

-a #指定利用模塊執行的動作參數,-a後面的是要執行的命令

uptime #批量執行的命令

技術分享圖片

1.1.5 ansible軟件命令常用參數

-k :以交互方式輸入密碼,進行遠程管理

-a :指定應用模塊的相應參數信息

-m :指定應該什麽模塊(默認為command模塊)


1.1.6 ansible模塊總結

參考ansible官方http://docs.ansible.com/ansible/latest/modules_by_category.html

進入all modules中,使用google瀏覽器,ctrl+f根據查找模塊名查找對應信息

ansible執行命令後輸出信息中:

綠色——表示查詢,或者沒有發生任何改變

紅色——表示命令操作出現異常

屎×××——對遠程主機做了相應改動

粉色——對操作提出建議或忠告

ansible系統命令幫助文檔查看方法:

ansible-doc -l --- 列出所有可用的模塊信息

ansible-doc -s cron --- 查看指定模塊的參數信息

1. command模塊實踐:(默認模塊

ansible george -m command -a "ifconfig"

#批量顯示遠程主機的網卡信息

ansible george -m commadn -a "chair=/tmp touch kai.txt"

#批量切換到遠程主機的/tmp目錄下,創建kai.txt這個文件

ansible george -m command -a "creates=/tmp/kai touch /tmp/kai"

#批量判斷遠程主機/tmp下有沒有kai這個文件,如果有就skip,沒有就執行後面的命令

ansible george -m command -a "removes=/tmp/kai.txt touch /tmp/123.txt"

#批量判斷遠程主機/tmp下有沒有kai這個文件,如果有就執行後面的命令, 沒有就skip

ansible george -m command -a "ls -l"

#free_from(默認參數)可以輸入任何系統命令信息,但是不包含一些特殊環境變量和特殊符號信息,如:<>,|;&


2. ping模塊實踐

[root@m01 scripts]# ansible george -m ping

172.16.1.31 | SUCCESS => {

"changed": false,

"ping": "pong"

}

172.16.1.7 | SUCCESS => {

"changed": false,

"ping": "pong"

}

#返回pong,說明可以登錄SSH連接,這裏ping但不是測試網絡連通性的,用於驗證能否登錄SSH連接,在查 看是否滿足python的支持, 屬於system模塊

3.debug調試模塊實踐

[root@m01 scripts]# ansible george -m debug

172.16.1.31 | SUCCESS => {

"changed": false,

"msg": "Hello world!"

}

172.16.1.7 | SUCCESS => {

"changed": false,

"msg": "Hello world!"

}

#此模塊在執行過程中打印語句,對於調試變量或表達式非常有用,而不一定會停止播放。與“When:”指令 一起調試非常有用。

4. copy模塊實踐

1copy參數src

例: ansible george -m copy -a "src=/etc/hosts dest=/tmp/"

#將本機/etc/hosts文件復制到遠程主機的/tmp目錄下(如果/tmp下已有同名hosts,那麽會被覆蓋)

例: ansible george -m copy -a "src=/etc/hosts dest=/tmp/dir/"

#如果遠程主機沒有dir目錄,那麽會創建dir目錄

例: ansible george -m copy -a "src=/etc/hosts dest=/tmp/1/2/3/4/"

#但傳輸文件時,如果上級目錄不存在,則不會創 建,傳輸就無法成功

例: ansible george -m copy -a "src=/tmp dest=/tmp/1/2/3/4"

#傳輸目錄時,如果遠程主機目錄不存在,傳輸時可以創建多層目錄,

#如果傳輸的是目錄本身及下面內容,後面不要加/

例: ansible george -m copy -a "src=/tmp dest=/tmp/1/2/3/4"

#如果傳輸的是目錄下面的內容,後面必須加/

例: ansible george -m copy -a "remote_src=true src=/etc/hosts dest=/tmp/1/2/"

#批量操作遠程主機,對他們本機上的文件進行本地操作

#設置為true時(默認為flase),不支持遞歸復制

2copy參數backup=yes

ansible george -m copy -a "src=/etc/hosts dest=/etc/ backup=yes"

# 分發文件時,如果與遠程主機下hosts文件內容不一致,那麽會備份源文件為"hosts.5714...以時間戳命名 ", 在修改hosts源文件的內容

#不輸入默認backup=no,就是不備份,會覆蓋源文件

3copy參數modeownergroup

ansible george -m copy -a "src=/etc/hosts dest=/tmp/ mode=0600 owner=george group=george"

#改變文件的權限為0600,所有者和屬組為george


4 copy參數force

ansible george -m copy -a "src=/etc/hosts dest=/tmp/ force=yes"

#默認為forec=yes,如果和遠程主機信息不一致,會覆蓋

#如果force=no,那麽遠程主機同名文件不會做改變

5copy參數content

ansible george -m copy -a "content=123123 dest=/tmp/hosts"

#寫入信息到/tmp/ hosts中會把源內容覆蓋掉,謹慎操作,只能添加少量的信息

#添加多量的,可以用template模塊

5. shell模塊實踐

ansible george -m shell -a "hostname;hostname -i"

# 支持特殊符號,-a裏面可接多個名,用分號分割

測試:用shell執行一個腳本很麻煩的,用script執行

1)推送腳本過去,並授權

ansible george -m copy -a "src=/tmp/test.sh dest=/tmp mode=+x"

2)運行腳本

ansible george -m shell -a "/tmp/test.sh"

6. script模塊實踐

ansible george -m script -a "/server/scritps/keepalived.sh"

#將本地腳本中的信息,在遠程主機上執行

7. setup模塊實踐

ansible george -m setup

#顯示遠程主機的所有信息(後面加-v顯示詳細信息)

#提取IP、或架構信息等,X86來判斷主機架構,安裝合適軟件

ansible georhe -m setup -v

#主要用於解決一些錯誤:如遠程主機hang住了,ansible會輸出少量信息(最多-vvvv)

8. yum模塊實踐

ansible george -m yum -a "name=iotop state=installed"

#批量使用yum安裝軟件iotop

9. service模塊實踐

ansible george -m service -a "name=crond state=stopped enable=no" #stopped是2個p

#臨時停止crond服務,取消開機自啟動(相反:state=started enable=yes)

10.file模塊實踐 #修改文件或目錄屬性信息,用於創建文件或目錄,也可以用modeownergroup定義文件或目錄的權限信息

1)path參數

ansible george -m file "path=/tmp/ state=directory mode=0644"

#指定路徑,是dest,name的別名,作用一樣

2)state參數

ansible george -m file -a "dest=/opt/dir_01/ state=directory"

#創建目錄為dir_01

ansible george -m file -a "dest=/opt/file_01 state=touch"

#創建文件為file_01

ansible george -m file -a "dest=/opt/file_01 state=absent"

#刪除文件file_01

ansible george -m file -a "src=/opt/hosts dest=/opt/hosts_link state=link"

#創建符號鏈接,基於本機有源文件

11. cron模塊實踐 #定時任務模塊

* * * * * /bin/sh /server/scripts/test.sh &>/dev/null

minute # Minute when the job should run ( 0-59, *, */2, etc )

hour # Hour when the job should run ( 0-23, *, */2, etc )

day # Day of the month the job should run ( 1-31, *, */2, etc )

month # Month of the year the job should run ( 1-12, *, */2, etc )

weekday # Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )

job # 定義定時任務與要做什麽事

name # 給定時任務加一個備註,避免創建出多個重復的定時任務(根據定時任務備份判斷 是否生成一個新的定時任務)

stat #若設置為present,表示創建定時任務,若設置為absent,表示刪除指定定時任務

只能管理自己創建的定時任務,本來有的管理不了

disabled #disable=yes註釋掉定時任務(不生效),disable=no解除註釋定時任務(生效)

ansible george -m cron -a "name='backup servcie' minute=*/5 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'"

#創建定時任務

ansible george -m cron -a "name=`backup service` state=absent"

#刪除定時任務

ansible george -m cron -a "name=dancy01 minute=*/5 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' disabled=yes"

#註釋掉定時任務,反之取消註釋

12.mount模塊實踐

ansible george -m mount -a "state=mounted src=172.16.1.31:/data path=/data fstype=nfs"

src #要被掛載的目錄或文件

path #指定掛載點的路徑

fstype #指定掛載時的文件系統類型

opts #在掛載時,指定掛載參數信息

state #state=mounted,在fstab文件中的備份將被激活掛載或適當配置,如果指定mounted的掛載掛載點不存在,會創建

#state=unmounted,設備將被卸載不會改變fstab文件中的信息

#state=absent和state=present,只處理fatab,但不影響目錄的掛載






ansible安裝部署和配置、常用模塊整理