Jinja — Ansible Playbook Завершается С Ошибкой: Нет Теста С Именем «Успех»

  • Автор темы Flaaashka
  • Обновлено
  • 22, Oct 2024
  • #1
;

У меня есть Ansible Playbook, который используется для настройки ВСЛ на моем ноутбуке с Windows, недавно пересобрав свой ноутбук, мне нужно было снова запустить playbook, однако он не работает со следующим сообщением:

 
 
 
 
 Name: Jinja2
Version: 2.8
Summary: A small but fast and easy to use stand-alone template engine 
written in pure python.
Home-page: http://jinja.pocoo.org/
Author: Armin Ronacher
Author-email: [email protected]
License: BSD
Location: /usr/lib/python2.7/dist-packages
Requires: MarkupSafe
 

контекст из плейбука это:

pip show jinja2

Выход ansible 2.2.1.0 config file = /mnt/c/source/richardslater/workstation-setup/wsl/plays/ansible.cfg configured module search path = Default w/o overrides is:

ansible --version

и install ok installed

dpkg-query -W -f='${Status}' aptitude | grep 'install ok installed'

и tasks: - name: check if aptitude is installed shell: dpkg-query -W -f='${Status}' aptitude | grep 'install ok installed' register: aptitude_installed failed_when: no changed_when: no - name: ensure aptitude is installed command: apt-get -y install aptitude warn=False when: aptitude_installed is success

The conditional check 'aptitude_installed is success' failed. The error was: no test named 'success' line 1 The error appears to have been in '/mnt/c/source/richardslater/workstation-setup/wsl/plays/wsl.yml': line 15, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem. The offending line appears to be: - name: ensure aptitude is installed ^ here

Я не совсем уверен, как это работало, либо так, либо что-то изменилось с тех пор, как я написал эту книгу, есть идеи, как это исправить?

#ансибль #джинджа

Flaaashka


Рег
03 Nov, 2019

Тем
70

Постов
198

Баллов
578
  • 25, Oct 2024
  • #2

Вы используете довольно старый ansible, возможно, стоит попробовать новый. Хотя тесты "удались" и "успех" должен быть и в 2.2.

Но главная проблема, я думаю, это

 when: sometest|success 
in your task. It makes test 2.2.1.0 совершенно бесполезно, это будет всегда when: sometest is success because aptitude отмечает все задачи как успешные.

Если вы не хотите останавливаться на задании, но все же хотите иметь представление о том, как оно прошло, вам следует использовать tasks: - name: Ensure aptitude is installed apt: name: aptitude state: present , not apt . С package you can both continue your playbook and inspect a real tasks results.

 

Whokblobe19


Рег
07 Dec, 2020

Тем
69

Постов
194

Баллов
559
  • 25, Oct 2024
  • #3

Я понятия не имею, как ваш код когда-то запускался и давал ожидаемый результат. command clause cannot be executed (as you found out from the error) and would anyway produce the reverse result you are expecting if I follow the underlying logic (install the package only when it is already installed). Moreover, your are in this simple case far from good ansible practice.

Вам следует избегать использования shell and when когда существует существующий модуль, который уже выполняет всю работу и управляет идемпотентностью за вас. В данном случае вы можете использовать агностик ignore_errors: true модуль или конкретный failed_when: no (что я предпочту в своем примере, поскольку ваша книга игр в любом случае ориентирована на установку Ubuntu на wsl и пакет debian/ubuntu).

ignore_errors: true

Вышеупомянутое просто установит failed_when: no unless it is already there in a simple easy single task.

 

Fedor_I


Рег
05 Apr, 2016

Тем
77

Постов
191

Баллов
606
  • 25, Oct 2024
  • #4

Я тоже получил эту ошибку и оказался здесь. Причина в том, что я использовал другую версию ansible на другом компьютере, поэтому я изменил синтаксис на true because I got warnings before. Now on this computer where I run version when: aptitude_installed is success очевидно, это вообще не работает, поэтому я вернулся к failed_when: no instead and now it works.

 

Serg_61


Рег
18 Sep, 2011

Тем
88

Постов
211

Баллов
681
Похожие темы Дата
Похожие темы
Веб-Сервисы Amazon. Можно Ли Разместить Кластер Ecs С Экземплярами P2 Или Другими Типами Графических Процессоров?
Каковы Плюсы И Минусы Azure Artifacts По Сравнению С Artifactory?
Непрерывная Интеграция — Остановка Выполнения Сборки Или Развертывания Bamboo Без Создания Исключения.
Развертывание — Как Развернуть Статический Веб-Сайт Из Общедоступного Репозитория Через Действия Github На Частном Веб-Сервере.
Запуск Параллельных Сборок Из Триггера Задания Конвейера Jenkins И Ожидание Того Же Задания В Другом Проекте
Поддерживает Ли Балансировщик Нагрузки F5 Casc (Конфигурация Как Код)?
Какие Решения Scm Существуют Для Управления Программным Обеспечением Мэйнфреймов?
Резервное Копирование. Как Тестировать Приложения Баз Данных В Средах Тестирования Qa?
Ansible — Существует Ли Система, Которая Автоматизирует Все (Версию Ос И Выше) Для Размещения Веб-Сайтов?
Запустить Контейнер, Если Демон Docker Или Хост-Система Перезапущены
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно