1、首先安装好Ansible环境,具体步骤请见Ansible安装

2、先创建hosts文件(为后面编写脚本安装JDK做铺垫)

[root@localhost /]# vi hosts

[jdktest]
192.168.186.134 ansible_ssh_user=guxiong ansible_ssh_pass=private

注:记得/etc/ansible/hosts也要加入

3、创建该层级的文件目录

├── roles
├── jdk-install
│ ├── default
│ ├── files #jdk压缩包存放目录
│ │ └── jdk-7u79-linux-x64.tar.gz
│ ├── handler
│ ├── meta
│ ├── tasks #部署安装流程yml文件目录
│ │ └── main.yml
│ ├── templates
│ │ └── set_jdk.sh #配置目标机器的Java环境变量脚本
│ └── vars
│ └── main.yml #记录使用到的变量
├──jdk-install.yml
├──hosts
├──jdk-install.sh

4、编辑tasks下面的main.yml

  - name: copy jdk to remote host
copy: src=jdk-7u79-linux-x64.tar.gz dest=~
- name: unzip jdk
shell: tar -zxf jdk-7u79-linux-x64.tar.gz
- name: creat soft link
shell: ln -s ~/jdk1.7.0_79 jdk
- name: set jdk_env copy use template
template: src=set_jdk.sh dest=~/set_jdk.sh
- name: execute script to set jdkenv
shell: sh set_jdk.sh
- name: source bash_profile
shell: source ~/.bash_profile
- name: remove files
shell: rm jdk-7u79-linux-x64.tar.gz set_jdk.sh

5、编辑templates下的set_jdk.sh

#!/bin/bash

echo "export JAVA_HOME=${HOME}/jdk" >> ~/.bash_profile
echo 'export CLASSPATH=.:${JAVA_HOME}/lib' >> ~/.bash_profile
echo 'export PATH=${JAVA_HOME}/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile

6、将使用到的变量编辑在vars下的main.yml

user: guxiong
host_cluster: jdktest

7、jdk-install.yml

- hosts: "{{ host_cluster }}"
gather_facts: no
vars:
  user: "{{ user }}"
roles:
  - jdk-install

8、ansible-playbook安装

[root@localhost /]# ansible-playbook jdk-install.yml --extra-var "host_cluster=jdktest user=guxiong"

PLAY [jdktest] **************************************************************** 

TASK: [jdk-install | copy jdk to remote host] *********************************
changed: [192.168.186.134] TASK: [jdk-install | unzip jdk] ***********************************************
changed: [192.168.186.134] TASK: [jdk-install | creat soft link] *****************************************
changed: [192.168.186.134] TASK: [jdk-install | set jdk_env copy use template] ***************************
changed: [192.168.186.134] TASK: [jdk-install | execute script to set jdkenv] ****************************
changed: [192.168.186.134] TASK: [jdk-install | source bash_profile] *************************************
changed: [192.168.186.134] TASK: [jdk-install | remove files] ********************************************
changed: [192.168.186.134] PLAY RECAP ********************************************************************
192.168.186.134 : ok=7 changed=7 unreachable=0 failed=0

8、为了方便编写安装脚本

[root@localhost /]# vi jdk-install.sh

#!/bin/bash

set -e
source ~/.bash_profile
ansible-playbook jdk-install.yml -i ./hosts -e "host_cluster=${host_cluster} user=${user}"       注:${host_cluster} 为执行脚本时需要传入的服务组名,${user}为用户名

[root@localhost /]# ./jdk-install.sh jdktest guxiong

结果一样能安装成功

PLAY [] *********************************************************************** 

TASK: [jdk-install | copy jdk to remote host] *********************************
changed: [192.168.186.134] TASK: [jdk-install | unzip jdk] ***********************************************
changed: [192.168.186.134] TASK: [jdk-install | creat soft link] *****************************************
changed: [192.168.186.134] TASK: [jdk-install | set jdk_env copy use template] ***************************
changed: [192.168.186.134] TASK: [jdk-install | execute script to set jdkenv] ****************************
changed: [192.168.186.134] TASK: [jdk-install | source bash_profile] *************************************
changed: [192.168.186.134] TASK: [jdk-install | remove files] ********************************************
changed: [192.168.186.134] PLAY RECAP ********************************************************************
192.168.186.134 : ok=7 changed=7 unreachable=0 failed=0

