zoukankan      html  css  js  c++  java
  • Ansible介绍与安装

    Ansible介绍与安装

    介绍 Ansible

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

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

    Ansible架构图:

    ansible1

    ansible2

    Ansible 无需代理

    Ansible 围绕无代理架构构建。通常而言,Ansible 通过 OpenSSH 或 WinRM 连接它所管理的主机并且运行任务,方法通常是将称为 Ansible 模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在 Ansible 运行完其任务后,推送的所有模块都会被删除。

    Ansible 不需要批准使用任何特殊代理,然后再部署到受管主机上。由于没有代理,也不需要额外的自定义安全基础架构,

    Ansible 具有多个重要的优点:

    • 跨平台支持:Ansible 提供Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。
    • 人类可读的自动化:Ansible Playbook采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。
    • 完美描述应用:可以通过 Ansible Playbook进行每种更改,并描述和记录应用环境的每一个方面。
    • 轻松管理版本控制:Ansible Playbook和项目是纯文本。它们可以视作源代码,放在现有版本控制系统中。
    • 支持动态清单:可以从外部来源动态更新 Ansible 管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。
    • 编排可与其他系统轻松集成:能够利用环境中现有的 HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到 Ansible 工作流中。

    Ansible 方式

    Ansible 的设计宗旨是工具易用,自动化易写易读。所以在创建自动化时我们应追求简单化。

    Ansible 自动化语言围绕简单易读的声明性文本文件来构建。正确编写的 Ansible Playbook可以清楚地记录你的工作自动化。

    Ansible 是一种要求状态引擎。它通过表达你所希望系统处于何种状态来解决如何自动化IT部署的问题。Ansible 的目标是通过仅执行必要的更改,使系统处于所需的状态。试图将 Ansible 视为脚本语言并非正确的做法。

    安装 Ansible

    本次环境YUM源(centos和epel)为:"阿里云官方镜像站"

    //配置centos源
    [root@localhost ~]# rm -rf /etc/yum.repos.d/*
    [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
    [root@localhost ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
    [root@localhost ~]# sed -i 's|$releasever|8|' /etc/yum.repos.d/CentOS-Base.repo
    
    //配置epel源
    [root@localhost ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
    [root@localhost ~]# sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
    [root@localhost ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
    [root@localhost ~]# sed -i 's|$releasever|8|' /etc/yum.repos.d/epel*
    [root@localhost ~]# yum clean all
    [root@localhost ~]# yum makecache
    
    //安装ansible
    [root@localhost ~]# yum -y install ansible
    [root@localhost ~]# ansible --version
    ansible 2.9.16
      config file = /etc/ansible/ansible.cfg
      configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
      ansible python module location = /usr/lib/python3.6/site-packages/ansible
      executable location = /usr/bin/ansible
      python version = 3.6.8 (default, Dec  5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
    
    //通过使用setup模块验证localhost上的ansible_python_version
    [root@localhost ~]# ansible -m setup localhost|grep ansible_python_version
            "ansible_python_version": "3.6.8",
    

    练习题

    1. 以下哪一个词语最适合描述 Ansible 架构?(A)
      A. 无代理
      B. 客户端/服务器
      C. 事件驱动
      D. 无状态
    2. Ansible 默认使用哪一种网络协议与受管节点通信?(D)
      A. HTTP
      B. HTTPS
      C. SNMP
      D. SSH
    3. 以下哪种文件定义 Ansible 在受管节点上执行的操作?(C)
      A. 主机清单
      B. 清单
      C. Playbook
      D. 脚本
    4. 哪一种语言用于定义 Ansible Playbook?(D)
      A. Bash
      B. Perl
      C. Python
      D. YAML
  • 相关阅读:
    AES算法,DES算法,RSA算法JAVA实现
    spring官方学习地址
    逐步理解SpringMVC
    sublime前端开发工具常用技巧
    谈谈关键字new
    关于mybatisgenerator的问题
    AOPjdk动态代理的思考
    关于java解析xml文件出现的问题
    Java注解
    git向码云上传代码总结
  • 原文地址:https://www.cnblogs.com/yuqinghao/p/14231733.html
Copyright © 2011-2022 走看看