megabyte-labs.java

Java

Megabyte Labs 制作



一个几乎可以在任何平台上安装 Java 的 Ansible 角色


目录

概述

本仓库是一个 Ansible 角色的主页,用于在几乎任何平台上安装 Java。 Java 是一种基于类的面向对象编程语言,设计时尽量减少实现依赖。

功能

确保安装了 Java:

  • 在 Windows 上使用 Chocolatey 安装 Java
  • 确保设置了 JAVA_HOME 变量
  • 在 macOS、Linux 和 Windows 系统上安装 Java
  • 确保将 Java 添加到 PATH

Windows 优化:

  • 从 Windows 开始菜单中移除 Java 文件夹

快速开始

想要安装 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 剧本(并自定义设置),请继续阅读下面的内容。

支持的操作系统

下表显示了我们在其上测试此角色的操作系统。它是使用 molecule/ 文件夹中的 Ansible Molecule 测试自动生成的。我们在 CI 中实施了逻辑,以自动处理 Windows、macOS、Ubuntu、Fedora、CentOS、Debian 和 Archlinux 的测试。如果您的操作系统未列出,但它是我们测试的某个系统的变体(例如 Debian 系统或 RedHat 系统),那么该角色仍然可能有效。

OS 家族 OS 版本 状态 幂等性 测试于

幂等性是什么意思? 幂等性意味着如果您连续运行此角色两次,则第二次对系统没有更改。

我们花了大量时间完善我们的 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 使得通过 Ansible 配置 Docker 容器的能力
✔️
python-vagrant 用于配置 Vagrant 虚拟机
✔️
pywinrm 用于配置使用 WinRM 的 Windows 计算机
✔️
ansible-lint Ansible 文件的代码检查工具
ansibler 用于生成高级文档的自定义工具(例如,它生成兼容性图表和其他一些图表)
black Python 文件自动格式化工具,适用于项目使用 Python 测试脚本时
blocklint 防止某些词进入代码库的代码检查工具
flake8 报告 Python 语法和风格错误的 Python 代码检查工具
mod-ansible-autodoc 自定义版本的 ansible-autodoc,允许我们根据角色的 YAML 文件中的注释自动生成文档
molecule Ansible 的测试框架
molecule-docker 用于配置 Docker 容器的 Molecule 插件
molecule-vagrant 用于配置 Vagrant 虚拟机的 Molecule 插件
pre-commit-hooks 一套用于代码检查的有用工具
proselint 用于生成英语语言改进的检查工具(用于改善文档)
yamllint 检查 YAML 文件的工具,确保使用了正确的语法和样式

Galaxy 角色

尽管我们的大多数角色没有依赖关系,但在某些情况下,必须先安装另一个角色才能继续逻辑。在剧本开始时,将运行在 meta/main.yml 中列出的 Ansible Galaxy 角色依赖项。这些依赖项配置为每个剧本仅运行一次。如果您在剧本中包含多个具有共同依赖项的角色,则依赖项安装将在第一次运行后跳过。一些我们的角色还直接使用任务文件中的辅助角色,帮助保持我们 主剧本 (加油站) 的简洁性。

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.tomlrequirements.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.java
许可证
other
下载
940
拥有者
Free open-source developer tools for managing massive amounts of code