使用 Git 准备 Ansible 项目

AnsibleBeginner
立即练习

介绍

当每个自动化任务都位于清晰的项目目录中时,Ansible 的工作会更容易维护。RHCE 风格的 Ansible 工作也要求养成版本控制的习惯,因为 Playbook、清单(inventory)、变量和角色(role)都是会随时间变化的文本文件。

在本实验中,你将在 /home/labex/project/rhce-ansible 下创建一个小型 Ansible 项目,将其初始化为 Git 仓库,添加第一个清单文件,并提交基准版本。该项目规模虽小,但其布局与本预备课程中使用的结构保持一致。

创建项目工作区

在此步骤中,你将创建项目目录以及 Ansible 项目所使用的第一组文件夹。-p 选项告诉 mkdir 创建缺失的父目录,并在目录已存在时避免报错。

进入标准的 LabEx 工作区。

cd /home/labex/project

创建一个项目目录,其中包含用于存放清单、Playbook、变量、文件、模板和角色的常用子目录。

mkdir -p rhce-ansible/{inventory,playbooks,group_vars,host_vars,roles,files,templates}

这些目录名称是约定俗成的,而非强制要求。尽早使用它们有助于你了解后续实验将清单文件、变量、可重用角色代码以及 Playbook 所需复制或模板化的源文件放置在何处。

列出新项目的目录树。输出应显示你刚刚创建的目录。

find rhce-ansible -maxdepth 2 -type d | sort

find 会打印项目树中的目录,而 sort 使输出顺序保持稳定。此时这些目录是空的,但它们的存在构成了你稍后将要提交的基准结构。

初始化 Git 并设置本地身份

在此步骤中,你将把该项目转变为一个 Git 仓库。Git 将变更历史记录存储在隐藏的 .git 目录中。在本地设置身份可以使本实验保持独立,并避免更改全局用户设置。

进入项目目录。

cd /home/labex/project/rhce-ansible

初始化仓库。

git init

Git 会在项目内部创建一个隐藏的 .git 目录。该目录是仓库数据库;而可见的 Ansible 文件则保留在正常的项目树中。

为此仓库中的提交设置本地作者姓名和电子邮件。

git config user.name "LabEx RHCE Learner"
git config user.email "learner@example.com"

检查仓库状态。Git 应报告你当前处于一个分支上,且尚未追踪任何文件。

git status --short

简短的状态格式非常紧凑。Git 不会追踪空目录,因此如果此命令在添加实际文件之前几乎没有输出,这是正常的。

添加项目说明和忽略规则

在此步骤中,你将添加两个简单的项目文件。README.md 用于解释项目目的,.gitignore 则用于将临时文件排除在 Git 历史记录之外。

在执行此步骤中的命令之前,请返回项目目录,以便相对路径指向该 Ansible 项目。

cd /home/labex/project/rhce-ansible

使用 here-document 创建 README.md。EOF 标记之间的文本将按原样写入文件中。

cat > README.md <<'EOF'
## RHCE Ansible Practice Project

This repository contains guided Ansible practice files for RHCE-style automation.
EOF

创建一个小的 .gitignore 文件,用于忽略常见的 Ansible 临时产物。

cat > .gitignore <<'EOF'
*.retry
.artifacts/
__pycache__/
EOF

*.retry 模式涵盖了旧版 Ansible 工作流中的重试文件,.artifacts/ 是生成输出的常用位置,而 __pycache__/ 则用于防止 Python 字节码进入项目历史记录。

显示这两个文件,以便在追踪它们之前确认其内容。

sed -n '1,20p' README.md .gitignore

创建第一个清单

在此步骤中,你将创建一个小型静态清单。清单列出了 Ansible 可以管理的系统。对于第一个实验,名为 control 的主机使用 ansible_connection=local,这意味着 Ansible 将在此虚拟机上直接运行任务,而无需使用 SSH。

在执行此步骤中的命令之前,请返回项目目录,以便相对路径指向该 Ansible 项目。

cd /home/labex/project/rhce-ansible

创建 inventory/hosts。

cat > inventory/hosts <<'EOF'
[control]
control ansible_connection=local
EOF

方括号中的 [control] 行定义了一个组。下一行定义了一个名为 control 的主机别名,ansible_connection=local 则告诉 Ansible 在此项目中不要使用 SSH。

使用 ansible-inventory 解析该文件。此命令会在你在 Playbook 中使用它之前检查清单语法。

ansible-inventory -i inventory/hosts --graph

图形输出应包含 control 组和 control 主机。

提交基准项目

在此步骤中,你将把基准文件添加到 Git 并创建第一次提交。提交是一个命名的检查点,你可以在以后查看它。

在执行此步骤中的命令之前,请返回项目目录,以便相对路径指向该 Ansible 项目。

cd /home/labex/project/rhce-ansible

暂存文件。暂存操作告诉 Git 哪些更改应包含在下一次提交中。

git add README.md .gitignore inventory/hosts

创建基准提交。

git commit -m "Create Ansible project baseline"

提交输出应显示已添加到仓库的文件。如果 Git 显示没有可提交的内容,请重新运行 git status --short 并确保 README.md、.gitignore 和 inventory/hosts 已被暂存。

检查最终状态和最近一次提交。干净的状态意味着所有已追踪的更改都已提交。

git status --short
git log --oneline -1

git status --short 现在应该为空,而 git log --oneline -1 应该显示新的提交信息。这为你提供了一个已知良好的检查点,以便后续实验添加更多的 Ansible 内容。

总结

你创建了一个干净的 Ansible 项目工作区,初始化了 Git,添加了一个基础清单,并提交了第一个基准版本。这些项目习惯将使后续的 Playbook、变量、模板、角色和验证文件更易于管理。