deploy/ansible/roles-sap-os/2.6-sap-mounts/tasks/2.6.3-oracle-multi-sid.yaml (126 lines of code) (raw):
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
---
# Create Run Flag Directory
- name: "2.6 SAP Mounts (Oracle shared home) : Create run flag directory"
become: true
become_user: root
ansible.builtin.file:
path: /etc/sap_deployment_automation
state: directory
mode: 0755
owner: oracle
group: oinstall
- name: "2.6 SAP Mounts (Oracle shared home): - Gather Logical volumes created in 1.5.2-disk-setup-ora-multi-sid"
ansible.builtin.include_vars: disks_config_ora_msid.yml
- name: "2.6 SAP Mounts (Oracle shared home): - Load logical volumes"
ansible.builtin.set_fact:
logical_volume_groups: "{{ lookup('template', '../../roles-os/1.5.2-disk-setup-ora-multi-sid/templates/logical_volume_group.j2') }}"
- name: "2.6 SAP Mounts (Oracle shared home): Check if LVs exists."
ansible.builtin.stat:
path: "{{ dev_path_from_lv_item }}"
loop: "{{ logical_volume_groups }}"
register: oravgstat
- name: "2.6 SAP Mounts (Oracle shared home): Mount LVs"
ansible.builtin.debug:
var: oravgstat
verbosity: 2
- name: "2.6 SAP Mounts (Oracle shared home): Gather existing LVs"
ansible.builtin.set_fact:
lvexists: "{{ oravgstat.results | selectattr('stat.exists', 'equalto', true) | map(attribute='item.lv') | list }}"
- name: "2.6 SAP Mounts (Oracle shared home): debug"
ansible.builtin.debug:
var: lvexists
verbosity: 2
# Mount Oracle File System before mounting the sub-directories.
- name: "2.6 SAP Mounts (Oracle shared home): Mount oracle Filesystem"
become: true
become_user: root
ansible.posix.mount:
src: "{{ item.src }}"
path: "{{ item.path }}"
fstype: "{{ item.type }}"
opts: defaults
state: mounted
loop:
- { node_tier: 'oracle-multi-sid', type: 'xfs', src: '/dev/vg_oracle/lv_oracle', path: '/oracle' }
- { node_tier: 'oracle-multi-sid', type: 'xfs', src: '/dev/vg_sap/lv_usrsap', path: '/usr/sap' }
when:
- item.node_tier == "oracle-multi-sid"
# Mount File systems
- name: "2.6 SAP Mounts (Oracle shared home): Mount File systems for Oracle"
become: true
become_user: root
ansible.posix.mount:
src: "{{ dev_path_from_lv_item }}"
# path: "{{ ['/'~item.lv | split('_')[-2], anydb_sid | upper, item.lv | split('_')[-1]] | join('/') }}"
path: >-
{%- set lv_parts = item.lv.split('_') -%}
{%- if lv_parts | length == 2 -%}
{%- set _path = '/' ~ lv_parts[-1] -%}
{%- else -%}
{%- set _path = ['/oracle/' ~lv_parts[-1] | upper ~'/' ~lv_parts[-2]] | join('/') -%}
{%- endif -%}
{{- _path -}}
fstype: "{{ item.fstype }}"
opts: defaults
state: mounted
loop: "{{ logical_volume_groups | sort(attribute='lv') }}"
when:
- item.node_tier == "oracle-multi-sid"
- item.lv in lvexists
- item.lv != 'lv_usrsap'
- item.lv != 'lv_oracle'
register: oraclefilesystemmounts
# # Mount File systems
# - name: "2.6 SAP Mounts (Oracle shared home): Mount SAP Filesystems on Database for installation"
# become: true
# become_user: root
# ansible.posix.mount:
# src: "{{ item.src }}"
# path: "{{ item.path }}"
# fstype: "{{ item.type }}"
# opts: defaults
# state: mounted
# vars:
# # Get all the hostnames in <SID>_SCS group and return only the first hostname
# nfs_server: "{{ query('inventory_hostnames', '{{ sap_sid | upper }}_SCS') | first }}"
# loop:
# - { tier: 'sapos', type: 'xfs', src: '/dev/vg_sap/lv_usrsap', path: '/usr/sap' }
# - { tier: 'ora', type: 'nfs4', src: '{{ nfs_server }}:{{ target_media_location }}', path: '{{ target_media_location }}' } # Special Install Structure; Destroy on Completion
# when:
# item.tier == "sapos" or
# item.tier == "ora"
# - name: "2.6 SAP Mounts (Oracle shared home): Mount SAP Filesystems on Database for installation"
# become: true
# become_user: root
# ansible.posix.mount:
# src: '{{ nfs_server }}:/sapmnt/{{ item.sid | upper }}'
# path: '/sapmnt/{{ item.sid | upper }}'
# fstype: 'nfs4'
# opts: defaults
# state: mounted
# vars:
# # Get all the hostnames in <SID>_SCS group and return only the first hostname
# nfs_server: "{{ query('inventory_hostnames', '{{ sap_sid | upper }}_SCS') | first }}"
# loop: "{{ MULTI_SIDS }}"
# when:
# - node_tier == "oracle-multi-sid"
# ORACLE should be the owner of the file systems /oracle directories.
# .PARAMS folder is not required for oracle install as we are not passing any parameters files.
- name: "2.6 SAP Mounts (Oracle shared home) : Make orasid:dba as owners for Oracle directories - check flag file"
ansible.builtin.stat:
path: /etc/sap_deployment_automation/file_permission.txt
register: oracle_permissions_set
- name: "2.6 SAP Mounts (Oracle shared home) : Make orasid:dba as owners for Oracle directories"
become: true
become_user: root
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
owner: "{{ item.owner }}"
group: "{{ item.group }}"
recurse: true
loop:
- { path: '/oracle', group: 'oinstall', owner: 'oracle'}
when:
- not oracle_permissions_set.stat.exists
- name: "2.6 SAP Mounts (Oracle shared home) : Create file_permission.txt"
become: true
become_user: root
ansible.builtin.file:
path: /etc/sap_deployment_automation/file_permission.txt
state: touch
mode: 0755
# Debug for testing
- name: "2.6 SAP Mounts (Oracle shared home) : Print oracle filesystems"
ansible.builtin.debug:
var: oraclefilesystemmounts
verbosity: 2
# Mount File systems for Oracle Multi-SID on DB and APP servers
- name: "2.6 SAP Mounts: - Mount SAP File systems for installation"
become: true
become_user: root
ansible.posix.mount:
src: '{{ nfs_server }}:/sapmnt/{{ item.sid | upper }}'
path: '/sapmnt/{{ item.sid | upper }}'
fstype: 'nfs4'
opts: defaults
state: mounted
vars:
# Get all the hostnames in <SID>_SCS group and return only the first hostname
nfs_server: "{{ query('inventory_hostnames', '{{ sap_sid | upper }}_SCS') | first }}"
loop: "{{ MULTI_SIDS }}"
when:
- tier == 'sapos'
- MULTI_SIDS is defined
- node_tier != 'scs'
- sap_mnt is undefined
- name: "ORACLE: Make orasid:dba as owners"
become: true
become_user: root
ansible.builtin.file:
path: "{{ item.path }}"
state: directory
owner: "{{ item.owner }}"
group: "{{ item.group }}"
recurse: true
loop:
- { path: '{{ target_media_location }}/SBP', group: 'oinstall', owner: 'oracle'}
- { path: '{{ target_media_location }}/oraclient', group: 'oinstall', owner: 'oracle'}
- { path: '{{ target_media_location }}/oraserver', group: 'oinstall', owner: 'oracle'}