ansible自动化运维之ansible入门及简单部署(代码片段)

Tuki_a Tuki_a     2022-12-19     464

关键词:

Ansible简介

常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric。
Ansible发布于2012年,其作者兼创始人是Michael DeHaan。
红帽2015收购了Ansible母公司。
官方文档:https://docs.ansible.com/

Ansible 是一个极其简单的 IT 自动化引擎,可自动执行云供应、配置管理、应用程序部署、服务内编排和许多其他 IT 需求。

Ansible主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率。可以理解为是一种配置管理工具

常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成、零宕机平滑升级等。

Ansible完全基于Python开发,而DevOps在国内已然是一种趋势,Python被逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Ansible二次开发。

Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,完全可以满足日常功能所需。

Ansible特点

ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块
ansible只是提供一种框架.ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的

在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。

Agentless(无客户端),客户端无需任何配置,由管理端配置好后即可使用,这点非常诱人。

Ansible没有客户端,因此底层通信依赖于系统软件,Linux系统下基于OpenSSH通信,Windows系统下基于PowerShell,管理端必须是Linux系统

概念解释

  • Control node控制节点
    任何安装了 Ansible 的机器。可以通过从任何控制节点调用ansibleoransible-playbook命令来运行 Ansible 命令和 playbook 。可以使用任何安装了 Python 的计算机作为控制节点——笔记本电脑、共享桌面和服务器都可以运行 Ansible。但是,不能将 Windows 机器用作控制节点。可以有多个控制节点。
  • Playbooks
    已保存的有序任务列表,可以按该顺序重复运行这些任务。剧本可以包括变量和任务。Playbooks 是用 YAML 编写的,易于阅读、编写、共享和理解。Ansible Playbooks 提供了一个可重复、可重用、简单的配置管理和多机部署系统,非常适合部署复杂的应用程序。如果需要多次使用 Ansible 执行任务,编写剧本并将其置于源代码控制之下。然后可以使用 playbook 推送新配置或确认远程系统的配置。
  • Managed nodes托管节点
    使用 Ansible 管理的网络设备(和/或服务器)。受管节点有时也称为“主机”。Ansible 未安装在受管节点上。
  • Inventory=:
    受管节点列表。清单文件有时也称为“主机文件”。清单可以为每个受管节点指定 IP 地址等信息。清单还可以组织受管节点,创建和嵌套组以便于扩展。
  • Collections
    集合是 Ansible 内容的分发格式,可以包括剧本、角色、模块和插件。
  • Modules:
    Ansible 执行的代码单元。每个模块都有特定的用途,从管理特定类型数据库上的用户到管理特定类型网络设备上的 VLAN 接口。可以使用任务调用单个模块,或调用剧本中的多个不同模块。从 Ansible 2.10 开始,模块被分组到集合中。
  • Tasks
    Ansible 中的动作单元。可以使用临时命令执行一次单个任务。

Ansible使用过程中的角色

1、使用者

  • CMDB存储和管理着企业IT架构中的各项配置信息,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达成的目标。
  • 基于PUBLIC(公有云)/PRIVATE(私有云),Ansible以API调用的方式运行,Ansible提供了丰富的API语言接口:PHP、Python等。
  • 直接使用Ad-Hoc临时命令集调用Ansible工具集来完成任务执行。
  • 通过执行Playbooks中预先编排好的任务集按序完成任务执行。

2、Ansible工具集(ansible命令是Ansible的核心工具,总指挥)

  • INVENTORY:命令执行的目标对象配置文件
  • API:供第三方程序调用的应用程序编程接口
  • MODULES:丰富的内置模块
  • PLUGINS:内置和可自定义的插件

3、作用对象
Ansible的作用对象,不仅仅是Linux和非Linux操作系统的主机,同样也可以作用于各类公有云/私有云,商业和非商业设备的网络设施。

Ansible通信机制

Ansible主推的卖点是其无需任何Daemon维护进程即可实现相互间的通信,且通信方式是基于业内统一标准的安全可靠的SSH安全连接。

