前言
正文
一、先說一下用ansible批量采集機器信息的實現辦法:
1、先把要采集的機器信息的IP添加到主節點機器的/etc/ansible/hosts里面;
2、在/etc/ansible/hosts里面添加想要登陸的密碼和賬號:
[test]
192.168.192.77
192.168.192.78
192.168.192.79
[test:vars]
ansible_ssh_user="root" —這個是登陸機器的賬號
ansible_ssh_pass="123456" --這個是登陸機器的密碼
可以嘗試一下:ansible test -m ping 發現能夠ping通[test]下的所有機器,ping通效果下:
如果實現以上步驟,接下來就可以用ansible的各大模塊批量采集機器的信息;
二、用ansible對機器進行批量互信:
1、做一個明文登陸,分發ssh-key到集群的所有機器,做一個免密登陸:ansible-playbook ssh-copy.yml
ansible 批量分發yml腳本文件,寫一個ssh-copy.yml腳本;
然后用ansible-playbook ssh-copy.yml批量分發出去
ssh-copy.yml腳本代碼如下:(一定要嚴格按照如下格式)
--- - hosts:test remote_user: root tasks: - authorized_key: user: root key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
2、如果出現報錯:{"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."}
解決辦法:
修改/etc/ansible/ansible.cfg下的:host_key_checking = False
(1)在/etc/ansible路徑下寫一個ssh-copy.yml,內容如下:
--- - hosts: xiaoli remote_user: root tasks: - authorized_key: user: root key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
(2)執行anible-playbook ssh-copy.yml;批量分發.ssh文件;
三、ansible批量復制、分發文件;ansible有自帶的兩個模塊特別好用,一個是copy模塊、一個是fetch模塊,前者是將本機的文件批量分發出去的模塊,后者是批量將其他機器上的文件拷貝回本機的模塊;下面是工作中常用的批量復制、分發文件常用命令:
ansible批量分發文件 ansible all -m copy -a "src=/data/cloud/deploy/src/scripts/use_megacli.py dest=/tmp/use_megacli.py" 批量執行該shell腳本 ansible all -m shell -a “sudo /tmp/excute_megacli.sh" 批量執行python腳本 ansible all -m command -a "python /tmp/use_megacli.py" 批量拷貝文件到本機/tmp/目錄下 ansible all -m fetch -a "src=/tmp/raid_info.txt dest=/tmp/"
總結:ansible常用命令
ansible all -m setup -a "filter=ansible_lsb" 查所有機器的版本型號
ansible_all_ipv4_addresses" 僅顯示ipv4的信息
ansible_devices" 僅顯示磁盤設備信息
ansible_distribution:顯示是什么系統,例:centos,suse等
ansible_distribution_major_version:顯示是系統主版本
ansible_distribution_version:僅顯示系統版本
ansible_machine:顯示系統類型,例:32位,還是64位
ansible_eth0:僅顯示eth0的信息
ansible_hostname:僅顯示主機名
ansible_kernel:僅顯示內核版本
ansible_lvm:顯示lvm相關信息
ansible_memtotal_mb:顯示系統總內存
ansible_memfree_mb:顯示可用系統內存
ansible_memory_mb:詳細顯示內存情況
ansible_swaptotal_mb:顯示總的swap內存
ansible_swapfree_mb:顯示swap內存的可用內存
ansible_mounts:顯示系統磁盤掛載情況
ansible_processor:顯示cpu個數(具體顯示每個cpu的型號)
ansible_processor_vcpus:顯示cpu個數(只顯示總的個數)
ansible_python_version:顯示python版本
參考資料
參考網站:
https://blog.csdn.net/pushiqiang/article/details/78249665