1. 程式人生 > >批量管理主機工具--ansible

批量管理主機工具--ansible

文件 agentless none 線程數 style color user 結果 highlight

  ansible是Python語言(Python2)編寫的一款批量管理linux主機的工具,適用於數十臺、百臺機器的管理,無需安裝agent,非常方便。

1 主要依賴的Python模塊

  paramiko、PyYAML、jinjia2

2 ansible特性

  部署簡單:agentless

  主從模式

  默認使用ssh

  支持自定義模塊

  支持各種編程語言

  支持playbook

  註意:ansible是基於各種模塊來完成任務的

3 安裝

在epel源中提供

yum install -y ansible

4 配置文件

/etc/ansible/ansible.cfg
Invertary: /etc/ansible/hosts

 /etc/ansible/hosts:配置主機列表:

[cent]
# 支持正則
10.129.206.[96:97] 10.129.205.151 [rh] 10.129.206.98

5 配置公鑰免密登錄

在安裝ansible的機器上執行ssh-keygen -t rsa;接著分別拷貝公鑰到各個主機(需要輸入這些主機密碼)。

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

6 查看模塊幫助

ansible-doc -l
ansible-doc -s MODULE

7 用法

# ansible <host-pattern> -f [fork] -m [module] -a [args]

# host-pattern:     /etc/ansible/hosts 配置文件中配置的 [主機或者主機組] 
# -f fork:              並發線程數數 
# -m module:        使用哪個模塊
# -a args:             使用模塊所支持的參數,如果是[command]模塊就是接命令。  

以command模塊為例:

# ansible cent -f 3 -m command -a ‘df -h‘

得到的結果:

技術分享圖片
[@tc_57_161 ~]# ansible cent -f 3 -m command -a df -h
10.129.206.97 | SUCCESS | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.9G  4.5G  4.0G  54% /
tmpfs           499M     0  499M   0% /dev/shm
/dev/sda1       190M   27M  154M  15% /boot

10.129.206.96 | SUCCESS | rc=0 >>
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   27G  3.3G   24G  13% /
devtmpfs                 897M     0  897M   0% /dev
tmpfs                    912M     0  912M   0% /dev/shm
tmpfs                    912M  9.2M  903M   1% /run
tmpfs                    912M     0  912M   0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M  18% /boot
tmpfs                    183M  4.0K  183M   1% /run/user/42
tmpfs                    183M   40K  183M   1% /run/user/1000
/dev/sr0                 8.1G  8.1G     0 100% /run/media/odin/CentOS 7 x86_64
tmpfs                    183M     0  183M   0% /run/user/0

10.129.205.151 | SUCCESS | rc=0 >>
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/cl-root   17G  6.8G   11G  40% /
devtmpfs             897M     0  897M   0% /dev
tmpfs                912M   84K  912M   1% /dev/shm
tmpfs                912M   17M  895M   2% /run
tmpfs                912M     0  912M   0% /sys/fs/cgroup
/dev/sda1           1014M  173M  842M  18% /boot
tmpfs                183M   16K  183M   1% /run/user/42
tmpfs                183M     0  183M   0% /run/user/0
View Code

還可以以all代表對所有主機;如果不指定模塊,默認使用command模塊。

# ansible all -a ‘uname -a‘  

返回的結果:

技術分享圖片
[@tc_57_161 ~]# ansible all -a uname -a
10.129.206.97 | SUCCESS | rc=0 >>
Linux liuyouyuan 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

10.129.206.96 | SUCCESS | rc=0 >>
Linux liuyouyuan 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

10.129.206.98 | SUCCESS | rc=0 >>
Linux liuyouyuan 2.6.32-696.3.1.el6.x86_64 #1 SMP Tue May 30 19:52:55 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

10.129.205.151 | SUCCESS | rc=0 >>
Linux liuyouyuan 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
View Code

 

  

批量管理主機工具--ansible