无客户端,只需安装SSH、Python即可。

基于OpenSSH通信,底层基于SSH协议(Windows基于PowerShell)。

支持密码和SSH认证,建议使用公私钥方式认证,因为密码认证方式的密码需明文写配置文件,虽然配置文件可加密,但会增加Ansible使用的复杂度。

支持Windows,但仅支持客户端,服务端必须是Linux系统。

Ansible应用场景

  • 应用部署
    Ansible内置网络、应用、系统、第三方云平台扩展等完善的功能模块,协助运维快速完成应用的安装、卸载、升级、启停、配置等部署类工作,即使对跨平台或知名的商业硬件也同样支持。

  • 配置管理
    Ansible内置File、Template,结合Jinja、Lineinfile等内置模块,同时无缝结合GitHub、GitLab、Git、SVN、Jenkins等主流版本控制和CI持续集成工具,助力配置管理自动化。

  • 任务流编排
    有效保证Tasks任务流按既定规则和顺序完成事先制订的目标和计划,同时Roles编排方式又能在一定程度上从书写习惯和代码层编排上保证整体项目的可架构性和规范性,协助控制项目维护成本不致过高。

  • 适用于网络管理员、系统运维、应用运维、桌面运维、DevOps、基础架构运维等多领域运维行业,上手快,效率高。

Ansible工作机制

Ansible为多层部署而设计,Ansible 通过描述所有系统如何相互关联来为您的 IT 基础架构建模,而不仅仅是一次管理一个系统。
它不使用代理,也没有额外的自定义安全基础设施,因此易于部署。最重要的是,它使用一种非常简单的语言(YAML,以 Ansible Playbooks 的形式),描述自动化任务。

ansible系统由控制主机和被管理主机组成,控制主机不支持windows平台。

核心: ansible
Core Modules: ansible自带的模块
Custom Modules: 核心模块功能不足时,用户可以添加扩展模块
Plugins: 通过插件来实现记录日志,发送邮件或其他功能
Playbooks: 剧本,YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能
Connectior Plugins: ansible基于连接插件连接到各个主机上,默认是使用ssh
Host Inventory: 记录由Ansible管理的主机信息,包括端口、密码、ip等

Ansible的目录结构

配置文件: /etc/ansible/
执行文件目录: /usr/bin/
lib依赖库: /usr/lib/python2.7/site-packages/ansible/
help文件: /usr/lib/python2.7/site-packages/ansible

部署环境

三台虚拟机:rhel7.6的OS
server1		192.168.122.11		ansible管理端
server2		192.168.122.12		远程主机
server3		192.168.122.13		远程主机

Ansible部署

在真机将源放到aoache发布目录下(包含离线安装包和一些依赖源)

在server1添加真机的ansible源

[ansible]
name=ansible
baseurl=http://192.168.122.1/ansible
gpgcheck=0

列出源没问题

安装ansible

我装的是2.8.5版本

添加远程主机

进入配置文件目录

修改主机文件,指定远程主机,如下图将两台主机分配到了test组(如果不指定组别,那就是默认情况下未分配组,Ungrouped)

ansible管理主机需要与这些主机提前做好ssh免密
如果不做免密,会出现如下情况

所以需要对管理的主机做免密

ssh-keygen
ssh-copy-id server2
ssh-copy-id server3


调用ansible下的ping这个模块(-m指定模块)测试成功!

ansible自动化运维之playbook详解及体验(代码片段)

playbook-介绍:playbooks是一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。... 查看详情

自动化运维之ansible安装及命令使用(代码片段)

Ansible介绍ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于paramiko开发的,并且基于模块化工作,... 查看详情

自动化运维之ansible安装及基本模块应用

...所以断电等异常一般不会影响ansbile。2.ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配 查看详情

自动化运维之ansible概述及ansible部署|(持续更新中)(代码片段)

