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
. Эти зависимости настроены так, что запускаются только один раз на плейбук. Если в ваш плейбук добавлено более одной нашей роли с общими зависимостями, установка зависимостей будет пропущена после первого запуска. Некоторые из наших ролей также используют вспомогательные роли напрямую из файлов задач, что помогает поддерживать наш основной плейбук (Газовая Станция) в чистоте.
Файл requirements.yml
содержит полный список зависимостей Ansible Galaxy, необходимых для этой роли (т.е. meta/main.yml
зависимости ролей, вспомогательные роли, коллекции и др.). Для вашего удобства, ниже приведен список зависимостей ролей с кратким описанием.
role_dependencies
Коллекции Galaxy
Эта роль зависит от нескольких коллекций Ansible Galaxy. Коллекции вместе со ссылками на их источник указаны ниже.
Пример плейбука
С установленными зависимостями все, что вам нужно сделать, это добавить роль в ваш основной плейбук. Роль обрабатывает поведение become
, поэтому вы можете просто добавить роль в ваш плейбук, не беспокоясь о командах, которые не должны выполняться от имени администратора:
- hosts: all
roles:
- professormanhattan.java
Если вы интегрируете эту роль в существующий плейбук, то будет целесообразно скопировать требования, указанные в pyproject.toml
и requirements.yml
, в соответствующие файлы в корне вашего плейбука, чтобы вам не пришлось беспокоиться об установке одного набора требований в будущем. Обратите внимание, что зависимости в pyproject.toml
могут быть перенесены в более традиционный requirements.txt
, если вы в настоящее время используете его для отслеживания зависимостей Python.
Пример из реальной жизни
Вы можете найти пример плейбука, который включает эту роль, в нашем основном плейбуке (также известном как Газовая Станция). Этот плейбук является отличным примером для тех, кто учится использовать Ansible. Он также включает в себя много хорошо продуманных инструментов сборки, которые могут оценить более продвинутые пользователи Ansible. А люди, которым не интересен Ansible, также могут извлечь из него выгоду, поскольку он позволяет превратить ваш компьютер (и сеть) в идеальную среду для разработки. В конце концов, это потрясающий проект, о котором должны знать разработчики!
Вклад
Вклады, проблемы и запросы на функции приветствуются! Не стесняйтесь проверять страницу проблем. Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с руководством по вкладам.
Спонсорство
Дорогой замечательный человек,
Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, жилье и столько же фастфуда, сколько я могу съесть, было бы здорово получить признание от сообщества за нечто, на что я потратил много времени и денег. Пожалуйста, подумайте о поддержке меня! Кто знает? Возможно, мне удастся уволиться с работы и публиковать открытый код на полную ставку.
С уважением,
Брайан Залевски
Партнеры
Ниже вы найдете список услуг, которые мы используем и которые предлагают специальные льготы за регистрацию через наши специальные ссылки:
Лицензия
Авторское право © 2020-2021 Megabyte LLC. Этот проект имеет лицензию MIT.
Installs Java on almost any platform
ansible-galaxy install megabyte-labs/ansible-java