ansible 使用

Ansible 是什么?

Ansible 是近年来越来越火的一款开源运维自动化工具。

ansible特点

特点如下:

Ansible 基于 Python 开发,运维工程师对其二次开发相对比较容易;
Ansible 丰富的内置模块,几乎可以满足一切要求;
管理模式非常简单,一条命令可以影响上千台主机;
无客户端模式,底层通过 SSH 通信;

Ansible角色

使用者:如何使用 Ansible 实现自动化运维?

Ansible 使用者可以采用多种方式和 Ansible 交互,图中展示了四种方式:
CMDB:运维人员可以组合 CMDB 和 Ansible,通过 CMDB 直接下发指令调用Ansible 工具集完成操作者所希望达到的目标;

PUBLIC/PRIVATE 方式:Ansible还提供丰富的 API语言接口,基于 PUBLIC/PRIVATE,Ansible 以 API 调用的方式运行;

Ad-Hoc 命令集:Users直接通过Ad-Hoc命令集调用Ansible工具集来完成任务;

Playbooks:Users 预先编写好 Ansible Playbooks,通过执行Playbooks 中预先编排好的任务集,按序执行任务;
使用者

Ansible 工具集:Ansible 可以实现的功能?

Ansible 工具集包含 Inventory、Modules、Plugins 和 API。

Inventory:用来管理设备列表,可以通过分组实现,对组的调用直接影响组内的所有主机;

Modules:是各种执行模块,几乎所有的管理任务都是通过模块执行的;

Plugins:提供了各种附加功能;
API:为编程人员提供一个接口,可以基于此做 Ansible的二次开发;具体表现如下:
Ansible Playbooks:任务脚本,编排定义Ansible任务及的配置文件,由Ansible按序依次执行,通常是JSON格式的YML文件;
Inventory:Ansible 管理主机清单;
Modules:Ansible 执行命令功能模块,多数为内置的核心模块,也可自定义;
Plugins:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不太常用;
API:供第三方程序调用的应用程序编程接口;
Ansible:该部分图中表现得不太明显,组合 Inventory、API、Modules、Plugins可以理解为是 Ansible 命令工具,其为核心执行工具;

作用对象:Ansible 可以影响哪些主机
Ansible 的作用对象不仅仅是 Linux 和非 Linux 操作系统的主机,也可以作用于各类PUBLIC/PRIVATE、商业和非商业设备的网络设施。

使用者使用 Ansible 或 Ansible-Playbooks 时,在服务器终端输入 Ansible 的 Ad-Hoc命令集或 Playbooks 后,Ansible 会遵循预选安排的规则将 Playbooks 逐步拆解为Play,再将 Play 组织成 Ansible 可以识别的任务,随后调用任务涉及的所有模块和插件,根据 Inventory 中定义的主机列表通过 SSH 将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,如果是临时文件则执行完毕后自动删除。

Ansible-playbook

Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux中的sh或source命令,用来执行系列任务。

其工作机制:通过读取预先编写好的playbook文件实现集中处理任务。Ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码,命令使用方式如下:
Ansible-playbook

四、playbook配置文件

playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表。上面介绍的ansible命令虽然可以完成各种任务,但是当配置一些复杂任务时,逐条输入就显得效率非常低下。

更有效的方案是在playbook配置文件中放置所有的任务代码,利用ansible-playbook命令执行该文件,可以实现自动化运维。YAML文件的扩展名通常为.yaml或.yml。

YAML语法与其他高级语言类似,其结构通过缩进来展示,通过“-”来代表项;“:”用来分隔键和值;整个文件以“—”开头并以“…”结尾,如下所示:
在这里插入图片描述
在这里插入图片描述
所有的“-”和“:”后面均有空格,而且注意缩进和对齐,如下图所示:
在这里插入图片描述

playbook的核心元素包含:

hosts:任务的目标主机,多个主机用冒号分隔;
remote_user:远程主机上,运行此任务的默认身份为root;
tasks:任务,即定义的具体任务,由模块定义的操作列表;
handlers:触发器,类似tasks,只是在特定的条件下才会触发的任务。某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers进行触发执行;
roles:角色,将hosts剥离出去,由tasks、handlers等所组成的一种特定的结构集合;

playbook文件定义的任务需要通过ansible-playbook命令进行调用并执行。

ansible-playbook命令用法如下:

ansible-playbook [option] /PATH/TO/PLAYBOOK.yaml

其中,[option]部分的功能包括:
—syntax-check:检测yaml文件的语法;
-C(—check):预测试,不会改变目标主机的任何设置;
—list-hosts:列出yaml文件影响的主机列表;
—list-tasks:列出yaml文件的任务列表;
—list-tags:列出yaml文件中的标签;
-t TAGS(—tags=TAGS):表示只执行指定标签的任务;
—skip-tags=SKIP_TAGS:表示除了指定标签的任务,执行其他任务;
—start-at-task=START_AT:从指定的任务开始往下运行;

执行playbook的示例如下:
在这里插入图片描述
通常情况下先执行 ansible-playbook -C /PATH/TO/PLAYBOOK.yaml 命令进行测试,测试没问题后再执行 ansible-playbook /PATH/TO/PLAYBOOK.yml 命令。

https://baijiahao.baidu.com/s?id=1688061542852821378&wfr=spider&for=pc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值