ansible概述

什么是ansible:

  • 是一种开源的自动化平台,使用simple automationlanguage编写的playbook可以完美的描述IT应用架构,同时带有automation engine 运行 playbook ansible可以执行功能强大的自动化任务,适用于不同的工作流和环境,新手也能快速掌握
  • ansible是简单的:playbook易于阅读、理解和更改,编写他们不需要使用特殊技巧,playbook按顺序执行任务
  • ansible是功能强大的:可以使用ansible去部署应用程序,配置管理,工作流自动化和网络自动化
  • 可以用于编排整个应用程序生命周期
  • ansible是无需代理的:ansible使用openSHH或者WinRM连接到它管理的主机,并运行任务,向这些主机推送称为ansible modules小程序,当ansible完成任务时,被推送的模块将会被删除,由于没有代理,ansible比其他的替代方案更高效,更安全

ansible概念和架构

  • ansible架构中有两种计算机类型:控制节点和收官主机
  • ansible软件安装在控制节点上,所以组件也在控制节点上被维护。
  • 受管主机在主机清单文本文件中,位于控制节点上,含有受管主机名称或者IP列表
  • ansbile用户无需编写复杂的脚本,而只要创建高级play,即可保证主机或者主机组处于特定状态
  • play按照该play指定的顺序对主机执行一系列任务,play采用YAML格式,包含一个或者多个play的文件称为playbook
  • 每个task运行一个模块module(使用pyhton,powershell或者某种其他语言编写),ansible随附了数百个实用模块,他们能执行许多个的不同的自动化任务
  • 在task在使用时,模块通常确保计算机的某一特定方面的处于特定的状态。如果系统不处于指定的状态,task应将其置于相应状态。如果task失败,ansible默认在出错主机中止playbook的其余部分task,play和playbook均具有幂等性。这意味着,可以在相同主机上多次安全的运行一个playbook,当系统处于正确状态时,playbook在运行时不会进行任何的更改
  • ansible也使用plugin,插件是可以添加到ansible中的代码,以对它进行扩展并使它适合新的用途
  • ansible架构也是无代理的.通常,当管理员运行ansible playbook时,控制节点会使用SSH(默认),或WinRM连接受管主机,这意味着不需要在受管主机上安装ansible专用代理。

一 .特点

  1. 简单易用
    • Ansible 使用 YAML(Yet Another Markup Language)语言编写配置文件,这种语言简洁明了,易于阅读和编写。例如,一个简单的任务配置文件可以像这样:

      yaml

      复制

      - name: Install httpd
        yum:
          name: httpd
          state: present

      这段代码的意思是使用 yum 包管理器来安装 httpd(Apache HTTP 服务器)软件包。Ansible 的语法直观,对于运维人员来说学习成本相对较低。

  2. 无需客户端代理
    • 与一些其他自动化工具(如 Puppet 或 Chef)需要在被管理的节点上安装客户端代理不同,Ansible 是基于 SSH(Secure Shell)进行通信的。它不需要在被管理的机器上安装额外的软件代理,这使得部署和维护更加简单。只要被管理的机器能够通过 SSH 连接,并且 Ansible 控制节点有相应的 SSH 权限,就可以对它们进行管理。

  3. 强大的模块支持
    • Ansible 拥有丰富的模块库,这些模块涵盖了各种系统管理任务。例如,有用于管理文件的 file 模块,可以设置文件的权限、所有权等属性;有用于管理服务的 service 模块,可以启动、停止、重启服务等。此外,Ansible 还支持自定义模块,用户可以根据自己的需求开发新的模块来扩展其功能。

  4. 可扩展性强
    • 它可以通过插件系统进行扩展。例如,可以通过添加新的回调插件来改变 Ansible 执行任务时的输出格式,或者通过添加新的连接插件来支持不同的远程连接方式。而且 Ansible 支持多种操作系统,包括 Linux、Unix 和 Windows 等,能够很好地适应不同的运维环境。

二、工作原理

  1. 控制节点和被管理节点
    • Ansible 的工作主要涉及控制节点和被管理节点。控制节点是安装了 Ansible 的机器,它负责向被管理节点发送指令。被管理节点是需要进行自动化管理的机器。控制节点通过 SSH 连接到被管理节点,并在被管理节点上执行任务。

  2. Inventory(主机清单)
    • 主机清单是 Ansible 用来定义被管理节点的列表。它通常是一个文件,可以是 INI 格式或 YAML 格式。例如,一个简单的 INI 格式的主机清单文件(inventory.ini)可以是这样的:

      复制

      [webservers]
      web1.example.com
      web2.example.com
      
      [dbservers]
      db1.example.com

      这里定义了两个组:webserversdbservers,分别包含不同的服务器。Ansible 可以根据这些分组来对不同的服务器进行批量操作。

  3. Playbook(剧本)
    • Playbook 是 Ansible 的核心概念之一,它是一个用 YAML 编写的文件,用于定义一系列的任务。这些任务按照顺序执行,可以实现复杂的自动化操作。例如,一个简单的 Playbook 文件(deploy.yml)可能如下:

      yaml

      复制

      - hosts: webservers
        tasks:
          - name: Install httpd
            yum:
              name: httpd
              state: present
          - name: Start httpd service
            service:
              name: httpd
              state: started

      这个 Playbook 指定在 webservers 组的主机上执行两个任务:安装 httpd 软件包和启动 httpd 服务。当 Ansible 执行这个 Playbook 时,它会按照任务的顺序在被管理节点上依次执行这些操作。

三、应用场景

  1. 配置管理
    • 可以用来管理服务器的软件包安装、配置文件修改、服务启动等。例如,在一个大型的服务器集群中,通过编写 Playbook,可以统一地在所有服务器上安装特定的软件版本,并且将配置文件设置为统一的标准格式,确保服务器环境的一致性。

  2. 应用部署
    • Ansible 能够实现应用程序的自动化部署。它可以将应用程序的代码从版本控制系统(如 Git)拉取到服务器上,然后进行编译、安装和启动。例如,对于一个基于 Python 的 Web 应用程序,Ansible 可以先安装 Python 环境和相关的依赖库,然后从 Git 仓库拉取代码,最后启动 Web 应用服务。

  3. 任务自动化
    • 可以执行各种重复性的任务,如定期备份数据库、清理日志文件等。通过编写定时任务的 Playbook,并结合操作系统的定时任务工具(如 cron),可以实现这些任务的自动化执行,节省运维人员的时间和精力。

Ansible 在现代的运维工作中发挥着重要作用,它通过简单高效的方式帮助运维人员实现自动化管理,提高工作效率和系统的稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古德赖可可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值