JDK这东西,简单来说就是一个包,主要生效的还是环境变量。
直接上实现
目录结构
1
2
3
4
5
|
$ tree
.
├── files
│ └── jdk1.6-centos6.tar.gz
└── main.yaml
|
简单的一个说明而已,没有必要搞什么最佳实践了。^_^
main.yaml
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
|
---
- hosts: test_group
sudo: yes
sudo_user: root
gather_facts: no
vars:
src_file: 'files/jdk1.6-centos6.tar.gz'
dest_dir: /opt/soft/
tasks:
- name: copy and unzip
unarchive: src={{src_file}} dest={{dest_dir}}
- name: clear old env
# shell: /bin/sed -i '/JAVA_HOME/d' /etc/profile && echo -e "\nexport JAVA_HOME=/opt/soft/jdk\nexport PATH=\\$JAVA_HOME/bin:\\$PATH\nexport CLASSPATH=.:\\$JAVA_HOME/lib/tools.jar:\\$JAVA_HOME/lib/rt.jar" >> /etc/profile
lineinfile: dest=/etc/profile regexp='JAVA_HOME' state=absent
- name: set env
lineinfile:
dest=/etc/profile
insertafter="{{item.position}}"
line="{{item.value}}"
state=present
with_items:
- {position: EOF, value: "\n"}
- {position: EOF, value: 'export JAVA_HOME=/opt/soft/jdk'}
- {position: EOF, value: 'export PATH=$JAVA_HOME/bin:$PATH'}
- {position: EOF, value: 'export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar'}
|
以上。
- 注释部分可看出原打算使用sed来实现替换profile文件的环境变量替换。但太麻烦,需要考虑转义什么的。后来找到了lineinfile这个好东西。
- fact要是不用的话,就no掉吧,机器数量多了,会节省很多时间。
- 简单使用了loop
- 没啥技术含量,边查文档边搞弄出这么一个东西,算是备忘
-EOF-