megabyte-labs.java

<!-- ⚠️ Этот README сгенерирован из файла ".config/docs/blueprint-readme-role.md" ⚠️-->
<div align="center">
  <center>
    <a href="https://github.com/megabyte-labs/ansible-java">
      <img width="148" height="148" alt="Логотип Java" src="https://gitlab.com/megabyte-labs/ansible-roles/java/-/raw/master/logo.png" />
    </a>
  </center>
</div>
<div align="center">
  <center><h1 align="center"><i></i>Java<i></i></h1></center>
  <center><h4 style="color: #18c3d1;">Создано <a href="https://megabyte.space" target="_blank">Megabyte Labs</a></h4><i></i></center>
</div>

<div align="center">
  <a href="https://megabyte.space" title="Главная страница Megabyte Labs" target="_blank">
    <img alt="Домашняя страница" src="https://img.shields.io/website?down_color=%23FF4136&down_message=Недоступна&label=Домашняя%20страница&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=Доступна&url=https%3A%2F%2Fmegabyte.space&style=for-the-badge" />
  </a>
  <a href="https://github.com/megabyte-labs/ansible-java/blob/master/docs/CONTRIBUTING.md" title="Узнать о том, как сделать вклад" target="_blank">
    <img alt="Вклад" src="https://img.shields.io/badge/Руководство-вклад-0074D9?logo=github-sponsors&logoColor=white&style=for-the-badge" />
  </a>
  <a href="https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/" title="Чат с нами в Slack" target="_blank">
    <img alt="Slack" src="https://img.shields.io/badge/Slack-Чат-e01e5a?logo=slack&logoColor=white&style=for-the-badge" />
  </a>
  <a href="https://gitter.im/megabyte-labs/community" title="Общение с сообществом на Gitter" target="_blank">
    <img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style=for-the-badge" />
  </a>
  <a href="https://github.com/megabyte-labs/ansible-java" title="Зеркало на GitHub" target="_blank">
    <img alt="GitHub" src="https://img.shields.io/badge/Зеркало-GitHub-333333?logo=github&style=for-the-badge" />
  </a>
  <a href="https://gitlab.com/megabyte-labs/ansible-roles/java" title="Репозиторий GitLab" target="_blank">
    <img alt="GitLab" src="https://img.shields.io/badge/Репозиторий-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style=for-the-badge" />
  </a>
</div>
<br/>
<div align="center">
  <a title="Роль Ansible Galaxy: professormanhattan.java" href="https://galaxy.ansible.com/professormanhattan/java" target="_blank">
    <img alt="Роль Ansible Galaxy: professormanhattan.java" src="https://img.shields.io/ansible/role/57261?logo=ansible&style=flat-square" />
  </a>
  <a title="Версия: 1.0.1" href="https://github.com/megabyte-labs/ansible-java" target="_blank">
    <img alt="Версия: 1.0.1" src="https://img.shields.io/badge/версия-1.0.1-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAACNJREFUCNdjIACY//+BEp9hhM3hAzYQwoBIAqEDYQrCZLwAAGlFKxU1nF9cAAAAAElFTkSuQmCC&cacheSeconds=2592000&style=flat-square" />
  </a>
  <a title="Статус сборки GitLab" href="https://gitlab.com/megabyte-labs/ansible-roles/java/-/commits/master" target="_blank">
    <img alt="Статус сборки" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/java?branch=master&label=сборка&logo=gitlab&logoColor=white&style=flat-square" />
  </a>
  <a title="Статус тестирования Windows 11 на GitHub" href="https://github.com/megabyte-labs/ansible-java/actions/workflows/Windows.yml" target="_blank">
    <img alt="Статус тестирования Windows 11" src="https://img.shields.io/github/workflow/status/ProfessorManhattan/ansible-java/Windows%20Ansible%20Role%20Test/master?color=cyan&label=windows&logo=windows&style=flat-square" />
  </a>
  <a title="Статус тестирования macOS на GitLab" href="https://gitlab.com/megabyte-labs/ansible-roles/java/-/commits/master" target="_blank">
    <img alt="Статус тестирования macOS" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/java?branch=test%2Fdarwin&label=osx&logo=apple&style=flat-square" />
  </a>
  <a title="Статус тестирования Linux Molecule на GitLab" href="https://gitlab.com/megabyte-labs/ansible-roles/java/-/commits/master" target="_blank">
    <img alt="Статус тестирования Linux Molecule" src="https://img.shields.io/gitlab/pipeline-status/megabyte-labs/ansible-roles/java?branch=test%2Flinux&label=linux&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAAElBMVEUAAAAwPEEuOEIxOzswPj7///91+pI+AAAABXRSTlMANRkNJejDPNcAAAB+SURBVCjPddHBDYAgDIXhGtMRHMG7S3hvTP79VxFIQVq1wOVLm7wU8QIJpSThC2wGwwJoPQFKRdiAAIhGsAykZNSZAOVNMx4BMjwtpySgr6CDJdB/MAdJwAvSiFoE5aABHUb0ch0WHNQq+KPAOgCgrbEnbjAHArjGz3jr3hpumrQpvwi66rkAAAAASUVORK5CYII=&style=flat-square" />
  </a>
  <a title="Оценка качества Ansible Galaxy (из 5)" href="https://galaxy.ansible.com/professormanhattan/java" target="_blank">
    <img alt="Оценка качества Ansible Galaxy" src="https://img.shields.io/ansible/quality/57261?logo=ansible&style=flat-square" />
  </a>
  <a title="Количество загрузок Ansible Galaxy" href="https://galaxy.ansible.com/professormanhattan/java" target="_blank">
    <img alt="Количество загрузок Ansible Galaxy" src="https://img.shields.io/ansible/role/d/57261?logo=ansible&label=downloads&style=flat-square" />
  </a>
  <a title="Документация" href="https://megabyte.space/docs/ansible" target="_blank">
    <img alt="Документация" src="https://img.shields.io/badge/документация-да-brightgreen.svg?logo=readthedocs&logoColor=white&style=flat-square" />
  </a>
  <a title="Лицензия: MIT" href="https://github.com/megabyte-labs/ansible-java/blob/master/LICENSE" target="_blank">
    <img alt="Лицензия: MIT" src="https://img.shields.io/badge/licence-MIT-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHpJREFUCNdjYOD/wMDAUP+PgYHxhzwDA/MB5gMM7AwMDxj4GBgKGGQYGCyAEEgbMDDwAAWAwmk8958xpIOI5zKH2RmOyhxmZjguAiKmgIgtQOIYmFgCIp4AlaQ9OczGkJYCJEAGgI0CGwo2HmwR2Eqw5SBnNIAdBHYaAJb6KLM15W/CAAAAAElFTkSuQmCC&style=flat-square" />
  </a>
