zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    习题四 答案
    习题五 答案
    习题三 答案
    习题二 答案
    习题一 答案
    mysqldump 备份
    centos mysql 数据迁移
    常用操作命令
    mysql 日期处理
    thinkphp3.2.3 使用配置
  • 原文地址:https://www.cnblogs.com/haoxinchen/p/9664426.html
Copyright © 2011-2022 走看看