有没有一个工具可以将 ansible-playbook 转换为 Dockerfile?

ass*_*100 6 ansible docker dockerfile

我有一个包含 1000 多行的 ansible-playbook 来构建我的虚拟机,我想构建一个具有相同项目结构、依赖项、用户、权限等的 docker 镜像。

例如,此代码将转换为“RUN pip3 install requests jsonschema ...”

  - name: Install pip3 dependencies
    pip:
      executable: pip3
      name:
        - requests
        - jsonschema
        ...
Run Code Online (Sandbox Code Playgroud)

fer*_*rdy 0

乍一看,拥有 1000 多行的 Ansible 剧本似乎有点奇怪。它应该更多地分为角色、配置等,这样您就可以更好地维护和控制 ansible playbook 的目标状态。

其次,我怀疑是否会自动解决您的问题。我能想到的是针对您的图像运行剧本,甚至在您的图像中运行剧本,而不是“docker保存”它。

当您在其上运行 ansible-playbook 时,这可能是更快地实现拥有与虚拟机状态相同的 docker 映像的目标的选项。

当您选择一个简单的 docker 基础镜像来覆盖您的 ansible 依赖项时,您可以提取特定的 playbook 逻辑并将其放入 dockerfile 中的 RUN 表达式中,因此,将您的 playbook 的大象切成由您的 ansible 覆盖的更小的部分脚本编写。

我会针对 docker 容器运行 ansible,然后保存容器状态并释放映像。