Linux下的自动化运维ansible工具

什么是自动化运维

    随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分。面对越来越复杂的业务,面对越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷、安全稳定地持续保障,这种模式中的保障因素就是IT运维(其他因素是更加优越的IT架构等)。从初期的几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,那么标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被人们所重视。其中,自动化最开始作为代替人工操作为出发点的诉求被广泛研究和应用。
    IT运维从诞生发展至今,自动化作为其重要属性之一已经不仅仅只是代替人工操作,更重要的是深层探知和全局分析,关注的是在当前条件下如何实现性能与服务最优化,同时保障投资收益最大化。自动化对IT运维的影响,已经不仅仅是人与设备之间的关系,已经发展到了面向客户服务驱动IT运维决策的层面,IT运维团队的构成,也从各级技术人员占大多数发展到业务人员甚至用户占大多数的局面。
    因此,IT运维自动化是一组将静态的设备结构转化为根据IT服务需求动态弹性响应的策略,目的就是实现IT运维的质量,降低成本。可以说自动化一定是IT运维最高层面的重要属性之一,但不是全部。

什么是ansible

    ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。可以实现多台服务器的配置,在多台服务器上同时执行统一个命令。

ansible的框架
这里写图片描述


> host inventory:定义被ansible操作的主机列表
> connection plugins:负责监控被操作主机与被操作主机之间通信
> playbook:定义ansible的任务
> plugins:拓展模块,主要用来完成日志,邮件等功能
> 核心模块,自定义模块:主要用于执行命令

下载并安装ansible


 1. 下载ansible
    [root@www ~]# wget http://releases.ansible.com/ansible/ansible-2.3.2.0-0.4.rc4.tar.gz
 2. 安装ansible
    [root@www ~]# tar -xzf ansible-2.3.2.0-0.4.rc4.tar.gz
    [root@www ~]# cd ansible-2.3.2.0
    [root@www ~]# python setup.py build
    [root@www ~]# python setup.py install
 3. 装备配置文件
    [root@www ~]# mkdir /etc/ansible
    [root@www ~]# cp -r examples/* /etc/ansible/ 

hosts配置文件

格式:
    [webservers]                 //主机组名字
        alpha.example.org
        beta.example.org
        192.168.1.100
        192.168.1.110

ansible命令


 1. 格式:
    ansible <host-pattern> [-f forks] [-m module_name] [-a args]
 2. 详细参数:
    host-pattern:配置文件定义的主机群名
    -f gorks:级别,默认为5
    -m:指定要使用的核心模块,默认为command模块
    -a:指定模块参数
 3. 替他命令:
    ansible -l:用来查看ansible所支持的模块
    ansible-doc -s module_name:用来查看某一个模块所支持的参数

使用ansible命令实现远程shell执行

host文件
这里写图片描述

目标机
这里写图片描述

ansible主机
[root@www ~]# ssh-keygen
[root@www ~]# ssh-copy-id [email protected]
这里写图片描述

[root@www ~]# ansible install_httpd -m shell -a “yum -y install httpd”
这里写图片描述

目标机
这里写图片描述

使用yaml语法定义多任务

 1. 文件定义格式:
     Task_set.yaml           (文件后缀.yaml)
 2. 文本内容格式:
     - hosts:hosts_name              //定义在hosts文件中的主机名
       remote_user: root               //运行此次任务的用户
       tasks:                          ///应以任务
         - name:taks_name       //任务名称
           moudule_name:args[1]=? args[2]=? .... //参数,即命令中-a 对应的选项
           ignore_errors:True   //忽略错误

           notify:               //若没有改变不会发生以下事件
             - handerls_name
      handlers:                 //实现在变化发生完成后一次性地执行指定操作,如:改变配置文件后从新启动服务。
        - name: handerls_name
          module:args
    *注*:一个主机集可以对应多个任务,一个.yaml文件可以含有多个主机集 
 3. 文本内容运行命令:
    [root@www ~]#  ansible-playbook file.yaml

测试
这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/kairui123/article/details/76182096