每個軟件或集羣都建立一個單獨的角色。java
mkdir -pv ansible/roles/{jdk,hadoop,spark}/{tasks,files,templates,meta,handlers,vars}linux
建立JDK roleshell
pwd /root/ansible_playbooks/roles/jdk7 ls files handlers meta tasks templates vars
一、上傳軟件包oop
將jdk-8u80-linux-x64.gz上傳到files目錄下spa
2、編寫taskscode
vi tasks/main.yml - name: mkdir file: path=/usr/java state=directory mode=0755 - name: unzip unarchive: src={{jdk_package_name}} dest=/usr/local/java/ - name: set env lineinfile: dest={{env_file}} insertafter="{{item.position}}" line="{{item.value}}" state=present with_items: - {position: EOF, value: "\n"} - {position: EOF, value: "export JAVA_HOME=/usr/local/java/{{jdk_version}}"} - {position: EOF, value: "export PATH=$JAVA_HOME/bin:$PATH"} - name: enforce env shell: source {{env_file}}
3. 編寫varsblog
vi vars/main.yml jdk_package_name: jdk-8u80-linux-x64.gz env_file: /etc/profile jdk_version: jdk1.8.0_80
4. playbook角色 ip
vi jdk.yml - hosts: jdk remote_user: root roles: - jdk
ansible-playbook jdk.yml