gpt4 book ai didi

automation - 使用 Ansible 创建任意数量的 DigitalOcean 液滴

转载 作者:行者123 更新时间:2023-12-03 15:01:13 26 4
gpt4 key购买 nike

当我使用 ansible 调用剧本时,我想创建任意数量的液滴。
例如:
我需要创建 10 个运行一些 python 代码的液滴。

$ ansible-playbook install_pyapp_commission_new.yml --extra-vars "number_of_droplets_to_create=10"

我尝试使用 with_sequence: count = X但您不能将其应用于角色或内部任务(据我所知)。我的剧本看起来像这样:
- name: Digital Ocean Provisioning
hosts: 127.0.0.1
gather_facts: false
connection: local
roles:
- { role: do_provision, do_droplet_number: "{{ number_of_droplets_to_create | default(01) }}" }

- name: Setting up application
gather_facts: true
user: root
hosts: do_instances
roles:
- { role: application, wait_time: 60 }

所以我将输入的液滴数量传递给 do_provisiondo_droplet_number因为 atm 我每次运行创建一个(这样我可以从 bash 并行运行 10 个,每个都有不同的数字,从而实现我的目标,但这是一个肮脏的解决方案)。

我想做这样的事情:
- name: Digital Ocean Provisioning
hosts: 127.0.0.1
gather_facts: false
connection: local
roles:
- { role: do_provision, do_droplet_number: "{{ item }}" }
with_sequence: count={{ number_of_droplets_to_create }}

但这是无效的。

最佳答案

这应该使用循环而不是 with_sequence 来工作。

它将循环转移到角色中,因为剧本不能包含“何时”。
当 do_droplet_number 为 0 时,需要“when”来防止创建液滴。

剧本

- name: list hosts
hosts: all
gather_facts: false

vars:
thiscount: "{{ mycount | default('0') }}"

roles:
- { role: do-provision, do_droplet_number: "{{ thiscount }}" }

角色/do-provision/task/main.yml
- name: display number
debug:
msg: "mycount {{ item }}"
loop: "{{ range(0, do_droplet_number|int) |list }}"
when: thiscount > 0

关于automation - 使用 Ansible 创建任意数量的 DigitalOcean 液滴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25505655/

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