community-ansible-dev-tools¶
Ansible 开发工具 (ADT) 的容器镜像。
此镜像基于 Fedora minimal 构建,并通过 podman
支持容器内容器。
使用的当前版本可以在用于基础层的 execution-environment.yml
文件中找到。
安装¶
使用方法¶
将其用作 VS Code Dev Container¶
Dev Containers 为您提供 VS Code 中的容器化开发环境。有关它们是什么以及如何使用它们的详细信息,请参阅 在容器内开发。
此镜像可用作 Dev Container 的镜像,您可以在其中构建和使用 Ansible 内容。
此存储库附带一个示例 .devcontainer 目录
,其中包含 2 个子目录 - podman
和 docker
,每个子目录都有自己的 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.aws
和 cisco.nxos
集合以及 ansible-pylibssh
python 包到此镜像中。
- 创建一个包含以下内容的
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
- 使用相应的内容填充
requirements.txt
和requirements.yml
。
- 使用
ansible-builder
创建新的 EE。
构建此镜像后,您可以使用 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-opt
和cap-add
选项用于允许podman
在容器中运行。device
选项用于允许容器访问/dev/fuse
设备。userns=host
将默认用户帐户映射到容器中的 root 用户。- 此命令会将当前目录挂载到容器中的
/workdir
。 - SSH 代理套接字也挂载到容器中,以允许 SSH 密钥转发。
- 用户的
.gitconfig
挂载到容器中,以允许进行 git 操作。
签名 git 提交 (SSH)¶
如果 gitconfig
中的 user.signingkey
直接指向文件系统上的公钥,则该密钥可能在容器中不可用。
如果只预设一个密钥,则可以使用 ssh-add
命令在用户的 gitconfig
中检索密钥
或者,可以在 gitconfig
中内联添加公钥
在自定义镜像上分层 ADT 和容器内容器支持¶
要使用自定义 EE 或其他容器镜像添加 Ansible Devtools 包和使用 podman 的容器内容器支持,您可以使用此存储库中的 final Containerfile。将 FROM
指令更新为指向您首选的镜像,并使用 podman
或 docker
构建它。
注意:容器内容器支持是在 podman 镜像 定义的帮助下添加的。有关更多信息,请阅读 如何在容器内使用 Podman。