Ansible【第二课】:实施 Ansible Playbook

RH294 第 2 章(实施 Ansible Playbook)

这一章讲怎么写、配、跑 Ansible 自动化脚本(Playbook)。

1 、Inventory 主机清单

清单就是记录所有要管理的机器,告诉 Ansible 要操作哪些服务器。

  • 静态清单:直接写文本文件,写主机名、IP,还能把机器分到不同组,方便批量操作一整组机器;支持通配符批量写一批主机。可以用命令查看清单里面有哪些机器、分组。
  • 动态清单:不是手写,通过脚本程序动态获取机器列表,适合云平台机器经常变动的场景。

如果不写清单,Ansible 就不知道该连哪台机器。

2 、Ansible 配置文件

配置文件用来设置 Ansible 的全局行为,比如去哪找主机清单、SSH 怎么连接受管机器、超时时间等等。

配置文件有好几个优先级:项目目录下的配置 > 用户家目录配置 > 系统全局配置。

可以用工具查看当前生效的全部配置。

连接相关配置:

Ansible 靠 SSH 去连别的机器。可以配置登录用户名、ssh 端口、密码、是否用 sudo 提权。

可以配置免密登录,也可以运行脚本的时候输入密码。

become相关参数控制要不要切换 root 权限,很多操作(装软件、改系统文件)必须提权才能完成。

3 、Playbook 剧本(YAML 格式)

Playbook 就是 Ansible 的脚本文件,后缀 yml,用 YAML 语法写,靠缩进控制层级,缩进错就直接报错。

  • 一个 Playbook 可以包含多个 Play;一个 Play 就是针对一批主机,执行一堆任务 task。
  • 每个 task 调用模块干活,模块就是 Ansible 现成工具,装软件、建用户、复制文件都有对应的模块,不用自己敲原始 shell 命令。
  • 幂等性:多次执行,效果和执行一次完全相同;已经达到目标状态,就不做任何改动。Ansible 大部分内置模块都是幂等的。

YAML 注意点:用空格缩进,不能用 Tab,冒号后面必须带空格,列表用-开头。

统计上面这份文件

  • Play:1 个
  • Task(任务):3 个
  • 模块:3 个(yum、copy、service)

核心关系

  1. Play:规定「操作哪台机器、要不要 sudo」
  2. tasks:是 Play 下的关键字,代表任务列表
  3. Task:tasks 下面每一条以‑ name:开头的,就是一个 Task(任务)
  4. 模块:每个 Task 里面,真正干活的工具,1 个 Task 只能用 1 个模块

记忆:

Play → 里面有 tasks → tasks 里面有很多 Task → 每个 Task 调用一个模块。

4 、模块怎么用

模块是真正干活的工具,系统自带大量内置模块。

可以用命令查模块文档,看模块怎么用、有哪些参数。

尽量优先使用 Ansible 自带模块,少用 shell/command 直接敲命令,shell 命令没有幂等性,反复执行容易出问题。

5 、运行 Playbook

用ansible‑navigator run执行剧本。

(ansible‑navigator run -m stdout,加-m stdout #把输出打印到终端屏幕#)

几个实用功能:

  1. 语法检查:先检查 yml 文件写没写错,不用真正执行机器上;
  2. 试运行(dry‑run):模拟跑一遍,只输出会做什么改动,不真正修改服务器,用来提前测试脚本;
  3. -v/-vvv增加输出详情,排错看日志;

执行结束会给出统计:ok 成功、changed 改动了系统、failed 失败、skipped 跳过。ok 代表机器已经符合要求,不需要改动。

6 、多个 Play、权限控制

一个 yml 可以写多个 Play,每个 Play 可以针对不同机器组、用不同登录用户、不同 sudo 权限。

可以在 play 里面单独指定remote_user登录哪个账号,become: yes开启 sudo 提权,become_user指定切换成哪个用户。

简单捋一遍完整流程

  1. 写 inventory 清单,登记要管的机器;
  2. 修改 ansible 配置,设置 ssh 连接、提权;
  3. 写 playbook(yml),选定目标主机,写 task,调用模块;
  4. 先语法校验,再试运行测试;
  5. 正式运行脚本,批量在多台机器完成自动化操作。

简单说:清单登记机器,配置文件规定怎么连机器,Playbook 写要干什么活,模块干实际操作,最后执行脚本批量干活。

相关推荐
启博网络2 小时前
启博安企服务器与ERP加速服务器如何区分?一文讲透
运维·服务器
Zhu7582 小时前
【开源脚本】Ubuntu环境下载任意软件
linux·运维·ubuntu
吴声子夜歌2 小时前
Docker入门与实战——核心实现技术
运维·docker·容器
做运维的阿瑞2 小时前
Terraform 入门实战:安装与实施
云原生·云计算·terraform
李纲明2 小时前
WordPress 安全加固基线:更新策略、文件权限、登录面收缩和备份验证(含回滚注意)
运维·安全·php·wordpress
2501_937767162 小时前
企业内部文件归集 + 服务器异地备份,轻量化方案选型对比
运维·服务器
0+1112 小时前
Linux --传输层协议 TCP
linux·网络·tcp/ip
志栋智能2 小时前
预算敏感型企业的自动化之路:IT运维低成本转型
运维·人工智能·自动化
盛世宏博智慧档案2 小时前
档案库房实现自动化的恒温恒湿消毒净化关键:恒湿消毒净化一体机
运维·自动化·一体机·恒湿机