zoukankan      html  css  js  c++  java
  • 一、Ansible入门篇

    一、Ansible简介

    Ansible是一个自动化运维的工具
    基于python语言编写,因此机器需要具备python环境。
    通过ssh的连接方式进行自动化部署,ansible优先使用OpenSSH,在使用python模块里的paramiko作为SSH工具

    二、Ansible的优缺点

      优点:

    1.入门快速,简单上手
    2.基于Python语言
    3.无代理(基于ssh,无需安装客户端,如zabbix的客户端要安装agent)
    4.可读性强(采用YAML格式)

      缺点:

    1.对Windows系统的排斥(服务端无法安装在windows)
    2.运行效率较低(task任务是串行运行;多台设备同时运行一个task,有并发数限制)

    三、Ansible的安装

      安装的是基于Python2.7的Ansible

      在Ubuntu上的安装

    #1.增加PPA源,并安装Ansible
    sudo apt-get unpdate
    sudo apt-get install software-properties-common
    sudo apt-add-repository --yes --update ppa:ansible/ansible
    sudo apt-get install ansible
    
    #2.查看版本,结果无报错
    ansible --version

      在Centos7上的安装

    #1.安装EPEL扩展软件仓库
    sudo yum -y install epel-release
    
    #2.安装Ansible
    sudo yum -y install ansible
    
    #3. 检查ansible的版本和运行环境
    ansible --version

    四、Ansible的升级文档

    https://docs.ansible.com/ansible/2.7/porting_guides/porting_guides.html

      此文档为各个版本如何迁移到2.7版本,迁移有风险,操作需谨慎

    五、Ansible框架介绍

      5.1 框架图

      

       5.2 各组件功能

    ansible.cfg        #ansible的配置文件,包含各种Ansible全局性质的参数,可在不同项目下或者不同用户下创建一样的ansible.cfg文件,作为局部配置文件,检索顺序:局部-->全局
    inventory        #设备列表,当跑脚本时,需要告诉Ansible针对哪些设备或设备组
    variable        #变量
    module        #模块,通过其他语言编写而成,能实现某个特定的功能的工具,例如思科配置接口的模块,修改ip地址的模块等等
    Jinja2        #模板系统,Ansible可实现批量配置网络设备
    Role        #角色,一套文件夹,里面定义了例如变量,具体任务task。Role里面定义的内容可以实现某些特殊功能,而你在使用不通的脚本过程中可以导入Role来实现某一个功能。而不用重复写
    
    #以上的组件,会由以下的“客户”来使用
    Ad-hoc    #即插即用,简易模式,一条命令,一次使用
    playbook    #剧本,基于YAML文件格式书写,可以包含Ansible任意功能,无论是设备列表,变量,jinja2模板,条件循环,模块等等

      5.3 inventory介绍

                 默认路径是/etc/ansible/hosts文件,默认配置如下图,此hosts为全局文件,可根据不通用户或者不通项目设置局部文件,即在配件文件里指定ansible.cfg里的inventory=my_hosts

      关于定义主机(默认编辑/etc/ansible/hosts文件),一般有两种方式:

    #方式一:直接定义IP
    192.168.1.254
    
    
    #方式二:直接定义域名,此方法本机的dns服务器需要能解析出此域名对应的ip地址,或者在自己的/etc/hosts文件里添加本地域名解析
    pc1.test.com
    
    
    #方式二:定义特殊名称,前提dns服务器或者/etc/hosts文件没办法解析此自定义名称
    #书写格式:自定义名称[空格]ansible_host=[主机IP]
    如定义个R1
    R1 ansible_host=192.168.1.254

      示例:

    需求:
    定义一台网络交换机192.168.1.254主机名为SW1,属于network组,也属于cisco组
    定义一台pc,192.168.1.5,主机名PC1
    定义一台pc,192.168.1.6
    
    
    #实现:
    #步骤一:开启ansible检索inventory功能
    编辑/etc/ansible/ansible.cfg
    inventory      = /etc/ansible/hosts    #将注释#去掉
    
    #步骤二:编辑/etc/ansible/hosts文件
    PC1 ansible_host=192.168.1.5
    192.168.1.6
    
    [network]
    SW1 ansible_host=192.168.1.254
    
    [cisco]
    192.168.1.254
    
    :wq      #保存
    
    
    ps:关于组的分割,ansible是通过匹配[]来判断是否进入了下一个组,因此,未有分组的主机,只能放在组的上头

    六、Ansible简单实例1

      需求:测试主机是否存活(存活的意思是主机开了ssh端口)

      实现:ansible localhost -m ping

      

    #此处的ping模块,并非传统的ic'm'p ping原理,而是它尝试使用默认的设定去ssh登陆远端设备,如果登陆成功,就反馈:pong
    
    #ping模块的使用:
     https://docs.ansible.com/ansible/latest/modules/ping_module.html#ping-module

    七、Ansible简单实例2

      需求:执行一个linux命令,查看磁盘空间

      实现:ansible localhost -m command -a "df -h"

      

  • 相关阅读:
    40 +必不可少的前端Web开发备忘单
    web前端开发必读的HTML5的书籍
    Java String的内存机制
    使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
    CI(CodeIgniter)的"Disallowed Key Characters."异常处理
    开源软件许可协议简介
    读《考拉小巫的英语学习日记》有感
    vi的复制、粘贴、查找、删除等常用命令
    读《马云创业启示录》有感
    jQuery ajax 同步失效?
  • 原文地址:https://www.cnblogs.com/lisenlin/p/10620658.html
Copyright © 2011-2022 走看看