Как мне установить роль Ansible Galaxy из tar.gz файл?

#ansible

#ansible

Вопрос:

Я видел несколько сайтов, которые объясняют, как установить роль из tar.gz файл с использованием ansible-galaxy, и все они, похоже, говорят одно и то же. В моем случае я загрузил следующий файл роли из ansible Galaxy :

dsglaser-cis_security-1.2.0.tar.gz

Затем я попытался установить роль:

 ansible-galaxy collection install dsglaser-cis_security-1.2.0.tar.gz
  

который выдает мне предупреждение :

[ПРЕДУПРЕЖДЕНИЕ]: — коллекция не была установлена успешно: не удалось получить данные с сервера API (https://galaxy.ansible.com/api /): Не удалось подключиться к galaxy.ansible.com на порту 443: [Ошибка 104] Сброс соединения одноранговым узлом

Это правильно, потому что этот компьютер не подключен и никогда не будет подключен к Интернету.

Еще одна попытка :

 ansible-galaxy install dsglaser-cis_security-1.2.0.tar.gz
  

выдает другое предупреждение:

[ПРЕДУПРЕЖДЕНИЕ]: — dsglaser-cis_security-1.2.0.tar.gz не удалось установить успешно: указанный путь к ролям существует и не является каталогом.

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

Я не делаю это от имени root… Версия Ansible 2.8.13

Только что обнаружил, что команда

 ansible-galaxy install dsglaser-cis_security-1.2.0.tar.gz -p ./bla
  

работает, но только от имени root. И это не то, чего я хочу…

Что я делаю не так?

Комментарии:

1. Какую версию ansible вы используете? У меня 2.9.11, и установка из подобного архива tar, похоже, просто работает.

2. Обновлено новой информацией

Ответ №1:

Я некоторое время бился головой об стену над этим. Я обнаружил, что коллекции, которые я пытаюсь установить, имеют зависимости, которые не включены в tar.gz файл.

Это заставляет Galaxy перейти к загрузке файлов, которые не найдены.

Способ обойти это — использовать другую машину с ansible (2.10 ) и перенести файлы на другую.

После установки ansible на компьютер с выходом в Интернет используйте следующую команду ansible-galaxy collection загрузить {{ название коллекции, если в качестве разделителя используется пробел в нескольких файлах }}, т.е.

 ansible-galaxy collection download cisco.ios cisco.asa
  

Это создаст папку в вашем текущем рабочем каталоге с tar.gz коллекции и ее зависимостей, а также файла requirements.yml.

Примечание: в случае с файлом requirements.yml, если вы повторно запустите команду загрузки, она перезапишет это, поэтому, если у вас несколько коллекций, используйте команду из одной строки выше.

Затем остается только скопировать эту папку на автономный сервер ansible (2.9 ), вставить компакт-диск в этот каталог и запустить:

 ansible-galaxy collection install -r requirements.yml
  

Качается твой дядя.
Я надеюсь, что это сэкономит кому-то время.
Спасибо за этот пост на reddit на ту же тему
https://www.reddit.com/r/ansible/comments/lh1do0/ansible_newbie_trying_to_install_an_ansible /

Ответ №2:

AFAIK, установка из архивов никогда не поддерживалась для ролей, но поддерживалась для коллекций.

Для ролей вы застряли с установкой по URL-адресам git.

Для меня одного этого достаточно, чтобы избегать использования старых автономных ролей, тем более что их поддержка в Galaxy минимальна, никаких новых функций не добавляется (например, установка из архивов tar).