</div>

> <br/><h4 align="center">**Роль Ansible, которая устанавливает Java на почти любой платформе**</h4><br/>

<a href="#table-of-contents" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>

## Содержание

- [Обзор](#overview)
- [Особенности](#features)
- [Быстрый старт](#quick-start)
- [Поддерживаемые операционные системы](#supported-operating-systems)
- [Зависимости](#dependencies)
  - [Python](#python)
  - [Роли Galaxy](#galaxy-roles)
  - [Коллекции Galaxy](#galaxy-collections)
- [Пример плейбука](#example-playbook)
  - [Пример из реальной жизни](#real-world-example)
- [Вклад](#contributing)
  - [Партнеры](#affiliates)
- [Лицензия](#license)

<a href="#overview" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>

## Обзор

Этот репозиторий является домом для роли [Ansible](https://www.ansible.com/), которая устанавливает Java на почти любой платформе. [Java](https://www.java.com/en/) — это язык программирования, основанный на классах и ориентированный на объекты, который предназначен для минимизации зависимостей реализации.

<a href="#features" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>

## Особенности

**Обеспечивает установку Java:**

- Устанавливает Java с помощью Chocolatey на Windows
- Устанавливает переменную `JAVA_HOME`
- Устанавливает Java на системах macOS, Linux и Windows
- Добавляет Java в `PATH`

**Оптимизация для Windows:**

- Удаляет папку Java из меню "Пуск" на Windows

<a href="#quick-start" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>

## Быстрый старт

Хотите установить Java, не имея дело с [Ansible](https://www.ansible.com/)? Просто выполните следующую команду в зависимости от вашей операционной системы:

**Linux/macOS:**

```shell
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'))

Важно: Перед выполнением указанных выше команд вам, возможно, стоит непосредственно перейти по ссылке, чтобы убедиться, что код безопасен. Мы знаем, что он безопасен, но прежде чем запускать какой-либо скрипт на вашем компьютере, вы должны его проверить.

Вы также можете ознакомиться с 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

В качестве альтернативы вы можете просто выполнить bash .config/scripts/start.sh, если вы новичок в Ansible и не против установить и требования разработки. Это простой способ убедиться, что все работает правильно.

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) DRY.

Файл 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.

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

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

Вклад

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

Спонсорство

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

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

С уважением,

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

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

Партнеры

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

MailChimp Бadge-реферал DigitalOcean

Лицензия

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

Installa
ansible-galaxy install megabyte-labs.java
Licenza
other
Download
940
Proprietario
Free open-source developer tools for managing massive amounts of code