当前位置: 首页 > news >正文

使用Ansible批量安装JDK

使用Ansible批量安装JDK

1. 准备工作

1.1 主机列表

IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU架构
10.0.0.13 arc-pro-dc01 16 1 500GB CentOS 7.9.2009 x86_64
10.0.0.14 arc-pro-dc02 16 1 500GB CentOS 7.9.2009 x86_64
10.0.0.15 arc-pro-dc03 16 1 500GB CentOS 7.9.2009 x86_64
10.0.0.16 arc-pro-dc04 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.17 arc-pro-dc05 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.18 arc-pro-dc06 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.19 arc-pro-dc07 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.20 arc-pro-dc08 8 2 500GB CentOS 7.9.2009 x86_64
10.0.0.21 arc-pro-dc09 8 2 500GB CentOS 7.9.2009 x86_64

1.2 已安装服务

版本 arc-pro-dc01 arc-pro-dc02 arc-pro-dc03 arc-pro-dc04 arc-pro-dc05 arc-pro-dc06 arc-pro-dc07 arc-pro-dc08 arc-pro-dc09
Ansible 2.9.27

说明:

  • 每个服务器的 IP 均是静态的
  • 每个服务器的防火墙都已关闭
  • 每个服务器的 SELINUX 已经禁用
  • 每个服务器均存在一个管理员用户 admin,该用户可以免密码执行 sudo 命令;
  • 在 arc-pro-dc01 机器上,可以使用 admin 用户免密码 ssh 到其他机器;
  • 服务器之间的时间同步;
  • 所有操作均使用 admin 用户完成;
  • 每个服务的 /etc/hosts 文件均包含如下内容:
10.0.0.13 arc-pro-dc01
10.0.0.14 arc-pro-dc02
10.0.0.15 arc-pro-dc03
10.0.0.16 arc-pro-dc04
10.0.0.17 arc-pro-dc05
10.0.0.18 arc-pro-dc06
10.0.0.19 arc-pro-dc07
10.0.0.20 arc-pro-dc08
10.0.0.21 arc-pro-dc09

为使集群满足以上要求,参考下列文章进行配置:

  • 使用 VMware Workstation 安装 CentOS-7 虚拟机
  • 用 Ansible 批量完成 CentOS 7 操作系统基础配置

1.3 集群规划

版本 arc-pro-dc01 arc-pro-dc02 arc-pro-dc03 arc-pro-dc04 arc-pro-dc05 arc-pro-dc06 arc-pro-dc07 arc-pro-dc08 arc-pro-dc09
JDK 8u461

1.4 下载安装包

JDK 8 下载页面:

  • 8u211以及之后版本的下载页面:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
  • 8u202以及更早的版本下载页面:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

该网站需要注册登录后才可以下载JDK。下载 jdk-8u461-linux-x64.tar.gz。

Snipaste_2025-11-23_18-59-22

使用 admin 用户登录 arc-pro-dc01 机器,创建目录:/home/admin/ansible/jdk

将 jdk-8u461-linux-x64.tar.gz 上传至 arc-pro-dc01 机器的 /home/admin/ansible/jdk 目录下。

2. Ansible 文件

2.1 Ansible 目录结构

说明:在 arc-pro-dc01 机器上,执行 ansible 命令的基础目录为 /home/admin/ansible

$ tree /home/admin/ansible/
/home/admin/ansible/
├── ansible.cfg
├── hosts
└── jdk   ├── install_jdk.yml   └── jdk-8u461-linux-x64.tar.gz

2.2 ansible.cfg

[defaults]
inventory=./hosts
host_key_checking=False

2.3 hosts

[cluster]
arc-pro-dc01
arc-pro-dc02
arc-pro-dc03
arc-pro-dc04
arc-pro-dc05
arc-pro-dc06
arc-pro-dc07
arc-pro-dc08
arc-pro-dc09

2.4 install_jdk.yml

