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 去操作吧。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章