使用 ansible 部署 java(jdk) 环境

使用 ansible 在本地 docker 容器集群中安装 java 环境

创建容器 (用虚拟机或服务器可忽略)

拉取基础镜像

获取一个具备 ssh 服务的 ubuntu linux
基础镜像(关于docker的基本使用)

1
docker pull waterandair/sshd
创建基础容器(数量随机,学习中建议 3 个)
1
2
3
4
5
# 登录名/密码:  root/root
docker run -d --name=jdk1 waterandair/sshd
docker run -d --name=jdk2 waterandair/sshd
docker run -d --name=jdk3 waterandair/sshd
...

初始化 role

在任意目录(这里以test文件夹为例)下执行 ansible-galaxy init jdk ,初始化一个 roles

设置要用到的变量

在 test/jdk/defaults/main.yml 中设置变量

1
2
3
4
5
6
7
8
9
10
11
12
---
# defaults file for jdk
# jdk 的版本
jdk_version: jdk-9.0.4
# jdk 文件较大,建议提前下好,并放到 jdk/files/ 目录下
jdk_package_name: jdk-9.0.4_linux-x64_bin.tar.gz
# 设置环境变量的文件
env_file: ~/.bashrc
# 安装目录
install_dir: /usr/local/
# 软连接地址
soft_dir: {{ install_dir }}java

编写 tasks

在 test/jdk/tasks/main.yml 中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
---
# tasks file for jdk
- name: 创建java安装目录
file:
path: "{{ install_dir }}"
state: directory
mode: 0755

- name: 复制并解压 jdk包 到安装目录
unarchive:
src: "{{jdk_package_name}}"
dest: "{{ install_dir }}"

- name: 创建软连接
file:
src: "{{ install_dir + jdk_version }}"
dest: "{{ soft_dir }}"
state: link

- name: 设置环境变量
lineinfile:
dest: "{{ env_file }}"
insertafter: "{{ item.position }}"
line: "{{ item.value }}"
state: present
with_items:
- {position: EOF, value: "\n"}
- {position: EOF, value: "{{ 'export JAVA_HOME=' + soft_dir}}"}
- {position: EOF, value: "export PATH=$JAVA_HOME/bin:$PATH"}
- {position: EOF, value: "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"}

编写启动文件

在 test/ 下创建一个文件 run.yml

1
2
3
4
- hosts: test
remote_user: root
roles:
- jdk

编写 hosts 文件

在 test/ 下创建一个文件 hosts

查看 容器 ip
1
2
3
4
# docker inspect --format="{{.NetworkSettings.IPAddress}}" $CONTAINER_ID
docker inspect --format="{{.NetworkSettings.IPAddress}}" jdk1
docker inspect --format="{{.NetworkSettings.IPAddress}}" jdk2
docker inspect --format="{{.NetworkSettings.IPAddress}}" jdk3
创建 hosts 文件

这里定义要管理的远程主机,这里其实就是管理上面创建的 3 个 docker 容器的 IP 地址

1
2
3
4
[test]
172.17.0.2
172.17.0.3
172.17.0.4

执行 ansible-playbook

在 test/文件夹下,执行

1
2
3
4
# ansible 是通过 ssh 执行命令的,所以最佳实践中推荐的是设置 ssh 免密码登录
# 如果没有设置,而已在执行命令后加 -k 参数,手动输入密码, 这里 root 用户的密码是 root

ansible-playbook -i hosts run.yml -k

项目地址

文章标题:使用 ansible 部署 java(jdk) 环境

文章字数:665

本文作者:Waterandair

发布时间:2017-10-13, 18:19:32

最后更新:2019-12-28, 14:03:59

原始链接:https://waterandair.github.io/2017-10-13-install-jdk.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

github