---
- name: Install JDK 8hosts: clusterbecome: truegather_facts: falsevars:admin_user: adminjdk_tarball: "jdk-8u461-linux-x64.tar.gz"jdk_install_dir: "/usr/java"jdk_dirname: "jdk1.8.0_461" # 解压后的目录名jdk_symlink: "jdk"env_file: "/etc/profile.d/arc-env-jdk.sh"tasks:- name: Ensure JDK install directory existsfile:path: "{{ jdk_install_dir }}"state: directorymode: '0755'- name: Remove jdk dir and create newshell: |rm -rf {{ jdk_install_dir }}/{{ jdk_symlink }} {{ jdk_install_dir }}/{{ jdk_dirname }}mkdir -p {{ jdk_install_dir }}/{{ jdk_dirname }}- name: Extract JDK tarballunarchive:src: "{{ jdk_tarball }}"dest: "{{ jdk_install_dir }}/{{ jdk_dirname }}"remote_src: noextra_opts:- "--strip-components=1" # 去掉压缩包最顶层目录,直接解压到目标- name: Create jdk symlinkfile:src: "{{ jdk_dirname }}"dest: "{{ jdk_install_dir }}/{{ jdk_symlink }}"state: link- name: Ensure environment file existsfile:path: "{{ env_file }}"state: touch # 文件存在则不改内容,不存在则创建空文件owner: "{{ admin_user }}"group: "{{ admin_user }}"mode: '0755'- name: Set JAVA_HOME and update PATHcopy:dest: "{{ env_file }}"content: |export JAVA_HOME={{ jdk_install_dir }}/{{ jdk_symlink }}export PATH=$JAVA_HOME/bin:$PATH- name: Print java versionshell: |source {{ env_file }}java -versionargs:executable: /bin/bashregister: java_versionignore_errors: yes- name: Show java version outputdebug:msg: "{{ java_version.stderr_lines }}"

3. 安装

在 arc-pro-dc01(Ansible 管理节点) 服务器执行

$ pwd
/home/admin/ansible$ ansible-playbook jdk/install_jdk.yml# 输出
TASK [Show java version output] *********************************************
ok: [arc-pro-dc01] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc05] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc02] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc03] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc04] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc06] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc08] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc07] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}
ok: [arc-pro-dc09] => {"msg": ["java version \"1.8.0_461\"","Java(TM) SE Runtime Environment (build 1.8.0_461-b11)","Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)"]
}PLAY RECAP *******************************************************************************************************
arc-pro-dc01               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc02               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc03               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc04               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc05               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc06               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc07               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc08               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
arc-pro-dc09               : ok=8    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
http://www.jsqmd.com/news/48640/

相关文章:

  • 使用OpenZeppelin编写可升级智能合约(代理) - all-in
  • 实用指南:【逻辑回归】从线性模型到逻辑回归
  • vuepress2.x支持vue2吗?
  • 贪心专题 1 做题记录
  • static 静态变量
  • 【IO多路转接】IO 多路复用之 select:从接口解析到服务器实战 - 详解
  • java sql注入的危害有哪些
  • 单片机控制继电器及其原理
  • 2025-09-10-Wed-T-Milvus
  • 【Linux】 层层递进,抽丝剥茧:调度队列、命令行参数、环境变量 - 指南
  • 字符串大小写转换
  • vitepress如何支持vue2组件
  • 2025.11.23
  • 20231427田泽航第十周预习报告
  • java linux环境变量
  • java linux服务器
  • 机器人世界杯物流联赛技术解析
  • fcitx5要一统江湖了
  • 2025 年上海金蝶软件定制开发代理商推荐榜出炉
  • 【开发者导航】全自动 AI 视频创作与发布工具:LuoGen-agent - 教程
  • 2025-09-10-Wed-T-AI基础知识
  • JAX 核心特性详解:纯函数、JIT 编译、自动微分等十大必知概念
  • java linux 进程
  • 截图工具
  • linux 下定义常用路径环境变量
  • 人工智能之数据分析 numpy:第十二章 数据持久化
  • 榨干黑五VPS的7个姿势:Web3玩家的资源优化实战指南
  • anchor
  • 作为网易 UU 远程 macOS 版(内测版本 4.6.101)用户,我实测了这份完整指南 - 指南
  • 单克隆抗体在药物研发和治疗领域的应用前景