ОШИБКА! в задании не обнаружено никаких действий. Это часто указывает имя модуля с ошибкой или неправильный путь к модулю [дубликат]

== сравнивает ссылки на объекты.

.equals() сравнивает значения String.

Иногда == дает иллюзии сравнения значений String, как в следующих случаях:

String a="Test";
String b="Test";
if(a==b) ===> true

Это связано с тем, что при создании любого строкового литерала JVM сначала ищет этот литерал в пуле строк, и если он найдет совпадение, эта же ссылка будет передана новой String. Из-за этого получаем:

(a == b) ===> true

                       String Pool
     b -----------------> "test" <-----------------a

Однако == не выполняется в следующем случае:

String a="test";
String b=new String("test");
if (a==b) ===> false

В этом случае для new String("test") оператор new String будет создан в куче, и эта ссылка будет указана на b, поэтому b будет дана ссылка на кучу, а не на String pool.

Теперь a указывает на String в пуле String, а b указывает на String в куче. Из-за этого мы получаем:

, если (a == b) ===> false.

                String Pool
     "test" <-------------------- a

                   Heap
     "test" <-------------------- b

Пока .equals() всегда сравнивает значение String, поэтому дает true в обоих случаях:

String a="Test";
String b="Test";
if(a.equals(b)) ===> true

String a="test";
String b=new String("test");
if(a.equals(b)) ===> true

Таким образом, использование .equals() всегда лучше.

10
задан techraf 21 December 2017 в 03:26
поделиться

1 ответ

Причина № 1

Вы используете более старую версию Ansible, у которой не было модуля, который вы пытаетесь запустить.

Как его проверить?

  1. Откройте список модулей документации модуля и найдите страницу документации для вашего модуля.
  2. Прочитайте заголовок в верхней части страницы - обычно это показывает версию Ansible в котором был введен модуль. Например: Новое в версии 2.2.
  3. Убедитесь, что вы используете указанную версию Ansible или позже. Run:
    ansible-playbook --version
    
    И проверьте вывод. Он должен показать что-то вроде: ansible-playbook 2.4.1.0

Причина №2

Вы попытались написать роль и поместить пьесу в my_role/tasks/main.yml .

Файл tasks/main.yml должен содержать только список задач. Если вы указали:

---
- name: Configure servers
  hosts: my_hosts
  tasks:
    - name: My first task
      my_module:
        parameter1: value1

Ansible пытается найти модуль действия с именем hosts и модуль действия с именем tasks. Это не делает, поэтому он выдает ошибку.

Решение: укажите только список задач в файле tasks/main.yml:

---
- name: My first task
  my_module:
    parameter1: value1

Причина № 3

Имя модуля действия написано с ошибкой.

Это довольно очевидно, но упускается из виду. Если вы используете неправильное имя модуля, например users вместо user, Ansible сообщит «никаких действий, обнаруженных в задаче».

Ansible был разработан как очень расширяемая система. У него нет ограниченного набора модулей, которые вы можете запустить, и он не может проверить «заранее» правописание каждого модуля действий.

Фактически вы можете написать и затем указать свой собственный модуль с именем qLQn1BHxzirz и Ansible должен это уважать.


Причина № 4

Вы пытаетесь выполнить модуль, не распределенный с Ansible.

Имя модуля действия верное, но это не стандартный модуль, распространяемый вместе с Ansible.

Если вы используете модуль, предоставляемый третьей стороной - поставщиком программного обеспечения или оборудования или другим модулем, открытым публично, вы должны сначала загрузить модуль и поместить его в соответствующий каталог.

Вы можете поместить его либо в подкаталог modules в учебнике, либо в общий путь.

Сильный внешний вид ANSIBLE_LIBRARY или аргумент командной строки --module-path.

Чтобы проверить какие пути действительны, запустите:

ansible-playbook --version

и проверьте значение:

настроенный путь поиска модуля =

Ansible версия 2.4 и выше должна содержать список путей.


Причина № 5

У вас действительно нет действий внутри задачи.

Задача должна иметь определенный модуль действия. Следующий пример недействителен:

- name: My task
  become: true
21
ответ дан techraf 15 August 2018 в 18:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: