使用Ansible自動配置JDK環境


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  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM