Я пытаюсь проверить, существует ли файл и создать резервную копию файла
tasks:
- name: Check the file existence
stat:
path: "{{item.file}}"
register: "{{item.name}}"
with_items:
- { name: shadow, file: /etc/shadow }
- { name: sudoers, file: /etc/sudoers }
- name: Backing up the /etc/shadow and /etc/sudoers
shell: cp -p "{{item.file}}" "{{item.file}}".$(date +%Y%m%d)
when: item.when.stat.exists
with_items:
- { file: /etc/shadow, when: "shadow" }
- { file: /etc/sudoers, when: "sudoers" }
ошибка: неустранимо: [c369hmx]: СБОЙ! => {"msg": "Сбой условной проверки" item.when.stat.exists ". Ошибка: ошибка при оценке условного (item.when.stat.exists): 'ansible .parsing.yaml.objects .AnsibleUnicode объект 'не имеет атрибута' stat '\ n \ nОшибка, по-видимому, была в' /home/m6080995/temproot/fileexis.yaml ': строка 16, столбец 7, но может \ n находиться в другом месте файла в зависимости от проблема с точным синтаксисом. \ n \ nОтличная строка: \ n \ n # - name: резервное копирование / etc / shadow и / etc / sudoers \ n - shell: cp -p \ "{{item.file} } \ "\" {{item.file}} \ ". $ (date +% Y% m% d) \ n ^ здесь \ nМы можем ошибаться, но похоже, что это может быть проблема с \ nmissing кавычками Всегда заключайте в скобки выражения шаблона, когда они \ n запускают значение. Например: \ n \ n with_items: \ n - {{foo}} \ n \ nДолжно быть записано как: \ n \ n with_items: \ n - \ "{ {foo}} \ "\ n"
Спасибо за ваше время. Теперь я изменил playbook, но получаю сообщение об ошибке
ошибка:
ОШИБКА! Поле 'l oop' должно иметь строковый тип, однако структура входящих данных имеет вид
Ошибка, по-видимому, была в /home/m6080995/temproot/fileexis.yaml: line 7, столбец 9, но может находиться в другом месте файла в зависимости от точной синтаксической проблемы.
Неправильная строка выглядит так:
tasks:
- name: Check the file existence
^ here