使用Ansible自动配置JDK环境的更多相关文章

  1. RocketMQ的安装配置:配置jdk环境,配置RocketMQ环境,配置集群环境,配置rocketmq-console

    RocketMQ的安装配置 演示虚拟机环境:Centos64-1 (D:\linuxMore\centos6_64) root / itcast : 固定IP 192.168.52.128 一,配置J ...

  2. Linux CentOS 配置JDK环境

    一.下载JDK 下载JDK的方式有两种: 1.Linux中使用wget下载 1.使用命令安装wget yum install wget 2.下载 wget 'http://download.oracl ...

  3. 配置JDK环境变量,与各步骤的意义

    配置JDK环境变量 1,新建变量名:JAVA_HOME,变量值:C:\Program Files\Java\jdk1.7.0                   (变量值为jdk安装路径) 2,打开P ...

  4. 配置JDK环境变量

    •配置JDK环境变量<Windows系统下> 点击我的电脑右键----->属性------>高级------>环境变量------->  新建(建议在系统变量中新建 ...

  5. Windows 7下配置JDK环境变量和Java环境变量配置

    下面来介绍一下Java环境变量配置,是在Windows 7下配置JDK环境变量. 方法/步骤  1 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为:C:\Program Fil ...

  6. MAC OX 配置JDK环境变量

    大家在windows里面配置JDK环境变量很容易,但是如果要在mac里面配置JDK环境变量和windows里面有所不同,具体如下: 第一: mac OS里面自带jdk,不过是1.6的版本,现在很多人使 ...

  7. ubuntu 配置JDK环境变量

    ubuntu 配置JDK环境变量 (2011-11-25 16:45:59) 转载▼ 标签: ubuntu jdk 环境变量 杂谈 分类: Linux_Ubuntu_CentOs 过程如下: 1. 先 ...

  8. linux 下安装jdk及配置jdk环境图解

    linux 下安装jdk及配置jdk环境图解 一:先检測是否已安装了JDK 运行命令: # rpm -qa|grep jdk  或   # rpm -q jdk  或  #find / -name j ...

  9. 第一节:学会Java前提-手把手教你配置JDK环境变量

    前言 大家好,今天写一遍学会Java前提-手把手教你配置JDK环境变量的概述,希望你们喜欢 下载地址 下载jdk,和eclipse就比较简单了,提供JDK 9 地址: http://www.oracl ...

随机推荐

  1. Atitit.数据库事务隔离级别 attilax 总结

    Atitit.数据库事务隔离级别 1. 事务隔离级别的作用 1 2. 在的隔离级别 2 3. 常见数据库的默认管理级别 3 1. 事务隔离级别的作用 较低的隔离级别可以增强许多用户同时访问数据的能力, ...

  2. Activiti - 新一代的开源 BPM 引擎 (zhuan)

    http://www.ibm.com/developerworks/cn/Java/j-lo-activiti1/ ****************************************** ...

  3. python 加密方法总结

    MD5 def md5(str): import hashlib m = hashlib.md5() m.update(str) return m.hexdigest() base64 import ...

  4. 基于html5制作3D拳击游戏源码下载

    今天给大家分享一款基于HTML5实现的3d拳王游戏源码.这款实例适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8及以下浏览器. 在线预览 ...

  5. 基于jQuery左侧小图滚动右侧大图显示代码

    今天给大家分享一款 jQuery左侧小图滚动右侧大图显示代码是一款基于jQuery实现的左侧滚动图片点击大图查看效果代码.该实例适用浏览器:IE8.360.FireFox.Chrome.Safari. ...

  6. SQL语句字符串处理大全

    常用的字符串函数有: 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用 ...

  7. I2C和SPI

    I2C(Inter-Integrated Circuit)总线 两线式串行总线,用于连接微控制器及其外围设备.是微电子通信控制领域广泛采用的一种总线标准.它是同步通信的一种特殊形式,具有接口线少,控制 ...

  8. Throw是一个语句,用来做抛出例外的功能

    当我们自己定义一个例外类的时候必须使其继承excepiton或者RuntimeException. Throw是一个语句,用来做抛出例外的功能. 而throws是表示如果下级方法中如果有例外抛出,那么 ...

  9. 【BZOJ】2301: [HAOI2011]Problem b(莫比乌斯+分块)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2301 和这题不是差不多的嘛--[BZOJ]1101: [POI2007]Zap(莫比乌斯+分块) 唯 ...

  10. json 转 T

    T test = JsonConvert.DeserializeObject<T>(json);(json.net)