使用统一工具构建 Ansible 集合¶
本指南演示了一个全面的 Ansible 开发工作流程,它展示了 Ansible 生态系统中各种工具的集成,以创建一个 Ansible 集合。此工作流程中使用的工具包括:
- ansible-creator
- ansible-dev-environment (ansible-dev-environment)
- ansible-lint
- ansible-navigator
- VS Code Ansible 扩展
使用 ansible-creator 搭建集合¶
-
打开 VS Code 并单击活动栏中的 Ansible 图标以访问 Ansible Creator 部分。单击该部分下的“开始”以打开 VS Code 中 Ansible Creator 的菜单页面。
-
检查系统要求,如有需要则安装 ansible-creator。确保
系统要求
框中的所有要求都显示绿色勾号。 -
单击“初始化集合”以打开“初始化”界面。填写集合名称、初始化路径、详细程度和日志记录选项的表单。单击“创建”以在所需位置搭建集合。您可以选择查看日志或在 VS Code 编辑器中打开日志文件以查看详细信息。
-
单击
打开集合
按钮将集合文件夹添加到工作区。
注意:有关在 VS Code Ansible 扩展中使用 Ansible Creator 的更详细说明,请参阅 [doc: ansible-creator]。
使用 ansible-dev-environment 安装集合¶
-
在集合结构就位后,使用“ansible-dev-environment”以可编辑模式安装新创建的集合,类似于 Python 模块。
-
导航到集合目录并运行:
-
此安装方法会将集合添加到系统路径,以便 Ansible 能够识别它。此外,它还可以通过允许随时更改模块代码来增强开发过程。
-
您可以使用 ansible-galaxy 命令检查集合是否已安装。在终端中,运行以下命令应该会显示新创建的集合的名称:
添加 Python 代码使集合生效¶
-
导航到集合目录并导航到 plugins/modules/。添加创建一个 [module-name].py 文件以及模块的文档、示例和逻辑。
-
由于其使用 pip4a 的安装方法,您可以动态更改模块代码并在 playbook 执行期间观察效果。
注意:有关模块开发的详细信息,请参阅 ansible 模块开发文档。
使用 ansible-lint 检查 playbook 中模块的语法¶
-
利用 vscode-ansible 扩展和 ansible-lint 可以深入了解集合,而无需运行 playbook。
-
在“playbooks”目录下创建一个简单的 playbook。
-
完成使用新创建的集合模块编写 playbook 后,保存文件将自动在 playbook 上运行 ansible-lint。
-
通过与扩展的集成,ansible-lint 可以检测错误,例如不正确的选项值和缺少必需的选项,以及 ansible 最佳实践的其他规则,方法是在编辑器中提供反馈(红色和黄色波浪线)以及在 vscode 的
问题
选项卡中提供反馈。
使用 ansible-navigator 运行包含集合模块的 playbook¶
-
VS Code 中的 Ansible 扩展能够检测 playbook 文件并为其提供多个与 Ansible 相关的选项。其中一个选项是在无需离开编辑器的情况下运行 playbook。
-
右键单击编辑器中打开的 playbook 并选择
通过...运行 Ansible Playbook
。这提供了通过 ansible-navigator 或 ansible-playbook 运行 playbook 的选项。 -
选择
通过 ansible-navigator run 运行 playbook
以便在 VS Code 中的终端中执行 playbook。
适应模块代码的更改¶
-
现在是时候体验一下
以可编辑模式安装集合
的强大功能了。通过添加新功能和/或修改现有功能来更改模块代码。 -
重复前两步以观察扩展和 ansible-lint 如何无缝适应这些更改。
-
Ansible 扩展以及 ansible-lint 继续为更新的模块代码提供 lint 功能,并且使用 ansible-navigator 运行 playbook 可以无缝地整合新的模块代码。
这个统一的开发套件,包括 ansible-creator、ansible-dev-environment、ansible-lint、ansible-navigator 和 vscode-ansible 扩展,为内容开发者提供了一种增强且高效的 Ansible 开发工作流程方法。
这些工具的集成简化了开发过程,为构建 Ansible 集合提供了连贯的体验。