Ansible简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible简介相关的知识,希望对你有一定的参考价值。

运维的未来是让研发人员能够借助工具、自动化和流程,在运维人员干预极少的情况下部署和运营服务,从而实现自助服务。每个角色都应该女里使功过实现自动化。——运维的未来

1.自动化运维工具

自动化运维工具能够帮助运维人员肉眼可见的提高工作效率,并减少人为错误。

常见自动化运维工具:

  • Ansible:python,中小型应用环境
  • Saltstack:python,需要部署agent,执行效率高
  • Puppet:ruby,功能强大,配置复杂,重型,适合大型环境

2.Ansible

Ansible是最近几年特别火的一款开源自动化运维工具,操作简单、容易上手,能够用来挂里各种资源。

Ansible基于SSH远程会话协议,不需要客户端程序,只要是到managed node的IP地址、账号和密码,就能直接用SSH协议你进行远程控制。

Ansible服务本身并没有批量部署的功能,它仅仅是一个框架,真正具有批量部署能力的是其所运行的模块。Ansible内置了上千个模块,在安装Ansible时一并安装,通过调用指定的模块实现特定的功能。

3.Ansible特点

3.1 优点

  • 功能模块丰富。
  • 使用和部署简单,无需安装专用代理软件,基于python和SSH实现。
  • 安全,基于OpenSSH实现安全通讯无需专用协议。
  • 幂等性:一个任务执行1遍和执行n遍效果一样,不会因为重复执行带来意外情况。
  • 2012年被红帽购买,背景强大。

3.2 缺点

  • 管理主机较多时,执行效率不如saltstack高
  • 不支持事务回滚。

4.术语

  • Control node:控制节点,安装了Ansible的主机。
  • managed node:受控节点,被远程管理的主机。
  • inventory:主机清单,受控节点列表。
  • module:模块,用于实现特定功能的代码。
  • task:任务,要在受控节点上执行的操作。
  • playbook:剧本,通过YAML语言编写的可重复执行的任务列表。
  • role:角色,用于结构化地组织剧本。

5.简单命令

  • ansible --version ##查看ansible版本
[ecs-user@localhost ~]$ ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg ##配置文件路径
configured module search path = [u/home/ecs-user/.ansible/plugins/modules, u/usr/share/ansible/plugins/modules]
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
  • ansible-doc -l ##查看已安装的功能模块



001. Ansible简介

一 简介

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

Ansible是基于模块工作的, 本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块, Ansible只是提供一种框架。主要包括:

技术分享图片

  1. Play books:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible依次执行多个任务,通常是JSON格式的YML文件;
  2. Host inventory: Ansible管理主机的清单,指定操作的主机, 是一个配置文件里面定义监控的主机;
  3. Modules:各种模块核心模块, command模块等,也包括自定义模块;
  4. Connection plugins: 负责和被监控端实现通信;
  5. Plugins:模块功能的补充,如连接类型插件、循环插件、变量插件等,可借助于插件完成更丰富的功能。

二 工作机制

技术分享图片

  1. 用户使用Ansible或Playbook,在服务器中断输入Ansible的Ad-Hoc命令集或Playbook;
  2. Ansible遵循预先编排的规则将Playbooks逐条拆解为Play;
  3. Play组织成Ansible可识别的任务(Task);
  4. Task会调用任务所涉及的所有模块(Module)和插件(Plugin);
  5. 读取Inventroy中定义的主机列表;
  6. 通过SSH认证(默认)将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果。

三 特性

  1. no agents: 不需要在被管控主机上安装任何客户端,只需SSH、Python即可,建议Python版本为2.6.6以上;
  2. no server: 无服务器端, 使用时直接运行命令即可;
  3. modules in any languages: 基于模块工作, 丰富的内置模块,可使用任意语言开发模块;
  4. yaml, not code: 使用yaml语言定制剧本playbook,易于管理,API简单明了;
  5. ssh by default: 基于SSH工作,整个过程简单、方便、安全,建议使用公钥方式认证;
  6. strong multi-tier solution: 可实现多级指挥。

四 优点

    (1).轻量级, 无需在客户端安装agent, 更新时只需在操作机上进行一次更新即可;

    (2).批量任务执行可以写成脚本, 而且不用分发到远程就可以执行;

    (3).使用python编写, 维护更简单, ruby语法过于复杂;

    (4).支持sudo。

五 应用场景

5.1 操作角度划分

文件传输:文件的本地传输和异地传输,所有文件的空间形态、时间形态变化均构成文件传输类操作;

命令执行:终端所有操作对系统来说都是指令的组成,对运维操作的用户行为来说,除文件传输以外的其他操作均可称为命令操作。

5.2 工作类型划分

  1. 应用部署
  2. 配置管理
  3. 任务流编排

以上是关于Ansible简介的主要内容,如果未能解决你的问题,请参考以下文章

01Ansible简介与部署

Ansible简介

001. Ansible简介

ansible plugins简介

ansible简介

Ansible简介与实验