在使用ansible部署 java 的时候,首先来缕清手动部署java的步骤:
1、下载java(这步省略,因为在下载java的时候有个交互模式,需要点击“accept”);
2、查看远程主机是否有openjdk;
3、删除远程主机的openjdk;
4、解压java(本次操作将java直接拷贝到ansible主机上,有它来下发java压缩包);
5、重命名java(这步可以省略);
6、增加 环境变量 ;
7、使环境变量生效;
8、配置java命令的软链接;
9、查看java是否安装成功。
具体部署步骤:
1、将java压缩包拷贝到ansible主机上,并创建java_install.yml文件
touch java_install.yml
2、查看远程主机是否有openjdk
ansible web -m shell -a “rpm -aq | grep jdk”
3、写入playbook,内容如下:
—
– hosts: web
tasks:
– name: remove openjdk
yum:
name: java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64,java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64,java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64,java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64
state: absent
– name: unarchive java
unarchive:
copy: yes
src: /home/tools/jdk-8u91-linux-x64.tar.gz
dest : /usr/local/
– name: rename java
shell : mv /usr/local/jdk1.8.0_91 /usr/local/java
– name: add env var
shell: echo {{ item }} >> /etc/profile
with_items:
– export JAVA_HOME=/usr/local/java
– export PATH=$PATH:$JAVA_HOME/bin
– export CLASSPATH =.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
– name: source env
shell: source /etc/profile
– name: soft link
file: src=/usr/local/java/bin/java dest=/usr/bin/java state=link
– name: test
shell: java -version
内容说明:
#ansible-playbook开头
—
#指定主机组
– hosts: web
#ansible-playbook的主体部分
tasks:
#3、删除远程主机的openjdk;
– name: remove openjdk
yum:
name: java-1.7.0-openjdk-1.7.0.141-2.6.10.5.el7.x86_64,java-1.8.0-openjdk-headless-1.8.0.131-11.b12.el7.x86_64,java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64,java-1.7.0-openjdk-headless-1.7.0.141-2.6.10.5.el7.x86_64
state: absent
#4、解压java(本次操作将java直接拷贝到ansible主机上,有它来下发java压缩包);
– name: unarchive java
unarchive:
copy: yes
src: /home/tools/jdk-8u91-linux-x64.tar.gz
dest: /usr/local/
#5、重命名java(这步可以省略);
– name: rename java
shell: mv /usr/local/jdk1.8.0_91 /usr/local/java
#6、增加环境变量(这里使用了with_items循环);
– name: add env var
shell: echo {{ item }} >> /etc/profile
with_items:
– export JAVA_HOME=/usr/local/java
– export PATH=$PATH:$JAVA_HOME/bin
– export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
注:该部分所有的“$”符号前都有 转义符 “”。如果不使用转义符“”一定会报错,要额外小心!!!
#7、使环境变量生效;
– name: source env
shell: source /etc/profile
#8、配置java命令的软链接;
– name: soft link
file: src=/usr/local/java/bin/java dest=/usr/bin/java state=link
#9、查看java是否安装成功。
– name: test
shell: java -version
报错:
这个是由于没有配置java在/usr/bin下的软连接!
fatal: [192.168.139.96]: FAILED! => {“changed”: true, “cmd”: “java -version” , “delta”: “0:00:00.004190”, “end”: “2018-11-21 09:01:21.162576”, “msg”: “non-zero return code”, “rc”: 127, “start”: “2018-11-21 09:01:21.158386”, “stderr”: “/bin/sh: java: command not found” , “stderr_lines”: [“/bin/sh: java: command not found”], “stdout”: “”, “stdout_lines”: []}
fatal: [192.168.139.95]: FAILED! => {“changed”: true, “cmd”: “java -version” , “delta”: “0:00:00.003742”, “end”: “2018-11-21 09:01:21.178077”, “msg”: “non-zero return code”, “rc”: 127, “start”: “2018-11-21 09:01:21.174335”, “stderr”: “/bin/sh: java: command not found” , “stderr_lines”: [“/bin/sh: java: command not found”], “stdout”: “”, “stdout_lines”: []}
4、检查是否部署成功
ansible web -m shell -a “java -version”