ansible一些基本操作


一、介紹

特性

(1)、no agents:不需要在被管控主機上安裝任何客戶端;

(2)、no server:無服務器端,使用時直接運行命令即可;

(3)、modules in any languages:基於模塊工作,可使用任意語言開發模塊;

(4)、yaml,not code:使用yaml語言定制劇本playbook;

(5)、ssh by default:基於SSH工作;

(6)、strong multi-tier solution:可實現多級指揮。

優點

(1)、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可;

(2)、批量任務執行可以寫成腳本,而且不用分發到遠程就可以執行;

(3)、使用python編寫,維護更簡單,ruby語法過於復雜;

(4)、支持sudo。

 

二、安裝

因為ansible已經被redhat收購,所以可以直接用yum安裝,先通過yum list |grep ansible看一下yum源,然后安裝

yum install ansible ansible-doc -y

安裝好之后,通過ssh-keygen來創建密鑰,把生成的公鑰放到對應目標機器對應的用戶下面。

修改ansible配置文件,vim /etc/ansible/hosts,添加一個組(相當於是進行分組操作,如web、db組),組下面為對應機器ip或者主機名(需在/etc/hosts里面配置)

三、ansible遠程執行命令

ansible testhost -m command -a "hostname" 

PS:testhost 為定義的一個組(這個組下面所有機器都會執行),-m command 通過command這個模塊來操作,-a "hostname"為操作的命令,也可以用shell來代替command

shell模塊,還支持遠程執行命令並且帶管道

ansible testhost -m shell -a "cat /etc/passwd |wc -l"

 

四、ansible拷貝文件或目錄

ansible testhost -m copy -a "src=/etc/passwd dest=/tmp/ansible/1.txt owner=root group=root mode=0755"

PS:把文件分發到目標機器上面,如果目標機器不存在/tmp/ansible這個目錄,則分發失敗,如果存在則把passwd重命名為1.txt,如果dest=/tmp/ansible,則分發之后,文件名不變

ansible testhost -m copy -a "src=/etc/ansible dest=/tmp/ansible owner=root group=root mode=0755"

PS:把目錄分發到目標機器上面,不管dest里面定義的ansible目錄是否存在,都會把原目錄放在該目錄下面,相當於/tmp/ansible/ansible

 

五、ansible遠程執行腳本

1.把腳本分發到各個機器上面去

ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

2.批量執行該shell腳本

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

 

六、ansible管理任務計划

1.添加cron計划

ansible testhost -m cron -a "name='test cron' job='/bin/touch /tmp/1.txt' minute=10 month=12"

PS: 表示在crontab里面添加一條記錄為:

#Ansible:test cron
10 * * 12 * /bin/touch /tmp/1.txt

minute表示分鍾,hour表示小時,day表示日期,month表示月份,weekday表示周,如果沒寫則默認為 *

2.刪除cron計划

ansible testhost -m cron -a "name='test cron' state=absent"

PS: 只能刪除該crontab,不能修改,也不能自己crontab -e去修改,不然ansible會操作不了該crontab

 

七、ansible安裝、刪除rpm包等管理

ansible testhost -m yum -a "name=nginx state=installed"

PS: 相當於yum intall nginx -y,state默認為installed,如果state=removed表示卸載該rpm包

ansible testhost -m service -a "name=nginx state=started enabled=yes"

PS:啟動nginx服務,state可以為started/restarted/stopped/reloaded,enabled為yes表示開機啟動

 

8、ansible-doc

1. 列出所有的模塊

ansible-doc -l

2.查看指定模塊的文檔

ansible-doc modulename

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM