ansible批量采集、批量互信、批量復制、分發文件


 

前言

正文

一、先說一下用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

 


免責聲明!

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



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