Привет
У меня проблема с проверкой НЕ существующей папки с использованием словаря в Ansible:
---
- name: "check folder"
hosts: "myserver"
gather_facts: yes
remote_user: root
vars:
git_repos:
repo1:
git_repo_folder: /var/www/folder1
repo2:
git_repo_folder: /var/www/folder2
tasks:
- name: "1. Check that the folder exists"
stat:
path: "{{ item.value.git_repo_folder }}"
loop: "{{ lookup('dict', git_repos) }}"
register: check_folder
- name: "2. debug"
debug:
msg: '{{item.item.item.value.git_repo_folder}} exists'
with_items: "{{ check_folder.results }}"
when: not item.stat.exists
Если я пытаюсь запустить playbook, я получаю сообщение об ошибке:
FAILED! => {"failed": true, "msg": "The conditional check 'check_file_id.stat.exists == True' failed. The error was: error while evaluating conditional (check_file_id.stat.exists == True): 'dict' object has no attribute 'stat'\n\n
Попытался отладить:
- debug: var=check_folder:
ok: [myserver] => {
"check_folder": {
"changed": false,
"msg": "All items completed",
"results": [
{
"_ansible_ignore_errors": null,
"_ansible_item_label": {
"key": "repo1",
"value": {
"git_repo_folder": "/var/www/folder1"
}
},
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": false,
"failed": false,
"invocation": {
"module_args": {
"checksum_algorithm": "sha1",
"follow": false,
"get_attributes": true,
"get_checksum": true,
"get_md5": null,
"get_mime": true,
"path": "/var/www/folder1"
}
},
"item": {
"key": "repo1",
"value": {
"git_repo_folder": "/var/www/folder1"
}
},
"stat": {
"exists": false
}
},
{
"_ansible_ignore_errors": null,
"_ansible_item_label": {
"key": "repo2",
"value": {
"git_repo_folder": "/var/www/folder2"
}
},
"_ansible_item_result": true,
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": false,
"failed": false,
"invocation": {
"module_args": {
"checksum_algorithm": "sha1",
"follow": false,
"get_attributes": true,
"get_checksum": true,
"get_md5": null,
"get_mime": true,
"path": "/var/www/folder2"
}
},
"item": {
"key": "repo2",
"value": {
"git_repo_folder": "/var/www/folder2"
}
},
"stat": {
"exists": false
}
}
]
}
}
Где я не прав? Возможно ли использовать
not stat.exists
со списком переменных?
Спасибо за ответ!
UPD: или подскажите как пропускать(skip) таск если каталог существует, используя dict