...旧按照传统方式进行维护使得工作效率低下。这时,部署自动化运维就可以尽可能安全,高效地完成这些工作。一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的Agent程序来完成管理功能,如... 查看详情

ansible自动化运维之ansible命令运行方式及常用参数和常用模块(代码片段)

Ansible常用模块ansible实现管理的方式演示环境Ad-Hoc执行方式获得帮助ansible命令运行方式及常用参数ansible输出不同颜色含义ansible中的常用模块1.command2.shell3.script4.copy5.fetch6.file7.archive8.unarchive9.hostname10.cron11.yum_repository12.dnf/yum13.s 查看详情

ansible自动化运维之配置清单inventory(代码片段)

Ansible配置清单InventoryAnsible部署Inventory简介Ansible配置文件的优先级Ansible命令常用参数演示环境Anisble参数使用简单示例构建Anisble清单ansible命令指定清单的正则表达式Ansible配置文件参数详解Ansible部署简单介绍、安装、简单部署可... 查看详情

自动化运维之详细部署安装ansible服务(超简单)(代码片段)

简介:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署... 查看详情

自动化运维之ansible服务部署(代码片段)

...hon语言开发,巧妙的设计、实现了简单易用、功能强大的自动化管理工具。目前它已经广泛应用于各种规模、各个领域的企业。Ansible应用领域Ansible的编排引擎可以出色地完成配置管理、流程控制、资源部署等工作,与其他IT自... 查看详情

自动化运维之ansible(代码片段)

...行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并行管理,使得管理主机更加便捷。Ansible核心组件Ansible可以看作是一种基于模块进行工作的框架结构,批量部署能力... 查看详情

ansible自动化运维之playbook详解(含yaml介绍)及ansible的加密控制(代码片段)

playbookplaybook简介YAML语言特点:语法简介:演示环境查看帮助playbook执行命令playbook中变量的命名和变量的级别playbook中变量设定和使用方式1.在playbook中直接定义变量2.在文件中定义变量3.设定主机变量和清单变量4.目录设... 查看详情

安装部署自动化运维之ansible(代码片段)

...行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并行管理,使得管理主机更加便捷。Ansible核心组件ansible可以看做是一种基于模块进行工作的框架结构,批量部署能力... 查看详情

ansible自动化运维之playbook详解及体验(代码片段)

Handlers介绍:Handlers也是一些task的列表,和一般的task并没有什么区别。是由通知者进行的notify,如果没有被notify,则Handlers不会执行,假如被notify了,则Handlers被执行;不管有多少个通知者进行了notify,等到play中的所有task执行完... 查看详情

自动化运维之ansible

大纲:   一、ansible是什么   二、ansible的特点   三、ansible的任务执行模式和执行流程   四、ansible的安装   五、ansible常用命令   六、ansible常用模块  查看详情

ansible自动化运维工具简单入门(代码片段)

三、Ansible的使用1、Ansible命令执行过程及状态过程:加载自己的配置文件,默认/etc/ansible/ansible.cfg加载自己对应的模块文件,如commandping通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器给文件+x权限... 查看详情

自动化运维之ansible剑客参上(代码片段)

自动化运维之AnsibleAsible概述与核心组件Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。Ansible可以... 查看详情

linux学习总结(七十四)自动化运维之ansible(代码片段)

一ansible介绍不需要安装客户端,通过sshd去通信基于模块工作,模块可以由任何语言开发不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读安装十分简单,centos上可直接yum安装有提供UI(浏览器图形化)www.a... 查看详情

自动化运维之ansible-安装部署与基础命令篇(代码片段)

...署程序、配置系统等功能。二、安装部署Ansible服务Ansible自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或允许任何程序,被管理主机也不需要安装... 查看详情

自动化运维之ansible——安装配置

Ansible相对于其他自动化运维工具(saltstack、puppet)的优势:Ansible是一款轻量级框架,基于各个模块实现各种功能,模块可根据需要自行开发agentless无需安装agent,可根据具体情况建立一台操作机支持playbook剧本 python语言开发... 查看详情