Я пишу сборник пьес для обновления ios нескольких коммутаторов, и большинство его частей работает, за исключением проверки на отсутствие флэш-памяти. Прежде всего, я хочу проверить, достаточно ли свободного места на флэш-памяти перед копированием изображения.
Я пытался использовать модуль сбора фактов, но он не работает так, как я ожидал:
из собранных фактов я вижу это:
"ansible_net_filesystems_info": {
"flash:": {
"spacefree_kb": 37492,
"spacetotal_kb": 56574
Вот чек, который я хочу сделать:
fail:
msg: 'This device does not have enough flash memory to proceed.'
when: "ansible_net_filesystems_info | json_query('*.spacefree_kb')|int < new_ios_filesize|int"
Проведя некоторые исследования, я понимаю, что любое значение, возвращаемое шаблоном jinja2, будет строкой, поэтому моя проверка не удалась:
Передача целочисленной переменной в задачу без потери целочисленного типа
Решение, предложенное в ссылке, мне кажется, не работает даже с ansible 2.7.
Затем я прибегнул к сохранению результатов 'dir' в регистре и попытался использовать regex_search, но, похоже, не смог получить правильный синтаксис.
(похоже на это:
AnSible regex_findall несколько строк )
"stdout_lines": [
[
"Directory of flash:/",
"",
" 2 -rwx 785 Jul 2 2019 15:39:05 +00:00 dhcp-snooping.db",
" 3 -rwx 1944 Jul 28 2018 20:05:20 +00:00 vlan.dat",
" 4 -rwx 3096 Jul 2 2019 01:03:26 +00:00 multiple-fs",
" 5 -rwx 1915 Jul 2 2019 01:03:26 +00:00 private-config.text",
" 7 -rwx 35800 Jul 2 2019 01:03:25 +00:00 config.text",
" 8 drwx 512 Apr 25 2015 00:03:16 +00:00 c2960s-universalk9-mz.150-2.SE7",
" 622 drwx 512 Apr 25 2015 00:03:17 +00:00 dc_profile_dir",
"",
"57931776 bytes total (38391808 bytes free)"
]
]
Может ли кто-нибудь дать некоторое представление об этой, казалось бы, простой задаче? Я просто хочу, чтобы '38391808' было целым числом из приведенного выше примера (или любого другого предложения). Я довольно новичок в ANSIBLE.
Заранее спасибо.