gpt4 book ai didi

python - 有没有办法在循环 Ansible 剧本中的角色时设置环境变量?

转载 作者:行者123 更新时间:2023-12-04 19:30:12 24 4
gpt4 key购买 nike

我需要遍历 Ansible 角色并保存迭代的索引。

我的目标是每次迭代都在 my-role 中使用数字(在本例中为 INDEX)。我的角色执行其他剧本,我需要每次迭代的 INDEX 值。我想在另一个 ansible-playbook 中使用该索引。所以我的计划是设置一个环境变量来从其他 playbook 中读取。

这是我的代码:

- name: my-role
with_sequence: 'start=0 end={{ number_of_users|int }}'
include_role:
name: my-role
vars:
user_name: '{{ user_temp[item|int] }}'
queue_name: '{{ queue_temp[item|int] }}'
lineinfile:
dest: "/etc/environment"
state: present
line: 'export INDEX=[item|int]'

显然我不能同时做两个陈述。

错误信息是:

ERROR! conflicting action statements: include_role, lineinfile



有没有办法在循环角色时设置环境变量?

最佳答案

Is there a way to set an environment variable while looping over a role?



是的,使用 apply: include_role: 的选项
- with_sequence: start=0 end=3
include_role:
name: my-role
apply:
environment:
INDEX: '[{{item}}]'

顺便说一句,即使 ansible 让你跑 lineinfile除了该角色,只需在 /etc/environment 中输入一个条目极不可能自动将该环境变量公开给角色。这将要求为每个任务建立的每个 ssh 连接实际上来自 /etc/environment ,这可能会发生,但当 ansible 为您提供 environment: 时,指望它是不明智的。明确设计用于执行此操作的指令。

关于python - 有没有办法在循环 Ansible 剧本中的角色时设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55590958/

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