使用 ansible 部署 java(jdk) 环境
创建时间:
字数:665
使用 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" 转载请保留原文链接及作者。