java
Java
Создано Megabyte Labs
Роль Ansible, которая устанавливает Java на почти любой платформе
Содержание
- Обзор
- Функции
- Быстрый старт
- Поддерживаемые операционные системы
- Зависимости
- Пример плейбука
- Вклад
- Лицензия
Обзор
Этот репозиторий является домом роли Ansible, которая устанавливает Java на почти любой платформе. Java — это объектно-ориентированный язык программирования, который разработан с минимальным количеством зависимостей.
Функции
Обеспечивает установку Java:
- Устанавливает Java с помощью Chocolatey на Windows
- Обеспечивает установку переменной
JAVA_HOME
- Устанавливает Java на macOS, Linux и Windows
- Добавляет Java в
PATH
Оптимизация для Windows:
- Убирает папку Java из меню "Пуск" на Windows
Быстрый старт
Хотите установить Java без использования Ansible? Просто выполните следующую команду в зависимости от вашей операционной системы:
Linux/macOS:
curl -sS https://install.doctor/java | bash
Windows:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.doctor/java?os=win'))
Важно: Перед запуском вышеуказанных команд желательно напрямую перейти по URL, чтобы убедиться, что код безопасен. Мы уверены в его безопасности, но прежде чем запускать любой скрипт на вашем компьютере, вам стоит его проверить.
Вы также можете ознакомиться с Install Doctor. Это приложение, которое мы создали, может установить любую роль Ansible с помощью одной команды. У него есть и другие полезные функции, такие как возможность установки бинарных файлов без необходимости ввода пароля. Однако, если вы хотите интегрировать эту роль в Ansible плейбук (и настроить параметры), продолжайте читать ниже.
Поддерживаемые операционные системы
Таблица ниже показывает операционные системы, на которых мы тестировали эту роль. Она автоматически генерируется с использованием тестов Ansible Molecule, расположенных в папке molecule/
. Существует логика CI, которая автоматически обрабатывает тестирование Windows, macOS, Ubuntu, Fedora, CentOS, Debian и Archlinux. Если ваша операционная система не указана, но является вариантом одной из систем, которые мы тестируем (например, система на базе Debian или RedHat), возможно, роль все равно будет работать.
Семейство ОС | Версия ОС | Статус | Идемпотентность | Тестировалось на |
---|
Что означает идемпотентность? Идемпотентность означает, что если вы запустите эту роль дважды подряд, то во второй раз изменений в системе не произойдет.
Мы потратили много времени на совершенствование наших конфигураций CI и инструментов сборки. Если вы хотите узнать больше о том, как мы улучшили наш процесс, вам может быть интересно ознакомиться с нашими обычными файлами Ansible и документацией Ansible. Ознакомьтесь с руководством CONTRIBUTING.md для получения дополнительной информации.
Зависимости
Большинство наших ролей зависит от коллекций Ansible Galaxy. Некоторые из наших проектов также зависят от других ролей и коллекций, опубликованных на Ansible Galaxy. Прежде чем запустить эту роль, вам нужно будет установить зависимости коллекций и ролей, а также зависимости Python, выполнив:
if type poetry &> /dev/null; then poetry install --no-root; else pip3 install -r .config/assets/requirements.txt; fi
ansible-galaxy install -r requirements.yml
Если вы новичок в Ansible и не против, чтобы также были установлены требования разработки, вы можете просто выполнить bash .config/scripts/start.sh
. Это легкий способ убедиться, что все работает правильно.
Python
Хотя единственным инструментом, необходимым для выполнения этого плейбука на стандартной машине, является Ansible (пакет Python), мы включаем несколько других зависимостей Python, необходимых для специальных случаев использования и разработки. В таблице ниже указаны эти пакеты:
Пакет | Описание | Требуется |
---|---|---|
ansible | Система управления конфигурацией, позволяющая удаленно настраивать компьютеры | ✔️ |
docker | Позволяет настраивать Docker-контейнеры с помощью Ansible | ✔️ |
python-vagrant | Необходим для настройки Vagrant ВМ | ✔️ |
pywinrm | Необходим для настройки Windows-машин, использующих WinRM | ✔️ |
ansible-lint | Инструмент для линтинга Ansible файлов | |
ansibler | Пользовательский инструмент для генерации расширенной документации (например, генерирует таблицу совместимости и другие таблицы) | |
black | Автоформататор файлов Python, включенный на случай, если проект использует тестовые скрипты на Python | |
blocklint | Инструмент линтинга, который предотвращает определенные слова от появления в кодовой базе | |
flake8 | Линтер Python, который сообщает о синтаксических и стильных ошибках в Python | |
mod-ansible-autodoc | Пользовательская версия ansible-autodoc, которая позволяет нам генерировать документацию на основе комментариев в YAML файлах роли | |
molecule | Тестовая среда для Ansible | |
molecule-docker | Плагин Molecule для настройки Docker-контейнеров | |
molecule-vagrant | Плагин Molecule для настройки Vagrant ВМ | |
pre-commit-hooks | Набор инструментов, полезных для линтинга | |
proselint | Линтер для улучшения английского языка (используется для улучшения документации) | |
yamllint | Линтер для YAML файлов, который обеспечивает правильный синтаксис и стиль |
Роли Galaxy
Хотя большинство наших ролей не имеют зависимостей, есть случаи, когда другая роль должна быть установлена, прежде чем логика сможет продолжится. В начале плейбука будут работать зависимости ролей Ansible Galaxy, указанные в meta/main.yml
. Эти зависимости настроены так, чтобы запускаться только один раз за плейбук. Если вы включите более одной нашей роли в ваш плейбук, которые имеют общие зависимости, установка зависимостей будет пропущена после первого запуска. Некоторые наши роли также используют вспомогательные роли непосредственно из файлов задач, что помогает поддерживать наш основной плейбук (Gas Station) в сухом виде.
Файл requirements.yml
содержит полный список зависимостей Ansible Galaxy, необходимых для этой роли (т.е. зависимости роли meta/main.yml
, вспомогательные роли, коллекции и т.д.). Для вашего удобства, ниже приведен список зависимостей ролей с краткими описаниями:
role_dependencies
Коллекции Galaxy
Эта роль зависит от нескольких коллекций Ansible Galaxy. Коллекции вместе с ссылками на их источник перечислены ниже.
Пример плейбука
С установленными зависимостями, вам нужно просто добавить роль в ваш основной плейбук. Роль обрабатывает поведение become
, так что вы можете просто добавить роль в ваш плейбук, не беспокоясь о командах, которые не следует выполнять от имени root:
- hosts: all
roles:
- professormanhattan.java
Если вы интегрируете эту роль в уже существующий плейбук, возможно, будет разумно скопировать требования, указанные в pyproject.toml
и requirements.yml
, в их соответствующие файлы в корне вашего плейбука, чтобы вам не пришлось беспокоиться о установке одного набора требований во время будущего использования. Обратите внимание, что зависимости из pyproject.toml
можно перенести в более традиционный requirements.txt
, если это то, что вы в настоящее время используете для отслеживания зависимостей Python.
Пример из реальной жизни
Вы можете найти пример плейбука, который включает в себя эту роль в нашем основном плейбуке (также известный как Gas Station). Плейбук является отличным примером для тех, кто изучает использование Ansible. Он также включает в себя много хорошо продуманных инструментов сборки, которые могут оценить более опытные пользователи Ansible. А людям, которым безразличен Ansible, он тоже может подойти, поскольку позволяет больше или меньше превратить ваш компьютер (и сеть) в идеальную среду для разработки. В конце концов, это замечательный проект, о котором должны знать разработчики!
Вклад
Мы приветствуем ваш вклад, вопросы и предложения по новым функциям! Не стесняйтесь проверить страницу вопросов. Если вы хотите внести вклад, пожалуйста, ознакомьтесь с руководством по внесению вклада.
Спонсорство
Дорогой замечательный человек,
Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, жилье и столько фаст-фуда, сколько я могу осилить, было бы очень приятно, если бы сообщество оценило что-то, на что я потратил много времени и денег. Пожалуйста, подумайте о том, чтобы поддержать меня! Кто знает? Возможно, я смогу уволиться с работы и заниматься открытым исходным кодом на постоянной основе.
С уважением,
Брайан Залевски
Партнеры
Ниже вы найдете список услуг, которые мы используем и которые предлагают специальные условия для регистрации на их сервисах через наши специальные ссылки:
Лицензия
Copyright © 2020-2021 Megabyte LLC. Этот проект лицензирован под MIT.
Installs Java on almost any platform
ansible-galaxy install ProfessorManhattan/ansible-java