ansible安装部署和配置、常用模块整理
今天心情不錯~~~~第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模塊實踐 ????????
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,但不影響目錄的掛載
小伙伴們可以關注我的微信公眾號:linux運維菜鳥之旅
關注“中國電信天津網廳”公眾號,首次綁定可免費領2G流量,為你的學習提供流量!?
轉載于:https://blog.51cto.com/13055758/2067713
總結
以上是生活随笔為你收集整理的ansible安装部署和配置、常用模块整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谈谈前端产品质量控制
- 下一篇: php解压缩