professormanhattan.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的变种),那么这个角色可能仍然可以工作。
操作系统系列 | 操作系统版本 | 状态 | 幂等 | 测试在 |
---|
幂等是什么意思? 幂等的意思是,如果你连续两次运行该角色,则第二次运行时,系统不会发生变化。
我们花了很多时间来完善我们的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文件的Linting工具 | |
ansibler | 用于生成高级文档的自定义工具(例如,它生成兼容性图表和其他一些图表) | |
black | Python文件的自动格式化工具,包括项目使用Python测试脚本时 | |
blocklint | Linting工具,防止某些单词进入代码库 | |
flake8 | Python Linter,用于报告Python语法和样式错误 | |
mod-ansible-autodoc | 自定义分支的 ansible-autodoc,允许我们根据角色YAML文件中的注释自动生成文档 | |
molecule | Ansible的测试框架 | |
molecule-docker | Molecule插件,用于配置Docker容器 | |
molecule-vagrant | Molecule插件,用于配置Vagrant虚拟机 | |
pre-commit-hooks | 有助于linting的工具套件 | |
proselint | 用于生成英语改进的Linting工具(用于改进文档) | |
yamllint | 用于YAML文件的Linting工具,确保使用正确的语法和样式 |
Galaxy角色
虽然我们的大多数角色没有依赖关系,但在某些情况下,必须在逻辑继续之前安装另一个角色。在剧本开始时,列在 meta/main.yml
中的Ansible Galaxy角色依赖项将运行。这些依赖项被配置为每个剧本只运行一次。如果你在剧本中包含了多个我们具有共同依赖关系的角色,那么在第一次运行之后,依赖项安装将被跳过。我们的一些角色也直接使用任务文件中的辅助角色,帮助保持我们的 主要剧本(加油站) DRY。
requirements.yml
文件包含此角色所需的Ansible Galaxy依赖项的完整列表(即 meta/main.yml
角色依赖项、辅助角色、集合等)。为了你的方便,下面是角色依赖项的快速描述列表:
角色依赖项
Galaxy集合
此角色依赖于多个Ansible Galaxy集合。集合及其源的链接如下所示。
示例剧本
安装依赖项后,你只需将角色添加到你的主剧本中。该角色处理become
行为,因此你可以简单地将角色添加到你的剧本中,而不必担心不应以root身份运行的命令:
- hosts: all
roles:
- professormanhattan.java
如果你将这个角色融入一个已有的剧本中,那么最好是将 pyproject.toml
和 requirements.yml
中概述的要求复制到剧本根目录中的相应文件中,这样在将来的使用中你只需关心安装一组要求。请注意,pyproject.toml
中的依赖项可以移动到更传统的 requirements.txt
中,如果这是你当前用于跟踪Python依赖项的方式。
真实世界示例
你可以在我们的主要剧本(又名 加油站)中找到一个包含此角色的剧本示例。这个剧本是学习如何使用Ansible的一个很好示例。它还结合了许多经过深思熟虑的构建工具,更高级的Ansible用户会欣赏它。而那些对Ansible不太感兴趣的人也可以从中受益,因为它基本上可以将你的计算机(和网络)变成终极开发环境。总之,这是一个开发人员应该了解的很酷的项目!
贡献
欢迎贡献、问题和功能请求!欢迎查看 问题页面。如果你想要贡献,请查看 贡献指南。
赞助
亲爱的优秀人士,
我出于热爱而创建开源项目。虽然我有工作、住所和尽可能多的快餐,但能得到社区的认可还是很不错的,因为我在这些项目上投入了很多时间和金钱。请考虑赞助我!谁知道呢?也许我能辞去工作,全职发布开源项目。
诚挚的,
Brian Zalewski
推荐项目
以下是我们利用的服务列表,通过我们的特殊链接注册可享受特别优惠:

许可证
版权 © 2020-2021 Megabyte LLC。本项目采用 MIT 许可证。
Installs Java on almost any platform
ansible-galaxy install professormanhattan.java