【发布时间】:2019-12-27 01:07:12
【问题描述】:
我正在尝试编写一个 ansible 脚本,该脚本在同一个 mongo 服务器上的多个 db 上的多个集合上配置相同的 id。如何运行 with_items $n 次?
集合是已知的,并且 MongoDbs 配置了相同的名称
我最初尝试了一些使用 with_items 的方法。我想我应该能够使用 with_nested 但它似乎不喜欢我如何将我的 $n 格式化为一个列表。
- set_fact:
mongo_list: "{{range(1, {{ number_devsims }} + 1) | list}}"
- name: Updating simid
command: "mongo \"{{ mongo_db_name }}-{{ item[1] }}\" --eval 'db.{{ item[0] }}.update({}, {$set : {simid : \"{{ devsim_eng_simid }}\"}})'"
with_nested:
- ['engines', 'servers', 'simulations']
- "{{ mongo_list}}"
理想情况下,我希望能够更新每个 mongo 的所有集合。比如
- set_fact:
mongo_list: [1, 2]
TASK [devsim_data : Updating simid] *********************************************************************************
Wednesday 21 August 2019 10:42:51 -0700 (0:00:07.602) 0:00:37.450 ******
[WARNING]: The loop variable 'item' is already in use. You should set the `loop_var` value in the `loop_control`
option for the task to something else to avoid variable collisions and unexpected behavior.
changed: [eco] => (item=['engines', 1])
changed: [eco] => (item=['engines', 2])
changed: [eco] => (item=['servers', 1])
changed: [eco] => (item=['servers', 2])
changed: [eco] => (item=['simulations', 1])
changed: [eco] => (item=['simulations', 2])
我的 set_fact 似乎遇到的错误是
TASK [devsim_data : set_fact] ***************************************************************************************
Wednesday 21 August 2019 10:50:40 -0700 (0:00:00.066) 0:00:17.668 ******
fatal: [eco]: FAILED! => {"msg": "template error while templating string: expected token ':', got '}'. String: {{range(1, {{ number_devsims }} + 1) | list}}"}
【问题讨论】:
标签: ansible