loops - 如何在迭代 with_item 调试列表时基于传递 when 条件执行 Ansible 任务?
问题描述
我正在尝试根据 with_item 用户列表的 when 条件执行 API POST。when 条件从 API GET 收集,然后存储为调试变量。
问题:调试变量似乎没有正确迭代,API POST 任务仅遵循第一个结果。这导致要么尝试对 with_items 列表中的所有项目执行 POST,要么全部跳过它们。
我不明白每个“request_ad_user”是否正在创建一个新变量,以及它们如何在“何时”条件下迭代。我错过了什么?
这是我的代码:
- name: Add a users to univention AD server.
hosts: localhost
tasks:
- name: Include user to add as variable
include_vars:
file: users.yaml
name: users
- name: Check if AD users exist (object DN)
uri:
url: https://10.10.10.10/univention/udm/users/user/uid%3D{{item.username}}%2Ccn%3Dusers%2Cdc%3Dcybertax%2Cdc%3Dcso%2Cdc%3Dcom
user: admin
password: "{{users.adminpw}}"
validate_certs: no
return_content: yes
status_code: 200,404
method: GET
timeout: 10
with_items:
- "{{users.user}}"
register: request_ad_user
- name: debug univention user object DN request
debug:
var: request_ad_user
- name: Add AD user accounts
uri:
url: https://10.10.10.10/univention/udm/users/user/
user: admindh
password: "{{users.vcenterPassword}}"
validate_certs: no
return_content: yes
status_code: 201
method: POST
body: "{\"uuid\": \"string\", \"uri\": \"https://10.104.8.110/univention/udm/users/user/uid={{item.username}},dc=cybertax,dc=cso,dc=com\", \"options\": {\"pki\": false}, \"policies\": {\"pol
body_format: json
when:
- request_ad_user.results[0].status == 404
with_items:
- "{{users.user}}"
解决方案
尝试添加一个循环索引,并在when
子句中使用该索引:
- name: Add AD user accounts
uri:
url: https://10.10.10.10/univention/udm/users/user/
user: admindh
password: "{{users.vcenterPassword}}"
validate_certs: no
return_content: yes
status_code: 201
method: POST
body: "{\"uuid\": \"string\", \"uri\": \"https://10.104.8.110/univention/udm/users/user/uid={{item.username}},dc=cybertax,dc=cso,dc=com\", \"options\": {\"pki\": false}, \"policies\": {\"pol
body_format: json
when:
- request_ad_user.results[ndx].status == 404
with_items:
- "{{users.user}}"
loop_control:
index_var: ndx
推荐阅读
- javascript - 如何检测浏览器是 Internet Explorer 还是 Microsoft Edge,如果是,将其重定向到另一个网站?
- obiee - obiee 11g 使用目录管理器提取分析的布局和视图
- vba - 如何让 SharePoint 表链接到通过 VBA 访问正确的列类型?
- automation - AHK 的自动点击器,仅在我按 F9 时单击并按住控件
- javascript - 使用带有导航标签的 getElementsByTagName
- r - 将 lapply (或任何替代方法)与 data.table 一起使用以一次生成多个列
- python - Anaconda 总是安装 Python 3.7
- swift - 无法摆脱 UIviewcontroller 标头
- javascript - 遍历Javascript中的目录结构,每次点击都有回调
- python - 如何将计算列添加到熊猫列中的Dataframe计数频率