使用动态清单通过 Ansible 进行多阶段部署

Multistage deployment with Ansible using Dynamic inventory

我正在使用 AWS 动态清单脚本作为 ansible 描述 here 根据它们的标签提取我的 EC2 实例的一个子集。我想设置一个多阶段环境,在其中我可以使用此动态清单脚本 运行 我在 DEV 或 PRD 上的剧本。

我的项目目录设置为:

ansible.cfg
inventories/
  -- dev/
    -- ec2.ini
    -- group_vars/
    -- host_vars
    -- inventory
  -- prd/
    -- ec2.ini
    -- group_vars/
    -- host_vars
    -- inventory
playbooks/
  -- playbook1.yml
  -- playbook2.yml
  -- playbook3.yml
roles/
site.yml

devprd目录下的inventory文件是dynamic inventory script.

我已将每个 ec2.ini 文件设置为基于 AWS 标签为开发或 prd 环境创建动态清单。

如果我尝试 运行 ansible-playbook -i dev site.yml 我得到一个错误:[WARNING]: Unable to parse /home/ansibleadmin/dev_playbook/dev as an inventory source

此方法应该适用于静态库存——是否出于某种原因不适用于动态库存?实现这一目标的正确方法是什么?

您收到警告:

[WARNING]: Unable to parse /home/ansibleadmin/dev_playbook/dev as an inventory source

根据您在上面发布的 "project directory" 树,警告消息 /home/ansibleadmin/dev_playbook/dev 中的目录在您的机器上不存在。


使用相对路径的正确命令(在 playbook 目录中)是:

ansible-playbook -i inventories/dev site.yml

使用绝对路径的正确命令是:

ansible-playbook -i /home/ansibleadmin/dev_playbook/inventories/dev site.yml