orahost

Role to configure the hostsystem for ansible-oracle

Table of contents


Requirements

  • Minimum Ansible version: 2.16.0

Default Variables

asmlib_rpm

Install oracleasm-support from RPM-Repo on OracleLinux. Value depends on OS-Release from RHEL/OL. Uses variables asmlib_rpm_el6, asmlib_rpm_el7 or asmlib_rpm_el8

Default value

asmlib_rpm: Value from `asmlib_rpm_el6`, `asmlib_rpm_el7` or `asmlib_rpm_el8`

asmlib_rpm_el6

Name / Url for rpm oracleasm-support for RHEL6/OL6.

Default value

asmlib_rpm_el6: http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.4-1.el6.x86_64.rpm

asmlib_rpm_el7

Name / Url for rpm oracleasm-support for RHEL7/OL7.

Default value

asmlib_rpm_el7: http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm

asmlib_rpm_el8

Name / Url for rpm oracleasm-support for RHEL8/OL8.

Default value

asmlib_rpm_el8: https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.17-1.el8.x86_64.rpm

asmlib_rpm_sles

Name / Url for rpm oracleasm-support for SLES.

Default value

asmlib_rpm_sles: http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/sles12/amd64/2.1.8/oracleasm-support-2.1.8-1.SLE12.x86_64.rpm

asmlibsupport_rpm

Install oracleasmlib-support from RPM-Repo on OracleLinux. Value depends on OS-Release from RHEL/OL.

important

Do NOT set this variable.

Set the used variables asmlibsupport_rpm_el6, asmlibsupport_rpm_el7 or asmlibsupport_rpm_el8.

Default value

asmlibsupport_rpm: Value from `asmlibsupport_rpm_el6`, `asmlibsupport_rpm_el7` or `asmlibsupport_rpm_el8`

asmlibsupport_rpm_el6

Default value

asmlibsupport_rpm_el6: http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel6/amd64/2.1.8/oracleasm-support-2.1.8-1.el6.x86_64.rpm

asmlibsupport_rpm_el7

Default value

asmlibsupport_rpm_el7: https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm

asmlibsupport_rpm_el8

Default value

asmlibsupport_rpm_el8: https://yum.oracle.com/repo/OracleLinux/OL8/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el8.x86_64.rpm

configure_etc_hosts

