决策环境

注意

本节中的一些示例引用了集合中存储的规则手册。如果您有兴趣将您的事件驱动自动化打包到集合中,请参阅规则手册和集合部分。

决策环境是针对运行 Ansible Rulebook 任务而定制的执行环境。它们表示启动并运行规则手册进程的容器镜像,并包含运行规则手册所需的所有依赖项、集合和配置。

一个基本且最小的 decision_environment 包含在存储库的根目录中。这是构建您自己的良好起点。

ansible-builder build -f minimal-decision-environment.yml -t minimal-decision-environment:latest

这将构建一个名为minimal-decision-environment:latest的容器镜像,可以用作您自己的决策环境的基础。

让我们使用此决策环境运行一个规则手册,确保我们有一个包含 localhost 的本地清单,我们将使用它。

echo "localhost ansible_connection=local" > inventory

现在让我们使用此决策环境运行一个规则手册。

docker run -it --rm -v ./inventory:/tmp/inventory ansible-execution-env:latest ansible-rulebook -r ansible.eda.hello_events -i /tmp/inventory

在决策环境中使用您自己的规则手册和项目

最小的决策环境是一个良好的起点,但您可能希望向其中添加自己的规则手册和项目。

注意

请查看Ansible Builder 执行环境定义,了解如何向决策环境添加集合和依赖项的详细信息。

---
version: 3

images:
    base_image:
        name: 'minimal-decision-environment:latest'
dependencies:
    python:
        - pywinrm
    system:
        - iputils [platform:rpm]
    galaxy:
        collections:
            - name: my_namespace.my_awesome_collection
            - name: community.windows
            - name: ansible.utils
              version: 2.10.1

这显示了一个示例,您可能拥有自己的包含规则手册和 playbook 的集合,但需要将其与其他一些集合以及一些 Python 和系统依赖项结合起来。

您还可以使用 Builder 通过additional-build-steps 将您自己的规则手册和 playbook 添加到决策环境中,然后利用 Containerfile 命令 ADD 或 COPY 将文件放入环境中。

---
version: 3

images:
    base_image:
        name: 'minimal-decision-environment:latest'
dependencies:
    python:
        - pywinrm
    system:
        - iputils [platform:rpm]
    galaxy:
        collections:
            - name: community.windows
            - name: ansible.utils
              version: 2.10.1
additional_build_steps:
    prepend_builder:
        - 'RUN mkdir -p /opt/ansible/my_rulebooks'
        - 'COPY my_rulebook.yml /opt/ansible/my_rulebooks'

注意

container_init.cmd 是一个可选的覆盖,可用于覆盖容器启动时运行的默认命令。如果您希望运行 playbook 或规则手册而无需提供完整的命令行参数,这将很有用。它仍然可以通过向容器传递命令在运行时被覆盖。