ansible安裝部署和配置、常用模塊整理
會分為兩部分發出去,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模塊實踐
1)copy參數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),不支持遞歸復制
2)copy參數backup=yes
ansible george -m copy -a "src=/etc/hosts dest=/etc/ backup=yes"
# 分發文件時,如果與遠程主機下hosts文件內容不一致,那麽會備份源文件為"hosts.5714...以時間戳命名 ", 在修改hosts源文件的內容
#不輸入默認backup=no,就是不備份,會覆蓋源文件
3)copy參數mode、owner、group
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,那麽遠程主機同名文件不會做改變
5)copy參數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模塊實踐 #修改文件或目錄屬性信息,用於創建文件或目錄,也可以用mode、owner、group定義文件或目錄的權限信息
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安裝部署和配置、常用模塊整理