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. Коллекции вместе с ссылками на их источник перечислены ниже.

  • значок chocolatey.chocolatey Ansible Galaxy
  • значок community.general Ansible Galaxy
  • значок google.cloud Ansible Galaxy

Пример плейбука

С установленными зависимостями, вам нужно просто добавить роль в ваш основной плейбук. Роль обрабатывает поведение become, так что вы можете просто добавить роль в ваш плейбук, не беспокоясь о командах, которые не следует выполнять от имени root:

- hosts: all
  roles:
    - professormanhattan.java

Если вы интегрируете эту роль в уже существующий плейбук, возможно, будет разумно скопировать требования, указанные в pyproject.toml и requirements.yml, в их соответствующие файлы в корне вашего плейбука, чтобы вам не пришлось беспокоиться о установке одного набора требований во время будущего использования. Обратите внимание, что зависимости из pyproject.toml можно перенести в более традиционный requirements.txt, если это то, что вы в настоящее время используете для отслеживания зависимостей Python.

Пример из реальной жизни

Вы можете найти пример плейбука, который включает в себя эту роль в нашем основном плейбуке (также известный как Gas Station). Плейбук является отличным примером для тех, кто изучает использование Ansible. Он также включает в себя много хорошо продуманных инструментов сборки, которые могут оценить более опытные пользователи Ansible. А людям, которым безразличен Ansible, он тоже может подойти, поскольку позволяет больше или меньше превратить ваш компьютер (и сеть) в идеальную среду для разработки. В конце концов, это замечательный проект, о котором должны знать разработчики!

Вклад

Мы приветствуем ваш вклад, вопросы и предложения по новым функциям! Не стесняйтесь проверить страницу вопросов. Если вы хотите внести вклад, пожалуйста, ознакомьтесь с руководством по внесению вклада.

Спонсорство

Дорогой замечательный человек,

Я создаю проекты с открытым исходным кодом из любви. Хотя у меня есть работа, жилье и столько фаст-фуда, сколько я могу осилить, было бы очень приятно, если бы сообщество оценило что-то, на что я потратил много времени и денег. Пожалуйста, подумайте о том, чтобы поддержать меня! Кто знает? Возможно, я смогу уволиться с работы и заниматься открытым исходным кодом на постоянной основе.

С уважением,

Брайан Залевски

Спонсоры Open Collective Спонсоры GitHub Patreon

Партнеры

Ниже вы найдете список услуг, которые мы используем и которые предлагают специальные условия для регистрации на их сервисах через наши специальные ссылки:

MailChimp Значок цифрового океана

Лицензия

Copyright © 2020-2021 Megabyte LLC. Этот проект лицензирован под MIT.

Установить
ansible-galaxy install ProfessorManhattan/ansible-java
Лицензия
other
Загрузки
1197
Владелец
Often imitated, never duplicated