使用动态清单通过 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
dev
和prd
目录下的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
我正在使用 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
dev
和prd
目录下的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