Я пытаюсь выполнить API POST на основе условия when для списка пользователей with_item. Условие when берется из API GET, а затем сохраняется как переменная отладки.
Проблема: Кажется, переменная отладки не повторяется должным образом, и задачи API POST следуют только за первым результатом. Это приводит либо к попытке выполнить POST для всех элементов в списке with_items, либо к пропуску их всех.
Я не понимаю, создает ли каждый запрос "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}}"