В последнее время я начал использовать Ansible, и мне нужна помощь в учебнике. Я пытаюсь получить детали устройства как параметр, а затем привязать к нему знак звезды, чтобы запустить команду оболочки. Например, если устройство находится в /etc/sda
, команда оболочки будет ls -l /dev/sda*
.Цепочка звездного знака в Ansible playbook
- name: Get Hitachi Devices device details
shell: lsscsi | grep HITACHI | awk '{print $6}'
register: hitachiDevice
- name: Check if the volume is partitioned
shell: ls -l "{{ hitachiDevice.rc }}"* | wc -l
failed_when: hitachiDevice.rc != 1
Здесь ошибка я получаю после выполнения сценария:
{
"changed": true,
"cmd": "ls -l \"0\"* | wc -l",
"delta": "0:00:00.027338",
"end": "2016-08-10 14:15:12.200415",
"failed": true,
"failed_when_result": true,
"rc": 0,
"start": "2016-08-10 14:15:12.173077",
"stderr": "ls: cannot access 0*: No such file or directory",
"stdout": "0",
"stdout_lines": [
"0"
],
"warnings": []
}
Любой знает, что это проблема, и как я могу это исправить?
Я ожидаю, что первая команда даст мне имя устройства ('/ etc/sda'), а вторая команда должна предоставить мне список, если разделы устройства ('/etc/sda,/etc/sda1,/etc/sda2'), и я просто хочу подсчитать строки вывода. Если количество строк не равно 0, то игровая книга должна остановиться с ошибкой. – Omri
Пожалуйста, проверьте содержимое переменной с помощью '- debug: var = hitachiDevice' после первой задачи - это сложная переменная, а не только строки. –
Готово. Я получил '' stdout_lines ': [ "/ dev/sdg" ] ' – Omri