批量管理主機工具--ansible
阿新 • • 發佈:2018-01-30
文件 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/0View 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/LinuxView Code
批量管理主機工具--ansible