Ansible 通过playbook及shell结合部署jdk1.8

在工作中,初次部署服务器时需要初始化很多软件,大平台部署有时大几十台甚至上百台,每台都去做重复的工作将带来非常大的工作量,下面我们介绍一下ansible自动化部署的相关操作,仅供交流学习。

环境准备:

操作系统 centos7

    192.168.0.33   --ansible 服务端  以下称:server服务器

    192.168.0.34   --需安装的服务器1  以下称:app1

    192.168.0.35   --需安装的服务器2  以下称:app2

工具:

     ansible:2.9.3

      jdk:1.8.0_73

目录规划:

# tree ansible

ansible/
├── install
│   ├── jdk1.8.0_73.tar.gz
├── java
│   ├── install_jdk.sh
│   └── install_jdk.yml

  

上传jdk1.8的安装包至server服务器 install 文件夹中

将以下脚本保存至 server 服务器的java文件夹下

cat  install_jdk.sh

#!/bin/sh  
#-----------------------------------------------
#脚本使用方法-->[sh install_jdk.sh]         |
#author by huwj 2017-11-17 14:00:24            |
#-----------------------------------------------
javapath="/usr/local/java/"
javaversion="jdk1.8.0_73"
JAVA_HOME="$javapath$javaversion"
if [ ! -d $javapath ];then
	mkdir $javapath
	cd $javapath
	tar -zxvf /opt/$javaversion.tar.gz -C $javapath
else
    tar -zxvf /opt/$javaversion.tar.gz -C $javapath
fi

#set environment
if ! grep "JAVA_HOME=$javapath$javaversion" /etc/profile 
then
    echo "JAVA_HOME=$javapath$javaversion" | sudo tee -a /etc/profile
    echo "export JAVA_HOME" | sudo tee -a /etc/profile
    echo "PATH=$PATH:$JAVA_HOME/bin" | sudo tee -a /etc/profile 
    echo "export PATH" | sudo tee -a /etc/profile
    echo "CLASSPATH=.:$JAVA_HOME/lib" | sudo tee -a /etc/profile
    echo "export CLASSPATH" | sudo tee -a /etc/profile
fi

#update environment
source /etc/profile
echo "jdk is installed !"

cat install_jdk.yml

---
- hosts: one
  remote_user: root
  tasks:
    - name: copy file
      copy: src={{ item.src }} dest={{ item.dest }} mode='0755'
      with_items:
      - {src: "/opt/ansible/java/install_jdk.sh",
         dest: "/opt/install_jdk.sh"}
      - {src: "/opt/ansible/install/jdk1.8.0_73.tar.gz",
         dest: "/opt/jdk1.8.0_73.tar.gz"}
    - name: install jdk
      shell: /opt/install_jdk.sh

注:hosts 即以下ansible中hosts对应的分组别名 one

       remote_user 远程使用的用户

       tasks  要执行的任务

       name 类似于备注说明

       copy 要复制的任务

       with_items  要复制的目标列表

       shell  即要执行的shell脚本

 

Ansible 配置

将app1 、app2配置到 /etc/ansible/hosts 文件中,并设置别名为 one

ansible 登录客户端可以通过免密方式,也可以通过hosts中设置对应的帐号密码进行验证,此处使用设置帐号密码验证

配置完成后就可执行部署操作:

ansible-playbook install_jdk.yml

接下来就交给ansible 去操作吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hu_wenjie

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值