Ansible自动化

自动化运维工具

    ansible        小型公司        通过SSH远程管理受控节点
        saltstack    中型公司        通过agent代理
        puppet        
        chef

Ansible介绍

  1、什么是Ansible

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

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

Ansible架构图:

  

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
        核心模块(Core Modules):这些都是ansible自带的模块
        扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
        插件(Plugins):完成模块功能的补充
        剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
        连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有

   连接插件

        主机群(Host Inventory):定义ansible管理的主机

Ansible安装

    在Fedora上:
        $ sudo dnf install ansible
        在RHEL上:
        $ sudo yum install ansible
        在 CentOS 上:
        $ sudo yum install epel-release
        $ sudo yum install ansible

Ansible常用参数

  m:要执行的模块,默认为command
  -a:指定模块的参数
  -u:ssh连接的用户名,默认用root,ansible.cfg中可以配置
  -b,--become:变成那个用户身份,不提示密码
  -k:提示输入ssh登录密码,当使用密码验证的时候用
  -s:sudo运行
  -U:sudo到哪个用户,默认为root
  -K:提示输入sudo密码,当不是NOPASSWD模式时使用
  -C:只是测试一下会改变什么内容,不会真正去执行
  -c:连接类型(default=smart)
  -f:fork多少进程并发处理,默认为5个
  -i:指定hosts文件路径,默认default=/etc/ansible/hosts
  -I:指定pattern,对已匹配的主机中再过滤一次
  -list-host:只打印有哪些主机会执行这个命令,不会实际执行
  -M:要执行的模块路径,默认为/usr/share/ansible
  -o:压缩输出,摘要输出
  --private-key:私钥路径
  -T:ssh连接超时时间,默认是10秒
  -t:日志输出到该目录,日志文件名以主机命名
  -v:显示详细日志

posted @ 2021-07-13 23:02  Aimmi  阅读(192)  评论(0)    收藏  举报