ansible自动化运维工具

     Ansible是一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误。Ansible是基于Python开发,可以对其二次开发;Ansible具有丰富的内置模块,通过本身集成的模块实现各种管理任务;无客户端模式,底层通过SSH通信。

    一.  如何使用Ansible实现自动化运维

           1. CMDB方式: 通过CMDB直接下发指令调用ansible工具集完成

            2. Public/private方式:以API调用方式运行

            3. Ad-Hoc命令集:直接通过Ad-Hoc命令集调用Ansible工具集来完成任务

            4. Playbooks:预先编写好Ansible Playbooks。任务脚本,编排定义Ansible任务及的配置文件,由Ansible按序依次执行,通常是JSON格式的YML文件。

   二. Ansible工具集

        Ansible工具集包含Inventory、Modules、Plugins和API。

        Inventory:Ansible管理主机清单,用来管理设备列表,可以通过分组实现,对组的调用直接影响组内所有的主机。

        Modules:Ansible执行命令功能模块,多数为内置的核心模块,也可自定义

        Plugins:模块功能的补充,各种插件,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不太常用

        API:应用程序编程接口

  三. Ansile的配置

        1. Ansile的安装

            Ansible的管理端只能是Linux,如Redhat、Debian、CentOS。可以通过yum安装

            安装epel源: yum install -y epel-release 
           安装ansible: yum install ansible -y
           查看ansible版本:ansible --version 

          

         ansible的程序机构

         

       2. 配置主机清单

         vim /etc/ansible/hosts

         

      3.  设置SSH无密码登录

          Ansible通过SSH对设备进行管理,而SSH包含两种认证方式:一种是通过密码认证,另一种是通过密钥对验证。前者必须和系统交互,而后者是免交互登录。

         ssh-keygen -t rsa

         

         4.配置秘钥对验证

         ssh-copy-id -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /root/.ssh/id_rsa.pub root@192.168.146.128

         ssh-copy-id -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /root/.ssh/id_rsa.pub root@192.168.146.5

          

         5. 免交互代理

      ssh-agent bash

     ssh-add

   

6. 通过Ansible对设备进行管理

    Inventory是Ansible管理主机信息的配置文件,相当于系统Hosts文件的功能,默认存放在/etc/ansible/hosts。在hosts文件中,通过分组来组织设备,Ansible通过Inventory来定义主机和分组,通过在ansible命令中使用选项-i或--inventory-file来指定Inventory。(注:使用默认的Inventory文件(/etc/ansible/hosts),也可以不指定Inventory文件)

    ansible 192.168.146.128 -m command -a "df -h"

    

    出现报错,解决办法:

    修改配置文件 /etc/ansible/ansible.cfg,让host_key_checking=False这行生效,实现跳过 ssh 首次连接提示验证部分。

    

    再次执行 ansible 192.168.146.128 -m command -a "df -h"

    

    ansible mySQL -m ping

    

    7. Ansible命令

      1)ansible

        一次性使用:ansible [options]

 

可用选项如下:

 

  • -v(--verbose):输出详细的执行过程信息,可以得到执行过程所有信息;

  • -i PATH(--inventory=PATH):指定inventory信息,默认为/etc/ansible/hosts;

  • -f NUM(--forks=NUM):并发线程数,默认为5个线程;

  • --private-key=PRIVATE_KEY_FILE:指定密钥文件;

  • -m NAME,--module-name=NAME:指定执行使用的模块;

  • -M DIRECTORY(--module-path=DIRECTORY) :指定模块存放路径,默认为/usr/share/ansible;

  • -a ARGUMENTS(--args=ARGUMENTS):指定模块参数;

  • -u USERNAME(--user=USERNAME):指定远程主机以USERNAME运行命令;

  • -l subset(--limit=SUBSET):限制运行主机;

 

       (1)检查所有主机是否存活

      ansible all -f 5 -m ping

      

 

       (2)列出mySQL组和web组所有的主机列表,执行命令如下

 

     ansible mySQL --list

     

      Ansible的返回结果非常友好,一般会用三种颜色来表示执行结果:

 

  • 红色:表示执行过程出现异常;

  • 橘黄颜色:表示命令执行后目标有状态变化;

  • 绿色:表示执行成功且没有目标机器做修改。

     2)ansible-doc

          ansible-doc用来查询ansible模块文档的说明,类似于man命令,针对每个模块都有详细的用法说明及应用案例介绍。

          ansible-doc [options] [modules...]

          列出支持的模块:ansible-doc -l

          查询ping模块的详细信息: ansible-doc ping

    3)ansible-playbook

         Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux中的sh或source命令,用来执行系列任务。其工作机制:通过读取预先编写好的playbook文件实现集中处理任务。Ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码,命令使用方式如下:

       ansible-playbook playbook.yml

   4)ansible-console

        Ansible-console是Ansible为用户提供的一款交互式工具,类似于Windows的cmd或者是Linux中shell。用户可以在ansible-console虚拟出来的终端上像shell一样使用Ansible内置的各种命令,这为习惯于使用shell交互式方式的用户提供了良好的使用体验.

       

 

posted @ 2020-03-15 16:37  出水芙蓉·薇薇  阅读(311)  评论(0编辑  收藏  举报