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 集合。集合及其源链接如下所示。
示例剧本
安装完依赖项后,您只需将角色添加到主剧本中。该角色处理 become
行为,因此您可以直接将角色添加到剧本中,而无需担心不应以 root 身份运行的命令:
- 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.java