Add {{ ansible_hostname }} {{ ansible_fqdn }} to /etc/hosts`?

Default value

configure_etc_hosts: false

configure_hugepages

Configure Hugepages?

Default value

configure_hugepages: true

configure_hugepages_by

Defines if percent_hugepages or size_in_gb_hugepages is used to define the Hugepages. Allowed values: percentage or memory.

Default value

configure_hugepages_by: memory

Example usage

configure_hugepages_by: memory

configure_hugepages_by: percentage

configure_interconnect

Should the Interconnect network be configured by Ansible

Default value

configure_interconnect: false

configure_limits

Configure /etc/security.d/limits.d/99-oracle-limits.conf?

Default value

configure_limits: true

configure_limits_pam

Configure /etc/pam.d/limits?

Default value

configure_limits_pam: true

configure_oracle_sudo

Add oracle to sudoers for root.

Default value

configure_oracle_sudo: false

configure_ssh

Should passwordless ssh be configured between clusternodes. Only applicable to RAC-installs

Default value

configure_ssh: false

disable_firewall

Should the Linux firewall be disabled? Only applicable to RHEL/OL at the moment.

Default value

disable_firewall: false

disable_numa_boot

Disable numa support during boot.

Default value

disable_numa_boot: true

disable_selinux

Default value

disable_selinux: true

etc_hosts_entries

List of additional entries, optionally along with aliases, to be put into /etc/hosts. E.g. on non-DNS environments or if we don’t rely on DNS

Default value

etc_hosts_entries: []

Example usage

etc_hosts_entries:
  - fqdn: clusternode1.example.com
    ip: 192.168.1.1
  - fqdn: clusternode2.example.com
    ip: 192.168.1.2
    aliases:
      - myalias.example.com
would create following entries in /etc/hosts:
192.168.1.1 clusternode1  clusternode1.example.com
192.168.1.2 clusternode2  clusternode2.example.com  myalias.example.com

etc_hosts_ip

Set IP to 2nd Interface on virtualbox and 1st for all otehr installations

Default value

etc_hosts_ip: "{% if 'virtualbox' in ansible_virtualization_type %}{{ ansible_all_ipv4_addresses[1] }}{% else %}{{ ansible_default_ipv4.address }}{% endif %}"

extra_hugepages_per_instance

According to MOS KB151310’s hugepages_settings.sh we’ve to add 1 page per shm segment. Empirically, instances allocate 4 segments each on Linux. This overhead is considered when computing nr_hugepages_memory

Type: integer

Default value

extra_hugepages_per_instance: 4

extrarepos_disabled

List of disabled yum repos during installation for RHEL/OL.

Default value

extrarepos_disabled: '[]'

extrarepos_enabled

Default value

extrarepos_enabled: "{%- if ansible_distribution == 'OracleLinux' -%}ol{{ ansible_distribution_major_version }}_addons{%- else -%}{%- endif %}"

firewall_open_listener_ports

Should the Listener ports be opened on the Linux firewall? Only applicable to RHEL/OL at the moment.

Default value

firewall_open_listener_ports: true

firewall_service

Used firewall service in OS. Value depends on used Distribution and version.

Default value

firewall_service: firewalld or iptables

grid_users

grid OS-User

Default value

grid_users:
  - username: grid
    uid: 54320
    primgroup: '{{ oracle_group }}'
    othergroups: '{{ asmadmin_group }},{{ asmdba_group }},{{ asmoper_group }},{{ dba_group }}'

host_fs_layout

Define physical Disk, Volume Group, logical Volume, Filesystem and swap Devices. See example configuration

Default value

host_fs_layout: '[]'

Example usage

host_fs_layout:
  - vgname: vgora
    state: present
    filesystem:
      - { mntp: /u01, lvname: lvorabase, lvsize: 25G, fstype: xfs }
      - { mntp: /u02, lvname: lvoradata, lvsize: 25G, fstype: xfs, fsopts: "-m reflink=1 -m crc=1" }
    disk:
      - { device: /dev/sdb, pvname: /dev/sdb1 }

install_os_packages

Install addional RPMs for Oracle?

Default value

install_os_packages: true

keyfile

Default value

keyfile: /tmp/known_hosts

max_size_in_gb_hugepages

Cap HugePages to 70% of physical memory to prevent overcomitting. Only valid when configure_hugepages_by: memory

Default value

max_size_in_gb_hugepages: '{{ ansible_memtotal_mb / 1024 * 0.7 }}'

nr_hugepages

This is an internal variable only. Do not define it!

Default value

nr_hugepages: _unset_

nr_hugepages_memory

This is an internal variable only. Do not define it!

Default value

nr_hugepages_memory: _unset_

nr_hugepages_percent

This is an internal variable only. Do not define it!

Default value

nr_hugepages_percent: _unset_

old_ssh_config

Default value

old_ssh_config: true

oracle_asm_packages

List of RPMs installed during ASM preparation for RHEL/OL.

There should be no reason to change this variable.

Default value

oracle_asm_packages:
  - '{{ asmlib_rpm }}'
  - '{{ asmlibsupport_rpm }}'
  - kmod-oracleasm

oracle_asm_packages_sles

List of RPMs installed during ASM preparation for SLES.

There should be no reason to change this variable.

Default value

oracle_asm_packages_sles:
  - oracleasm-kmp-default
  - oracleasm-kmp-xen
  - '{{ asmlib_rpm_sles }}'

oracle_extra_firewall_ports

Define additional ports to open on the OS firewall.

Default value

oracle_extra_firewall_ports: '[]'

Example usage

oracle_extra_firewall_ports:
  - 5500 # EM Express

oracle_groups

List of OS-groups for Oracle Dependent variables are defined in orahost_meta/defaults/main.yml

Default value

oracle_groups:
  - {group: '{{ asmdba_group }}', gid: 54318}
  - {group: '{{ asmoper_group }}', gid: 54319}
  - {group: '{{ asmadmin_group }}', gid: 54320}
  - {group: '{{ oracle_group }}', gid: 54321}
  - {group: '{{ dba_group }}', gid: 54322}
  - {group: '{{ oper_group }}', gid: 54324}
  - {group: backupdba, gid: 54323}
  - {group: dgdba, gid: 54325}
  - {group: kmdba, gid: 54326}

oracle_hugepages

This is an internal variable. Do not change it!

Default value

oracle_hugepages:
  - {name: vm.nr_hugepages, value: '{{ nr_hugepages }}'}
  - {name: vm.hugetlb_shm_group, value: "{{ oracle_user_getent['ansible_facts']['getent_passwd'][oracle_user][2] }}"}

oracle_hugepages_sysctl_file

Allows to specify the file in which sysctl settings for huge pages will be stored. When unspecified it will first fallback to be oracle_sysctl_file and then to module defaults (/etc/sysctl.conf) should that one also be not defined.

Default value

oracle_hugepages_sysctl_file: _unset_

Example usage

oracle_hugepages_sysctl_file: '/etc/sysctl.d/oracle-hugepages.conf'

oracle_ic_net

Picks the last octet from the public ip to use for cluster-interconnect ip (e.g 3.3.3.51)

Default value

oracle_ic_net: 3.3.3.{{ ansible_all_ipv4_addresses[0].split(".")[-1] }}

oracle_packages

List of additinal RPMs for RHEL/OL.

install_os_packages: true is needed to install the RPMs.

Default value

oracle_packages:
  - bind-utils
  - nfs-utils
  - util-linux-ng
  - xorg-x11-utils
  - xorg-x11-xauth
  - binutils
  - compat-libstdc++-33
  - compat-libstdc++-33.i686
  - unixODBC-devel
  - unixODBC-devel.i686
  - gcc
  - gcc-c++
  - glibc
  - glibc.i686
  - glibc-devel
  - glibc-devel.i686
  - libaio
  - libaio-devel
  - libaio.i686
  - libaio-devel.i686
  - libgcc
  - libgcc.i686
  - libstdc++
  - libstdc++-devel
  - libstdc++.i686
  - libstdc++-devel.i686
  - libXext
  - libXext.i686
  - zlib-devel
  - zlib-devel.i686
  - make
  - sysstat
  - openssh-clients
  - compat-libcap1
  - xorg-x11-xauth
  - xorg-x11-xinit
  - libXtst
  - xdpyinfo
  - xterm
  - xsetroot
  - libXp
  - libXt
  - libXau
  - libXau.i686
  - libXi
  - libXi.i686
  - libX11
  - libX11.i686
  - smartmontools
  - elfutils-libelf-devel.i686
  - elfutils-libelf-devel
  - cpp
  - lsof
  - compat-openssl11
  - fontconfig
  - glibc-langpack-en

oracle_packages_sles_multi

List of additinal RPMs for different SLES version.

List is based on: https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/database-installation-guide-linux.pdf

install_os_packages: true is needed to install the RPMs.

Default value

oracle_packages_sles_multi:
  - name: SLES common packages
    condition: true
    packages:
      - bc
      - binutils
      - glibc
      - glibc-devel
      - libaio-devel
      - libaio1
      - libcap-ng-utils
      - libcap-ng0
      - libcap-progs
      - libcap2
      - libgcc_s1
      - libpcap1
      - libpcre1
      - libpcre16-0
      - libpng16-16
      - libstdc++6
      - libtiff5
      - libXau6
      - libXrender1
      - libXtst6
      - make
      - mksh
      - pixz
      - rdma-core
      - rdma-core-devel
      - smartmontools
      - sysstat
      - xorg-x11-libs
      - xz
  - name: SLES 12 packages
    condition: "{{ ansible_distribution_major_version == '12' }}"
    packages:
      - libcap1
      - libelf-devel
      - libjpeg-turbo
      - libjpeg62
      - libjpeg62-turbo
      - libX11
  - name: SLES 15 packages
    condition: "{{ ansible_distribution_major_version == '15' }}"
    packages:
      - insserv-compat
      - libelf1
      - libgfortran4
      - libjpeg8
      - libX11-6
      - libXext-devel
      - libXext6
      - libXi-devel
      - libXi6
      - libXrender-devel
  - name: SLES 15 SP3+ extra packages
    condition: "{{ ansible_distribution_version is version('15.3', 'ge') }}"
    packages:
      - compat-libpthread-nonshared

oracle_sysctl

Configure parameter in sysctl.

Important

Do not add configurations for Hugepages here!

Default value

oracle_sysctl:
  - {name: kernel.shmall, value: 4294967296}
  - {name: kernel.shmmax, value: 68719476736}
  - {name: kernel.shmmni, value: 4096}
  - {name: kernel.sem, value: 250 32000 100 128}
  - {name: fs.file-max, value: 6815744}
  - {name: fs.aio-max-nr, value: 3145728}
  - {name: net.ipv4.ip_local_port_range, value: 9000 65500}
  - {name: net.core.rmem_default, value: 262144}
  - {name: net.core.rmem_max, value: 4194304}
  - {name: net.core.wmem_default, value: 262144}
  - {name: net.core.wmem_max, value: 1048576}
  - {name: kernel.panic_on_oops, value: 1}
  - {name: vm.min_free_kbytes, value: 524288}

oracle_sysctl_file

Allows to specify the file in which sysctl settings will be stored. When unspecified it will be put to /etc/sysctl.conf by the module defaults (omit)

Default value

oracle_sysctl_file: _unset_

Example usage

oracle_sysctl_file: '/etc/sysctl.d/oracle.conf'

oracle_users

oracle OS-User

Default value

oracle_users:
  - username: oracle
    uid: 54321
    primgroup: '{{ oracle_group }}'
    othergroups: '{{ dba_group }},{{ asmadmin_group }},{{ asmdba_group }},{{ asmoper_group }},backupdba,dgdba,kmdba,{{ oper_group }}'

os_family_supported

Support is limited to RHE/OL and SuSE

Default value

os_family_supported: "{% if ansible_os_family == 'Suse' %}Suse{% else %}RedHat{% endif %}"

os_min_supported_version

Minimum supported versions for SLES is 12.1 and RHEL/OL >= 6.4

Default value

os_min_supported_version: "{% if ansible_os_family == 'Suse' %}12.1{% else %}6.4{% endif %}"

percent_hugepages

Define percentage from RAM for Hugepages. Only valud when configure_hugepages_by: percentage

Default value

percent_hugepages: 50

size_in_gb_hugepages

Size in GB for Hugepages. Only valud when configure_hugepages_by: memory

Default value

size_in_gb_hugepages: 1

ssh_keys

Default value

ssh_keys:
  - /tmp/id_rsa
  - /tmp/id_rsa.pub
  - /tmp/authorized_keys

sudoers_template

Used ansible template for sudoers configuration.

Default value

sudoers_template: sudoers.j2

transparent_hugepage_disable

Disable Transparent Hugepages during boot.

Important

It is strongly recommended to disable Transparent Hugepages. Do not change this variable.

Default value

transparent_hugepage_disable:
  - {disable: echo never >, path: /sys/kernel/mm/transparent_hugepage/enabled, rclocal: /etc/rc.d/rc.local}
  - {disable: echo never >, path: /sys/kernel/mm/transparent_hugepage/defrag, rclocal: /etc/rc.d/rc.local}

transparent_hugepage_disable_by_grub

Alternatively to dynamically disabling transparent hugepages using rc.local, disable transparent hugepages using kernel command line.

Note: Setting transparent_hugepage_disable_by_grub true obsoletes transparent_hugepage_disable

Default value

transparent_hugepage_disable_by_grub: false

Discovered Tags

always

asmlibconfig

etchosts

eth1

group

hostfs

hugepages

iptables,firewalld

molecule-idempotence-notest

nozeroconf

orahost_assert

os_packages, oscheck

os_packages, oscheck, asm1

oscheck

pamconfig

seclimit

selinux

sshkeys

stagedir

sudoadd

sysctl

tphnuma

tphnuma,molecule-idempotence-notest

user

Open Tasks

  • (improvement): SSH-Setup needs a rework…

Dependencies

  • global_handlers
  • orahost_meta

License

license (MIT)

Author

[Mikael Sandström]