gpt4 book ai didi

Ansible - playbook 调用另一个带有变量、标签和限制的 playbook

转载 作者:行者123 更新时间:2023-12-02 03:14:52 24 4
gpt4 key购买 nike

我有一本蓝绿色的部署手册。它依赖于某些变量来确定应用底层角色的主机。以下是示例角色之一:

- name: Remove current server from load balancer
hosts: 'tag_Name_{{server_name}}_production'
remote_user: ec2-user
sudo: true
roles:
- remove-load-balancer

我可以用指定的限制和标签来调用这个剧本,它工作得很好——但只适用于一种类型的服务器。例如,此命令将蓝绿色部署我们的服务服务器:
ansible-playbook blue.green.yml -i ec2.py -l tag_Name_services_production,tag_Name_services_production_old --skip-tags=restart,stop -e server_name=services -e core_repo=~/core

我想编写一个主要的蓝绿色剧本,它基本上运行几个剧本 - 首先用于 api 服务器,然后用于服务服务器。我尝试使用包含但似乎无法正确使用语法 - ansible 要么提示我的任务没有做任何事情,要么提示语法不正确:
- name: Blue green deploy to all production boxes.
hosts: localhost
tasks:
- include: blue.green.single.yml
hosts:
- tag_Name_api_production
- tag_Name_api_production_old
vars:
- server_name: api
skip-tags:
- restart
- stop

- include: blue.green.single.yml
hosts:
- tag_Name_services_production
- tag_Name_services_production_old
vars:
- server_name: services
skip-tags:
- restart
- stop

理想情况下,我可以这样称呼它:
ansible-playbook blue.green.yml -i ec2.py -e core_repo=~/core

有没有人成功做到这一点?如果是这样 - 我怎么能做到这一点?

最佳答案

这对你的情况有用吗?

- name: Blue green deploy to all production boxes.
hosts: [tag_Name_api_production, tag_Name_api_production_old]
tasks:
- include: blue.green.single.yml
vars:
- server_name: api
skip-tags:
- restart
- stop

- name: Blue green deploy to all production boxes.
hosts: [tag_Name_services_production, tag_Name_services_production_old]
tasks:
- include: blue.green.single.yml
vars:
- server_name: services
skip-tags:
- restart
- stop

关于Ansible - playbook 调用另一个带有变量、标签和限制的 playbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com