【问题标题】:How to use with_sequence in Ansible如何在 Ansible 中使用 with_sequence
【发布时间】:2021-04-27 14:20:29
【问题描述】:

我想通过我提供的价值计数来迭代它来运行 ansible 角色。

举例: 下面是 Ansible 角色 main.yml,我在其中 include 一个要执行的 yaml 文件,这个包含的 yaml 文件应该使用我的循环执行的次数有。

这是我使用with_sequence 模块的一小段代码。但是,如果您有任何其他建议多次运行create_db.yml 文件,请与我分享或如何循环使用我拥有的当前代码。

有人可以帮我解决这个问题吗?

---
# tasks file for create db
  - hosts: localhost
    become: yes
    tasks:
      - include: create_db.yml 
        with_sequence: count = 2

我在执行剧本时遇到错误 fatal: [localhost]: FAILED! => {"msg": "unrecognized arguments to with_sequence: [u'_raw_params']"}

【问题讨论】:

  • 你得到什么错误?这怎么不满足您的要求?同时,鉴于包含的名称,我有点希望循环提供例如db 的名称,因此宁愿是 `with_items: ['admin_db', 'user_db']。但是,由于您没有显示包含内容并且没有给出任何要求....这一切都归结为:您对这种情况感到满意吗?如果是,那么实际上没有问题。
  • 我在执行 play book 时收到 fatal: [localhost]: FAILED! => {"msg": "unrecognized arguments to with_sequence: [u'_raw_params']"} 这个错误。因为我想运行 create_db.yml 文件 2 次(根据我的计数),我观察到了这个错误并且无法循环这个
  • @Zeitounator,这里没有 with_items ......这是我运行 create_db.yml 剧本的实际代码
  • => count=2 即没有空格。考虑将其移至new loop syntax。您还应该使用include_tasks 代替尚未弃用的include

标签: loops ansible ansible-role


【解决方案1】:

如 cmets 中所述,在不更改任何参数的情况下两次运行同一个任务文件的用例尚不清楚。但是错误...

unrecognized arguments to with_sequence

... 表示指定count 的语法不正确。请注意=周围不能有空格,即count=2

    tasks:
      - include: create_db.yml 
        with_sequence: count=2

【讨论】:

  • 是的,我的错...实际上用例是,我想创建多个 EC2 实例,这些实例应该分布在 AWS 的 AZ 中。我尝试使用 count 模块,但它在同一个 AZ 中创建实例。所以我有逻辑来存储在第一次运行时选择的子网,并确保在第二次运行时没有选择同一个子网。我可以通过基于迭代执行 create_db.yml 文件来实现。
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 2018-11-02
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 2020-08-15
相关资源
最近更新 更多