is_ubuntu
is-ubuntu
Определяет, является ли целевой хост Ubuntu... контейнером или, возможно, локальным хостом.
Выполняемые шаги:
- Устанавливает факт is_ubuntu_localhost
- Проверяет, находитесь ли вы в контейнере или нет
- Устанавливает факт is_ubuntu_inside_container
- Проверяет, есть ли настройки прокси
:exclamation: Требования
Нет.
:abcd: Переменные роли
Переменная | Описание | Значение по умолчанию |
---|---|---|
is_force_lookup |
Поиск пользовательских дополнительных фактов не происходит, если они уже существуют. Это для принудительного поиска | no |
is_test_url_list |
Список URL для тестирования, чтобы обнаружить подключение к Интернету/доступность | [] |
:link: Зависимости
Нет.
:loudspeaker: Факты
Эта роль создает следующие факты, которые могут быть использованы другими ролями или плейбуками:
Факт | Описание |
---|---|
is_ubuntu_behind_proxy |
Версия, подписанная для текущей роли Ansible при выполнении (этот факт НЕ обновляется, если он присутствует, если только is_force_lookup не установлен в yes ) |
is_ubuntu_inside_container |
Истина, когда вы находитесь в контейнере. Это происходит, когда PID 1 не является init или systemd (этот факт НЕ обновляется, если он присутствует, если только is_force_lookup не установлен в yes ) |
is_ubuntu_localhost |
Истина, когда целевая машина роли является localhost (этот факт НЕ обновляется, если он присутствует, если только is_force_lookup не установлен в yes ) |
is_ubuntu_network_reachable |
Истина, когда все URL, переданные с is_test_url_list , доступны (по умолчанию также включает все URL из /etc/apt/sources.list ) |
is_ubuntu_url_reachable_list |
Список всех доступных URL |
is_ubuntu_url_unreachable_list |
Список всех недоступных URL |
:notebook: Пример плейбука
Вот пример того, как использовать эту роль в ваших плейбуках:
---
- hosts: servers
remote_user: ubuntu # необязательный (ваш удаленный пользователь)
gather_facts: yes # необязательный
roles:
- { role: itnok.is_ubuntu }
:microscope: Тестирование
Эта роль поддерживает тестирование с использованием Molecule для проверки ее функциональности в общем окружении.
Molecule НЕ нужен для использования роли, но необходим для тестирования на локальной установке или в CI. Пример использования Molecule для CI можно найти в действиях GitHub этого репозитория. Чтобы установить Molecule, пожалуйста, обратитесь к инструкциям в онлайн документации Molecule. Если все необходимые зависимости там присутствуют, все должно быть так же просто, как запустить:
$ python3 -m pip install --user "molecule[ansible,docker,lint]"
Тесты выполняются внутри контейнеров, созданных на лету для этой цели (чтобы быть максимально универсальными). По этой причине Molecule требует установленный Docker. Если Podman является предпочтительным альтернативным способом работы с контейнерами, необходимую команду для установки Molecule следует изменить следующим образом:
$ python3 -m pip install --user "molecule[ansible,podman,lint]"
Чтобы использовать Podman, драйвер, используемый Molecule, также следует изменить в файле molecule/default/molecule.yml
: строки #5-6 следует изменить следующим образом:
driver:
name: podman
Все тесты, помимо проверок оформления, линтинга и идемпотентности, можно запустить с помощью:
$ molecule test --parallel
(Использование необязательной опции --parallel
, запускающей тестовый набор, настоятельно рекомендуется, потому что тестирование на нескольких целевых контейнерах значительно сокращает время тестирования!)
Дополнительные тесты могут быть добавлены в плейбук molecule/default/verify.yml
, если возникнет такая необходимость.
:guardsman: Лицензия
MIT (узнать больше)
Detects whether the target Ubuntu host is... a container or eventually localhost (and more).
ansible-galaxy install itnok/ansible-role-is-ubuntu