美文网首页
ansbile的安装与使用

ansbile的安装与使用

作者: sknfie | 来源:发表于2021-04-02 10:33 被阅读0次

    概述

    Ansible 是一个基于Python开发的自动化运维管理工具,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、部署、运行命令等功能。

    架构

    Ansible架构

    Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架、主要包括:
    (1)connection plugins:连接插件,负责和被监控端实现通信;
    (2)host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
    (3)各种模块核心模块、command模块、自定义模块;
    (4)借助于插件完成记录日志邮件等功能;
    (5)playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

    Ansible 安装要求及步骤

    1. 系统centos7以上

    2. 服务器安装python2.6或者python2.7

    3. 安装epel源

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    yum clean all //安装完epel源清除一下缓存
    yum install ansible -y //安装ansible
    

    4. 配置免密

    ssh-keygen -t rsa   #此处回车三次
    
    cd .ssh/
    ssh-copy-id root@192.168.2.134   #设置免密的ip,password后面写的是密码
    

    5. 验证是否免密成功

    配置ip地址

    vim /etc/ansible/hosts #里面添加你做完免密的ip
    [web]  //[web]只是一个被调用的名字
    192.168.2.134 
    

    ping一下

    [root@ke-cloud ansible]# ansible web -m ping
    192.168.2.134 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": false, 
        "ping": "pong"
    }
    

    6. 非免密设置

    vi /etc/ansible/ansible.cfg
    host_key_checking = False
    

    使用

    • 常用参数
    -m:要执行的模块,默认为command
    -a:指定模块的参数
    -i:指定hosts文件路径,默认default=/etc/ansible/hosts
    
    -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置
    -b,--become:变成那个用户身份,不提示密码
    -k:提示输入ssh登录密码,当使用密码验证的时候用
    -s:sudo运行
    -U:sudo到哪个用户,默认为root
    -K:提示输入sudo密码,当不是NOPASSWD模式时使用
    -C:只是测试一下会改变什么内容,不会真正去执行
    -c:连接类型(default=smart)
    -f:fork多少进程并发处理,默认为5个
    -I:指定pattern,对已匹配的主机中再过滤一次
    -list-host:只打印有哪些主机会执行这个命令,不会实际执行
    -M:要执行的模块路径,默认为/usr/share/ansible
    -o:压缩输出,摘要输出
    --private-key:私钥路径
    -T:ssh连接超时时间,默认是10秒
    -t:日志输出到该目录,日志文件名以主机命名
    -v:显示详细日志
    
    • 常用
    ansible server1 -m setup   #产看指定主机server1上的facts变量信息
    ansible * -m setup   #查看指定的所有主机上的facts变量信息
    ansible-doc -l   #列出有哪些可用的模块,按q退出
    ansible-doc -l | wc -l   #列出有多少个可用的模块
    ansible-doc -l | grep user   #列出与user有关的模块
    ansible-doc user   #查看user模块的帮助文档,按q退出。也可以在最后一行输入/passwd,来过滤与passwd有关的内容
    ansible test -a 'df -h'  在test组执行df -h命令
    

    1.ping命令

    上面验证时已经用过ping命令,那么现在重新配置一下其他测试节点,把用户名和密码都配置上去。

    vim /etc/ansible/hosts
    
    [test]
    192.168.2.191
    192.168.2.192
    192.168.2.193
    
    [test:vars] 
    ansible_ssh_user="root"
    ansible_ssh_pass="123456"
    
    • 测试验证
    [root@ke-cloud ansible]# ansible test -m ping
    192.168.2.193 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": false, 
        "ping": "pong"
    }
    192.168.2.192 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": false, 
        "ping": "pong"
    }
    192.168.2.191 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": false, 
        "ping": "pong"
    }
    
    • 查所有机器的版本型号
    [root@ke-cloud ansible]# ansible test -m setup -a "filter=ansible_lsb"
    192.168.2.192 | SUCCESS => {
        "ansible_facts": {
            "ansible_lsb": {}, 
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": false
    }
    192.168.2.191 | SUCCESS => {
        "ansible_facts": {
            "ansible_lsb": {}, 
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": false
    }
    192.168.2.193 | SUCCESS => {
        "ansible_facts": {
            "ansible_lsb": {}, 
            "discovered_interpreter_python": "/usr/bin/python"
        }, 
        "changed": false
    }
    
    • 类似常用命令filter
    ansible test -m setup -a "filter=ansible_all_ipv4_addresses" //仅显示ipv4的信息
    ansible test -m setup -a "filter=ansible_devices" //仅显示磁盘设备信息
    ansible test -m setup -a "filter=ansible_distribution" //显示是什么系统,例:centos,suse等
    ansible test -m setup -a "filter=ansible_distribution_major_version" //显示是系统主版本
    ansible test -m setup -a "filter=ansible_machine" //显示系统类型,例:32位,还是64位
    ansible test -m setup -a "filter=ansible_eth0" //仅显示eth0的信息
    ansible test -m setup -a "filter=ansible_hostname" //仅显示主机名
    ansible test -m setup -a "filter=ansible_kernel" //仅显示内核版本
    ansible test -m setup -a "filter=ansible_lvm" //显示lvm相关信息
    ansible test -m setup -a "filter=ansible_memtotal_mb" //显示系统总内存
    ansible test -m setup -a "filter=ansible_memfree_mb" //显示可用系统内存
    ansible test -m setup -a "filter=ansible_memory_mb" //详细显示内存情况
    ansible test -m setup -a "filter=ansible_swaptotal_mb" //显示总的swap内存
    ansible test -m setup -a "filter=ansible_swapfree_mb" //显示swap内存的可用内存
    ansible test -m setup -a "filter=ansible_mounts" //显示系统磁盘挂载情况
    ansible test -m setup -a "filter=ansible_processor" //显示cpu个数(具体显示每个cpu的型号)
    ansible test -m setup -a "filter=ansible_processor_vcpus" //显示cpu个数(只显示总的个数)
    ansible test -m setup -a "filter=ansible_python_version" //显示python版本
    

    1. shell命令

    • 采集内存
    [root@ke-cloud ansible]# ansible web -m shell -a "free -h"
    192.168.2.134 | CHANGED | rc=0 >>
                  total        used        free      shared  buff/cache   available
    Mem:           7.6G        428M        6.6G        8.8M        647M        7.0G
    Swap:            0B          0B          0B
    

    2. 脚本

    • 创建脚本
    vi net.sh
    #!/bin/bash
    date
    hostname
    
    • 执行脚本
    [root@ke-cloud ansible]# ansible web -m script -a "./net.sh"
    192.168.2.134 | CHANGED => {
        "changed": true, 
        "rc": 0, 
        "stderr": "Shared connection to 192.168.2.134 closed.\r\n", 
        "stderr_lines": [
            "Shared connection to 192.168.2.134 closed."
        ], 
        "stdout": "Tue Mar 30 04:19:26 EDT 2021\r\ncentos7_9-mod\r\n", 
        "stdout_lines": [
            "Tue Mar 30 04:19:26 EDT 2021", 
            "centos7_9-mod"
        ]
    }
    

    相关文章

      网友评论

          本文标题:ansbile的安装与使用

          本文链接:https://www.haomeiwen.com/subject/gpdghltx.html