Overview
I plan to use ASMLIB for the shared storage on the REDFERN cluster.
References
- Ansible Documentation
- Oracle ® 12.1 Grid Infrastructure Installation Guide
- 7 Configuring Storage for Oracle Grid Infrastructure and Oracle RAC
- 7.1 Reviewing Oracle Grid Infrastructure Storage Options
- 7.1.4 Guidelines for Using Oracle ASM Disk Groups for Storage
- 7.1.6 After You Have Selected Disk Storage Options
- 7.4 Oracle Automatic Storage Management Storage Configuration
- Appendix F: How to Complete Preinstallation Tasks Manually
Investigation
Choice to Use ASMLIB
Following the advice given in 7.1.4 Guidelines for Using Oracle ASM Disk Groups for Storage , I chose to use ASMLIB for the shared disks of the REDFERN cluster.
Gather Information about Packages
Since I am installing ASMLIB manually, I will be following the procedure in F.4.1 Configuring Storage Device Path Persistence Using Oracle ASMLIB .
F.4.1.2.1 Installing and Configuring the Oracle ASM Library Driver Software refers to Oracle ASMLib Software Update and Support Policy for Red Hat Enterprise Linux (Doc ID 1089399.1) .
Oracle ASMLib Software Update and Support Policy for Red Hat Enterprise Linux (Doc ID 1089399.1) says:
The Oracle Linux 7 RHCK version of oracleasmlib available on: http://www.oracle.com/technetwork/server-storage/linux/asmlib/ol7-2352094.html can be used with RHEL7.
The Oracle Linux 7 RHCK version of oracleasm-support is available on ULN and here: http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.8-3.el7.x86_64.rpm
kmod-oracleasm for Oracle Linux 7 RHCK is on ULN and here: http://public-yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/kmod-oracleasm-2.0.8-8.el7.x86_64.rpm
Oracle ASMLib Downloads for Oracle Linux 7 says:
The oracleasm kernel driver is built into the Unbreakable Enterprise Kernel for Oracle Linux 7 and does not need to be installed manually.
And
Intel EM64T (x86_64) Architecture
Summary
There are three (3) packages to be installed for ASMLIB:
- oracleasm is included as part of the OEL 7 kernal ( kmod-oracleasm ). There is no need to install separately.
- oracleasm-support can be installed through yum .
- oracleasmlib is provided as a RPM.
Procedure
Create Playbook to Install Packages
The following text was added to gi_asm.yml :
--- - name: "Oracle 12.1.0.2 GI ASM installation" hosts: redfern1.yaocm.id.au become: true tasks: - name: "Copy RPM File to Server" copy: src: /etc/ansible/roles/common/files/oracleasmlib-2.0.12-1.el7.x86_64.rpm dest: /tmp/oracleasmlib-2.0.12-1.el7.x86_64.rpm - name: "Install Oracle ASMLib RPM" yum: name: /tmp/oracleasmlib-2.0.12-1.el7.x86_64.rpm state: present - name: "Install other packages for ASM" yum: name: oracleasm-support state: present ...
I had downloaded the RPM file into /etc/ansible/roles/common/files/oracleasmlib-2.0.12-1.el7.x86_64.rpm on AUBURN .
I then use the copy module to place the RPM file into /tmp/oracleasmlib-2.0.12-1.el7.x86_64.rpm on REDFERN1 .
Execute Playbook to Install Packages
I ran the playbook as follows:
ansible-playbook --ask-become-pass gi_asm.yml
The output was:
SUDO password: PLAY [Oracle 12.1.0.2 GI ASM installation] ************************************* TASK [Gathering Facts] ********************************************************* ok: [redfern1.yaocm.id.au] TASK [Copy RPM File to Server] ************************************************* changed: [redfern1.yaocm.id.au] TASK [Install Oracle ASMLib RPM] *********************************************** changed: [redfern1.yaocm.id.au] TASK [Install other packages for ASM] ****************************************** changed: [redfern1.yaocm.id.au] PLAY RECAP ********************************************************************* redfern1.yaocm.id.au : ok=4 changed=3 unreachable=0 failed=0
This was all successful.
Improved Installation Procedure
While reviewing the Examples for YUM Module , I discovered a better way of installing RPM modules directly from the Internet. I used the following command to test this method out:
ansible -K -m yum -a "name=http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm" redfern1.yaocm.id.au
The output was:
SUDO password:
redfern1.yaocm.id.au | SUCCESS => {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"oracleasmlib-2.0.12-1.el7.x86_64 providing /tmp/oracleasmlib-2.0.12-1.el7.x86_64hCoWxj.rpm is already installed"
]
}
Improved Playbook
Based on the above test, I updated gi_asm.yml as follows:
--- - name: "Oracle 12.1.0.2 GI ASM installation" hosts: redfern1.yaocm.id.au become: true tasks: - name: "Install Oracle ASMLib RPM" yum: name: http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm state: present - name: "Install other packages for ASM" yum: name: oracleasm-support state: present ...
Test Improved Playbook
I tested the improved playbook as follows:
ansible-playbook --ask-become-pass gi_asm.yml
The output was:
SUDO password: PLAY [Oracle 12.1.0.2 GI ASM installation] ************************************* TASK [Gathering Facts] ********************************************************* ok: [redfern1.yaocm.id.au] TASK [Install Oracle ASMLib RPM] *********************************************** ok: [redfern1.yaocm.id.au] TASK [Install other packages for ASM] ****************************************** ok: [redfern1.yaocm.id.au] PLAY RECAP ********************************************************************* redfern1.yaocm.id.au : ok=3 changed=0 unreachable=0 failed=0