#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).