跳至内容

community-ansible-dev-tools

Ansible 开发工具 (ADT) 的容器镜像。

此镜像基于 Fedora minimal 构建,并通过 podman 支持容器内容器。

使用的当前版本可以在用于基础层的 execution-environment.yml 文件中找到。

安装

podman pull ghcr.io/ansible/community-ansible-dev-tools:latest

使用方法

将其用作 VS Code Dev Container

Dev Containers 为您提供 VS Code 中的容器化开发环境。有关它们是什么以及如何使用它们的详细信息,请参阅 在容器内开发

此镜像可用作 Dev Container 的镜像,您可以在其中构建和使用 Ansible 内容。

此存储库附带一个示例 .devcontainer 目录,其中包含 2 个子目录 - podmandocker,每个子目录都有自己的 devcontainer.json 文件。

您可以简单地将 .devcontainer 目录复制到您的 Ansible 项目并开始使用它!

与 GitHub Codespaces 配合使用

要将此镜像与 GitHub Codespaces 配合使用,请将此仓库中的 devcontainer.json 复制到您的项目并推送到 GitHub。

注意:如果您计划开始编写新的 Ansible playbook 项目或集合,请使用 Ansible Creator 为您构建脚手架,您的项目/集合将已经准备好所有 .devcontainer 文件。

将此镜像用作 EE

此镜像也可以用作 Ansible 执行环境 (EE)。如果您不熟悉 EE 是什么,请查看 EE 入门 中的文档。它附带以下 Ansible 集合

  • ansible.netcommon
  • ansible.posix
  • ansible.scm
  • ansible.utils

您还可以使用 Ansible Builder 创建一个基于此的新 EE,其中包含您选择的更多 Ansible 集合(或 Python/系统包)。阅读此 文档 以了解 ansible-builder。

以下示例显示了如何创建一个自定义 EE,该 EE 还添加了 amazon.awscisco.nxos 集合以及 ansible-pylibssh python 包到此镜像中。

  1. 创建一个包含以下内容的 execution-environment.yml 文件。
execution-environment.yml
---
version: 3

images:
  base_image:
    name: ghcr.io/ansible/community-ansible-dev-tools:latest

dependencies:
  galaxy: requirements.yml
  python: requirements.txt

options:
  package_manager_path: /usr/bin/dnf5
  1. 使用相应的内容填充 requirements.txtrequirements.yml
requirements.txt
ansible-pylibssh==1.1.0
  1. 使用 ansible-builder 创建新的 EE。
ansible-builder build -t custom-ee:latest --prune-images -v3

构建此镜像后,您可以使用 ansible-navigator 来引用此镜像并运行您的 playbook!

从命令行使用 podman

如果您想将此镜像与 podman 配合使用,请使用以下命令运行容器。

podman run -it --rm \
 --cap-add=SYS_ADMIN \
 --cap-add=SYS_RESOURCE \
 --device "/dev/fuse" \
 --hostname=ansible-dev-container \
 --name=ansible-dev-container \
 --security-opt "apparmor=unconfined" \
 --security-opt "label=disable" \
 --security-opt "seccomp=unconfined" \
 --user=root \
 --userns=host \
 -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK \
 -v $HOME/.gitconfig:/root/.gitconfig \
 -v $PWD:/workdir \
 -v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK \
 ghcr.io/ansible/community-ansible-dev-tools:latest

注意

  • security-optcap-add 选项用于允许 podman 在容器中运行。
  • device 选项用于允许容器访问 /dev/fuse 设备。
  • userns=host 将默认用户帐户映射到容器中的 root 用户。
  • 此命令会将当前目录挂载到容器中的 /workdir
  • SSH 代理套接字也挂载到容器中,以允许 SSH 密钥转发。
  • 用户的 .gitconfig 挂载到容器中,以允许进行 git 操作。

签名 git 提交 (SSH)

如果 gitconfig 中的 user.signingkey 直接指向文件系统上的公钥,则该密钥可能在容器中不可用。

如果只预设一个密钥,则可以使用 ssh-add 命令在用户的 gitconfig 中检索密钥

~/.gitconfig
[gpg "ssh"]
    defaultKeyCommand = ssh-add -L

或者,可以在 gitconfig 中内联添加公钥

~/.gitconfig
[user]
  email = johnd@acme.com
  name = John Doe
  signingkey = key:: ssh-rsa ...

在自定义镜像上分层 ADT 和容器内容器支持

要使用自定义 EE 或其他容器镜像添加 Ansible Devtools 包和使用 podman 的容器内容器支持,您可以使用此存储库中的 final Containerfile。将 FROM 指令更新为指向您首选的镜像,并使用 podmandocker 构建它。

注意:容器内容器支持是在 podman 镜像 定义的帮助下添加的。有关更多信息,请阅读 如何在容器内使用 Podman