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

  • коллекция chocolatey.chocolatey на Ansible Galaxy
  • коллекция community.general на Ansible Galaxy
  • коллекция google.cloud на Ansible Galaxy

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

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

- hosts: all
  roles:
    - professormanhattan.java

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

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

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

Вклад

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

Спонсорство

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

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

С уважением,

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

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

Партнеры

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

MailChimp DigitalOcean Реферальный значок

Лицензия

Авторское право © 2020-2021 Megabyte LLC. Этот проект имеет лицензию MIT.

Установить
ansible-galaxy install megabyte-labs/ansible-java
Лицензия
other
Загрузки
926
Владелец
Free open-source developer tools for managing massive amounts of code