一、首先安裝好Ansible環境,具體步驟請見Ansible安裝html
二、先建立hosts文件(爲後面編寫腳本安裝JDK作鋪墊)linux
[root@localhost /]# vi hostsshell
[jdktest]
192.168.186.134 ansible_ssh_user=guxiong ansible_ssh_pass=private bash
注:記得/etc/ansible/hosts也要加入ssh
三、建立該層級的文件目錄spa
├── 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.shhtm
四、編輯tasks下面的main.ymlblog
- 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
五、編輯templates下的set_jdk.ship
#!/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
六、將使用到的變量編輯在vars下的main.ymlrem
user: guxiong host_cluster: jdktest
七、jdk-install.yml
- hosts: "{{ host_cluster }}" gather_facts: no vars: user: "{{ user }}" roles: - jdk-install
八、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
八、爲了方便編寫安裝腳本
[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