type
status
date
slug
summary
tags
category
icon
password
 

Ansible 变量管理:提升自动化效率的关键

Ansible 是一款强大的自动化工具,通过使用变量简化任务管理并减少错误。本文将介绍 Ansible 中变量的定义、命名规则、优先级管理,以及如何在 Playbook 中高效使用这些变量。

变量的定义与使用

通过使用变量,我们可以定义一些常用信息,例如:
  • 要创建的用户
  • 要安装的软件包
  • 要启动或停止的服务
  • 要删除的文件

变量命名规则

  1. 变量名必须以字母开头。
  1. 变量名只能包含字母、数字和下划线。
无效名称web server, remote.file, 1st file
有效名称web_server, remote_file, file_1

变量的定义方式

在 Ansible Playbook 中,变量可以通过多种方式定义:
  • Playbook 中的 vars:全局定义变量。
  • 外部文件:通过 vars_files 引入。

示例:定义简单变量

示例:引用外部文件的变量

Playbook
外部变量文件 vars/users.yml

变量优先级管理

在 Ansible 中,不同的变量定义方式具有不同的优先级,优先级从低到高依次为:
  1. 清单中定义的变量(最低优先级)
  1. Playbook 的 group_vars 中定义的变量
  1. Playbook 的 host_vars 中定义的变量
  1. 主机事实(自动发现的变量)
  1. Playbook 中的 varsvars_files
  1. 任务变量(定义在具体任务中的变量)
  1. 命令行传递的变量(最高优先级,例如使用 e 参数传递的变量)

注意事项

尽量选择唯一的变量名称,以避免混淆优先级规则。当同一个变量名在多个地方定义时,Ansible 将使用优先级最高的变量值。例如,任务中的变量会优先于 Playbook 中的变量。

示例:优先级示范

Ansible 变量优先级及示例

在 Ansible 中,变量的定义和使用有多种层级,每个层级都有不同的优先级。了解这些优先级有助于我们有效地管理配置。以下是 Ansible 变量的优先级顺序,从最低优先级到最高优先级,以及每个层级的示例。

1. 清单中定义的变量(最低优先级)

在清单文件中定义的变量将具有最低的优先级。
清单文件inventory.ini):

2. Playbook 的 group_vars 中定义的变量

group_vars 目录中定义的变量将覆盖清单中定义的变量。文件名需要是组名
group_vars/webservers.yml
Playbook
输出

3. Playbook 的 host_vars 中定义的变量

host_vars 目录中定义的变量将覆盖 group_vars 中的变量。文件名需要是主机名
host_vars/server1.yml
Playbook
输出

4. 主机事实(自动发现的变量)

Ansible 自动收集的主机信息,如操作系统、IP 地址等,将在变量优先级中优先于 group_varshost_vars
Playbook
输出(假设服务器为 Ubuntu):

5. Playbook 中的 varsvars_files

在 Playbook 中通过 varsvars_files 定义的变量将优先于主机事实。
Playbook
输出

6. 任务变量(定义在具体任务中的变量)

在任务中定义的变量将覆盖所有其他层级的变量。
Playbook
输出

7. 命令行传递的变量(最高优先级)

使用 -e--extra-vars 选项在命令行传递的变量将覆盖所有其他变量。
命令行运行
Playbook
输出

练习:

06:实施Playbook-5 开放实验08:管理变量和事实-2 管理机密
Loading...
minami
minami
一个普通的干饭人🍚
Announcement

🎉 ブログへようこそ 🎉

notion image
名前:みなみ独立事務所
性別:男
国籍:China
完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

📚 主な内容

💻 IT・システム開発
🏠 不動産 × 宅建士
🎓 MBA 学習記録

🔍 コンテンツの探し方

現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
気になるテーマを探す際は、タグ検索の利用をおすすめします。