- rebase sap roles to version 1.3.4

- add collection files
- update README files and add missing galaxy.yml, LICENSE
- fix syntax error for defining dependent collections in galaxy.yml
- add tools and tests
Resolves: RHEL-16897
This commit is contained in:
Than Ngo 2024-01-25 21:08:00 +01:00
parent 0c077b1eb2
commit 375ee1e1e5
11 changed files with 40419 additions and 176 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
/community.sap_install-f0deb287aaa0fb7d992b95a04b14e263b6690c23.tar.gz
/prepare-redhat.sap_install-main.tar.bz2
/community.sap_install-60f5f40497d54c46b0bd3f79ef1fef4ada148119.tar.gz
/redhat.sap_install-1.3.4.tar.gz

View File

@ -1,90 +0,0 @@
diff -up community.sap_install/roles/sap_general_preconfigure/tests/run-sap_general_preconfigure-tests.py.me community.sap_install/roles/sap_general_preconfigure/tests/run-sap_general_preconfigure-tests.py
--- community.sap_install/roles/sap_general_preconfigure/tests/run-sap_general_preconfigure-tests.py.me 2022-07-12 16:23:48.262581739 +0200
+++ community.sap_install/roles/sap_general_preconfigure/tests/run-sap_general_preconfigure-tests.py 2022-07-12 16:36:43.620709628 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
"""
Tests for role sap_general_preconfigure
diff -up community.sap_install/roles/sap_hana_install/tests/install/run-sap_hana_install-install-tests.py.me community.sap_install/roles/sap_hana_install/tests/install/run-sap_hana_install-install-tests.py
--- community.sap_install/roles/sap_hana_install/tests/install/run-sap_hana_install-install-tests.py.me 2022-07-12 16:36:52.262900877 +0200
+++ community.sap_install/roles/sap_hana_install/tests/install/run-sap_hana_install-install-tests.py 2022-07-12 16:36:59.246055414 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
import os
import sys
diff -up community.sap_install/roles/sap_hana_install/tests/sapcar/run-sap_hana_install-sapcar-tests.py.me community.sap_install/roles/sap_hana_install/tests/sapcar/run-sap_hana_install-sapcar-tests.py
--- community.sap_install/roles/sap_hana_install/tests/sapcar/run-sap_hana_install-sapcar-tests.py.me 2022-07-12 16:37:17.272454327 +0200
+++ community.sap_install/roles/sap_hana_install/tests/sapcar/run-sap_hana_install-sapcar-tests.py 2022-07-12 16:37:24.142606360 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
import os
import sys
diff -up community.sap_install/roles/sap_hana_preconfigure/tests/run-sap_hana_preconfigure-tests.py.me community.sap_install/roles/sap_hana_preconfigure/tests/run-sap_hana_preconfigure-tests.py
--- community.sap_install/roles/sap_hana_preconfigure/tests/run-sap_hana_preconfigure-tests.py.me 2022-07-12 16:37:52.794240408 +0200
+++ community.sap_install/roles/sap_hana_preconfigure/tests/run-sap_hana_preconfigure-tests.py 2022-07-12 16:37:58.553367854 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
"""
Tests for role sap_hana_preconfigure
diff -up community.sap_install/roles/sap_netweaver_preconfigure/tests/run-sap_netweaver_preconfigure-tests.py.me community.sap_install/roles/sap_netweaver_preconfigure/tests/run-sap_netweaver_preconfigure-tests.py
--- community.sap_install/roles/sap_netweaver_preconfigure/tests/run-sap_netweaver_preconfigure-tests.py.me 2022-07-12 16:37:34.384833016 +0200
+++ community.sap_install/roles/sap_netweaver_preconfigure/tests/run-sap_netweaver_preconfigure-tests.py 2022-07-12 16:37:41.495990384 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
"""
Tests for role sap_netweaver_preconfigure
diff -up community.sap_install/tools/swpm2_parameters_inifile_generate.py.me community.sap_install/tools/swpm2_parameters_inifile_generate.py
--- community.sap_install/tools/swpm2_parameters_inifile_generate.py.me 2022-07-12 16:38:10.026621753 +0200
+++ community.sap_install/tools/swpm2_parameters_inifile_generate.py 2022-07-12 16:38:29.915061875 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
diff -up community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_general_preconfigure/tools/beautify-assert-output.sh.me community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_general_preconfigure/tools/beautify-assert-output.sh
--- community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_general_preconfigure/tools/beautify-assert-output.sh.me 2022-07-12 17:48:10.476508351 +0200
+++ community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_general_preconfigure/tools/beautify-assert-output.sh 2022-07-12 17:48:27.813896005 +0200
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/bash
# default font color: Light Cyan, which should be readable on both bright and dark background
__FONT_COLOR=36m
diff -up community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_install/files/tmp/tail-f-hdblcm-install-trc.sh.me community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_install/files/tmp/tail-f-hdblcm-install-trc.sh
--- community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_install/files/tmp/tail-f-hdblcm-install-trc.sh.me 2022-07-12 17:48:35.527068474 +0200
+++ community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_install/files/tmp/tail-f-hdblcm-install-trc.sh 2022-07-12 17:48:43.703251292 +0200
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/bash
while true; do
# in case hdblcm has not yet started, we assume that it is waiting for sapdsigner to complete:
diff -up community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_preconfigure/tools/beautify-assert-output.sh.me community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_preconfigure/tools/beautify-assert-output.sh
--- community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_preconfigure/tools/beautify-assert-output.sh.me 2022-07-12 17:49:22.425117059 +0200
+++ community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_hana_preconfigure/tools/beautify-assert-output.sh 2022-07-12 17:49:30.241291825 +0200
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/bash
# default font color: Light Cyan, which should be readable on both bright and dark background
__FONT_COLOR=36m
diff -up community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_netweaver_preconfigure/tools/beautify-assert-output.sh.me community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_netweaver_preconfigure/tools/beautify-assert-output.sh
--- community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_netweaver_preconfigure/tools/beautify-assert-output.sh.me 2022-07-12 17:48:51.584427510 +0200
+++ community.sap_install-29b37456211c8bf825547f614652f24cf324860a/roles/sap_netweaver_preconfigure/tools/beautify-assert-output.sh 2022-07-12 17:49:00.678630847 +0200
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/bash
# default font color: Light Cyan, which should be readable on both bright and dark background
__FONT_COLOR=36m

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,128 @@
commit 83db825f7f30445408efa6061631d8dd0590e891
Author: Than Ngo <than@redhat.com>
Date: Thu Jan 25 16:17:21 2024 +0100
add missing tools folders
Signed-off-by: Than Ngo <than@redhat.com>
diff --git a/roles/sap_general_preconfigure/tools/beautify-assert-output.sh b/roles/sap_general_preconfigure/tools/beautify-assert-output.sh
new file mode 100755
index 0000000..f48087c
--- /dev/null
+++ b/roles/sap_general_preconfigure/tools/beautify-assert-output.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# default font color: Light Cyan, which should be readable on both bright and dark background
+__FONT_COLOR=36m
+
+if [[ ${1}. == "font_light_gray". ]]; then
+ __FONT_COLOR=37m
+elif [[ ${1}. == "font_no_color". ]]; then
+ __FONT_COLOR=30m
+fi
+
+if [[ ${2}. == "reset." ]]; then
+ awk 'BEGIN{printf ("\033['${__FONT_COLOR}'Resetting font color\n")}'
+ exit
+fi
+
+awk '{sub (" \"msg\": ", "")}
+ /TASK/{task_line=$0}
+ /fatal:/{fatal_line=$0; nfatal[host]++}
+ /...ignoring/{nfatal[host]--; if (nfatal[host]<0) nfatal[host]=0}
+ /^[a-z]/&&/: \[/{gsub ("\\[", ""); gsub ("]", ""); gsub (":", ""); host=$2}
+ /SAP note/{print "\033['${__FONT_COLOR}'[" host"] "$0}
+ /FAIL:/{nfail[host]++; print "\033[31m[" host"] "$0}
+ /WARN:/{nwarn[host]++; print "\033[33m[" host"] "$0}
+ /PASS:/{npass[host]++; print "\033[32m[" host"] "$0}
+ /INFO:/{print "\033[34m[" host"] "$0}
+ /changed/&&/unreachable/{print "\033['${__FONT_COLOR}'[" host"] "$0}
+ END{print ("---"); for (var in npass) {printf ("[%s] ", var); if (nfatal[var]>0) {
+ printf ("\033[31mFATAL ERROR!!! Playbook might have been aborted!!!\033['${__FONT_COLOR}' Last TASK and fatal output:\n"); print task_line, fatal_line
+ exit 199
+ }
+ else printf ("\033[31mFAIL: %d \033[33mWARN: %d \033[32mPASS: %d\033['${__FONT_COLOR}'\n", nfail[var], nwarn[var], npass[var])}
+ if (nfail[var] != 0) exit (nfail[var])
+ }'
diff --git a/roles/sap_hana_preconfigure/tools/beautify-assert-output.sh b/roles/sap_hana_preconfigure/tools/beautify-assert-output.sh
new file mode 100755
index 0000000..f48087c
--- /dev/null
+++ b/roles/sap_hana_preconfigure/tools/beautify-assert-output.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# default font color: Light Cyan, which should be readable on both bright and dark background
+__FONT_COLOR=36m
+
+if [[ ${1}. == "font_light_gray". ]]; then
+ __FONT_COLOR=37m
+elif [[ ${1}. == "font_no_color". ]]; then
+ __FONT_COLOR=30m
+fi
+
+if [[ ${2}. == "reset." ]]; then
+ awk 'BEGIN{printf ("\033['${__FONT_COLOR}'Resetting font color\n")}'
+ exit
+fi
+
+awk '{sub (" \"msg\": ", "")}
+ /TASK/{task_line=$0}
+ /fatal:/{fatal_line=$0; nfatal[host]++}
+ /...ignoring/{nfatal[host]--; if (nfatal[host]<0) nfatal[host]=0}
+ /^[a-z]/&&/: \[/{gsub ("\\[", ""); gsub ("]", ""); gsub (":", ""); host=$2}
+ /SAP note/{print "\033['${__FONT_COLOR}'[" host"] "$0}
+ /FAIL:/{nfail[host]++; print "\033[31m[" host"] "$0}
+ /WARN:/{nwarn[host]++; print "\033[33m[" host"] "$0}
+ /PASS:/{npass[host]++; print "\033[32m[" host"] "$0}
+ /INFO:/{print "\033[34m[" host"] "$0}
+ /changed/&&/unreachable/{print "\033['${__FONT_COLOR}'[" host"] "$0}
+ END{print ("---"); for (var in npass) {printf ("[%s] ", var); if (nfatal[var]>0) {
+ printf ("\033[31mFATAL ERROR!!! Playbook might have been aborted!!!\033['${__FONT_COLOR}' Last TASK and fatal output:\n"); print task_line, fatal_line
+ exit 199
+ }
+ else printf ("\033[31mFAIL: %d \033[33mWARN: %d \033[32mPASS: %d\033['${__FONT_COLOR}'\n", nfail[var], nwarn[var], npass[var])}
+ if (nfail[var] != 0) exit (nfail[var])
+ }'
diff --git a/roles/sap_netweaver_preconfigure/tools/beautify-assert-output.sh b/roles/sap_netweaver_preconfigure/tools/beautify-assert-output.sh
new file mode 100755
index 0000000..f48087c
--- /dev/null
+++ b/roles/sap_netweaver_preconfigure/tools/beautify-assert-output.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# default font color: Light Cyan, which should be readable on both bright and dark background
+__FONT_COLOR=36m
+
+if [[ ${1}. == "font_light_gray". ]]; then
+ __FONT_COLOR=37m
+elif [[ ${1}. == "font_no_color". ]]; then
+ __FONT_COLOR=30m
+fi
+
+if [[ ${2}. == "reset." ]]; then
+ awk 'BEGIN{printf ("\033['${__FONT_COLOR}'Resetting font color\n")}'
+ exit
+fi
+
+awk '{sub (" \"msg\": ", "")}
+ /TASK/{task_line=$0}
+ /fatal:/{fatal_line=$0; nfatal[host]++}
+ /...ignoring/{nfatal[host]--; if (nfatal[host]<0) nfatal[host]=0}
+ /^[a-z]/&&/: \[/{gsub ("\\[", ""); gsub ("]", ""); gsub (":", ""); host=$2}
+ /SAP note/{print "\033['${__FONT_COLOR}'[" host"] "$0}
+ /FAIL:/{nfail[host]++; print "\033[31m[" host"] "$0}
+ /WARN:/{nwarn[host]++; print "\033[33m[" host"] "$0}
+ /PASS:/{npass[host]++; print "\033[32m[" host"] "$0}
+ /INFO:/{print "\033[34m[" host"] "$0}
+ /changed/&&/unreachable/{print "\033['${__FONT_COLOR}'[" host"] "$0}
+ END{print ("---"); for (var in npass) {printf ("[%s] ", var); if (nfatal[var]>0) {
+ printf ("\033[31mFATAL ERROR!!! Playbook might have been aborted!!!\033['${__FONT_COLOR}' Last TASK and fatal output:\n"); print task_line, fatal_line
+ exit 199
+ }
+ else printf ("\033[31mFAIL: %d \033[33mWARN: %d \033[32mPASS: %d\033['${__FONT_COLOR}'\n", nfail[var], nwarn[var], npass[var])}
+ if (nfail[var] != 0) exit (nfail[var])
+ }'

View File

@ -0,0 +1,88 @@
commit 54eb60d7ce67720ac79ebc558a97e7c16c354f97
Author: Bernd Finger <bfinger@redhat.com>
Date: Mon Jan 22 19:02:16 2024 +0100
version 1.3.4: Also add the collection tar file and galaxy.yml
Signed-off-by: Bernd Finger <bfinger@redhat.com>
diff --git a/galaxy.yml b/galaxy.yml
new file mode 100644
index 0000000..4ad1cf3
--- /dev/null
+++ b/galaxy.yml
@@ -0,0 +1,70 @@
+---
+
+### REQUIRED
+# The namespace of the collection. This can be a company/brand/organization or product namespace under which all
+# content lives. May only contain alphanumeric lowercase characters and underscores. Namespaces cannot start with
+# underscores or numbers and cannot contain consecutive underscores
+namespace: redhat
+
+# The name of the collection. Has the same character restrictions as 'namespace'
+name: sap_install
+
+# The version of the collection. Must be compatible with semantic versioning
+version: 1.3.4
+
+# The path to the Markdown (.md) readme file. This path is relative to the root of the collection
+readme: README.md
+
+# A list of the collection's content authors. Can be just the name or in the format 'Full Name <email> (url)
+authors:
+ - Bernd Finger <bfinger(at)redhat.com>
+ - Sean Freeman <sean.freeman(at)uk.ibm.com>
+ - Rainer Leber <rainer.leber(at)sva.de>
+ - Markus Koch <mkoch(at)redhat.com>
+ - Markus Moster <mmoster(at)redhat.com>
+ - Janine Fuchs <jfuchs(at)redhat.com>
+ - Steven Stringer <steven.stringer(at)suse.com>
+ - Marcel Mamula <marcel.mamula(at)suse.com>
+
+### OPTIONAL but strongly recommended
+# A short summary description of the collection
+description: Collection of Ansible Roles for SAP software installation in various deployment configurations
+
+# Either a single license or a list of licenses for content inside of a collection. Ansible Galaxy currently only
+# accepts L(SPDX,https://spdx.org/licenses/) licenses. This key is mutually exclusive with 'license_file'
+
+# The path to the license file for the collection. This path is relative to the root of the collection. This key is
+# mutually exclusive with 'license'
+license_file: LICENSE
+
+# A list of tags you want to associate with the collection for indexing/searching. A tag name has the same character
+# requirements as 'namespace' and 'name'
+tags:
+ - database
+ - application
+ - sap
+
+# Collections that this collection requires to be installed for it to be usable. The key of the dict is the
+# collection label 'namespace.name'. The value is a version range
+# L(specifiers,https://python-semanticversion.readthedocs.io/en/latest/#requirement-specification). Multiple version
+# range specifiers can be set and are separated by ','
+dependencies:
+ 'fedora.linux_system_roles': '>=1.13.0'
+
+# The URL of the originating SCM repository
+repository: https://github.com/sap-linuxlab/community.sap_install
+
+# The URL to any online docs
+documentation: https://github.com/sap-linuxlab/sap-linuxlab.github.io/blob/master/README.md
+
+# The URL to the homepage of the collection/project
+homepage: https://sap-linuxlab.github.io
+
+# The URL to the collection issue tracker
+issues: https://github.com/sap-linuxlab/community.sap_install/issues
+
+# A list of file glob-like patterns used to filter any files or directories that should not be included in the build
+# artifact. A pattern is matched from the relative path of the file or directory of the collection directory. This
+# uses 'fnmatch' to match the files or directories. Some directories and files like 'galaxy.yml', '*.pyc', '*.retry',
+# and '.git' are always filtered
+build_ignore: ['tests', 'internal-*']
diff --git a/redhat-sap_install-1.3.4.tar.gz b/redhat-sap_install-1.3.4.tar.gz
new file mode 100644
index 0000000..c966355
Binary files /dev/null and b/redhat-sap_install-1.3.4.tar.gz differ

View File

@ -0,0 +1,61 @@
commit a0ea9108b9c419dc17d8567f7fbe2a360af3fba2
Author: Bernd Finger <bfinger@redhat.com>
Date: Thu Jan 18 21:03:41 2024 +0100
version 1.3.4: Update to json files only
Signed-off-by: Bernd Finger <bfinger@redhat.com>
diff --git a/FILES.json b/FILES.json
index 49ae270..0aa2f0c 100644
--- a/FILES.json
+++ b/FILES.json
@@ -2566,7 +2566,7 @@
"name": "roles/sap_hana_install/README.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2330268b5a15bf24ec750685f8379ed3a41843bbd8074ced5cb3d86b65fc16fb",
+ "chksum_sha256": "b49525821974bb81fbca5efd3682cc178462d9f1993bb5088ee90bf678c8e361",
"format": 1
},
{
@@ -4540,7 +4540,7 @@
"name": "roles/sap_vm_preconfigure/README.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "94da535d322ab5064cac644d1a781ffdac31141ba090a5c7b64dcc6b01e33c27",
+ "chksum_sha256": "a8cdcdd8875b9984c31d991ef15a0bd5875182cdc0e08245c04475d7b576b1e6",
"format": 1
},
{
@@ -4617,7 +4617,7 @@
"name": "docs/README_sap_hana_install.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2330268b5a15bf24ec750685f8379ed3a41843bbd8074ced5cb3d86b65fc16fb",
+ "chksum_sha256": "b49525821974bb81fbca5efd3682cc178462d9f1993bb5088ee90bf678c8e361",
"format": 1
},
{
@@ -4652,7 +4652,7 @@
"name": "docs/README_sap_vm_preconfigure.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "94da535d322ab5064cac644d1a781ffdac31141ba090a5c7b64dcc6b01e33c27",
+ "chksum_sha256": "a8cdcdd8875b9984c31d991ef15a0bd5875182cdc0e08245c04475d7b576b1e6",
"format": 1
},
{
diff --git a/MANIFEST.json b/MANIFEST.json
index d0dfe35..a9a4f02 100644
--- a/MANIFEST.json
+++ b/MANIFEST.json
@@ -34,7 +34,7 @@
"name": "FILES.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1b6d71a1dfc5206431e93f8b8a954fe9638010cf6513e372d377eb84c665db98",
+ "chksum_sha256": "e6402c80541e6642518408607ee3a370b11d69eb631f66ef520b70d725c84619",
"format": 1
},
"format": 1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,519 @@
commit ecaccb7a32617943e5bfc41de0e9269ae93e38f8
Author: Bernd Finger <bfinger@redhat.com>
Date: Mon Jan 22 18:57:29 2024 +0100
version 1.3.4: Further fixes
- Add missing LICENSE file
- Fix syntax error for defining dependent collections in galaxy.yml
- Use certain updated README.md files
- Add .ansible-lint and .yamllint.yml
Signed-off-by: Bernd Finger <bfinger@redhat.com>
diff --git a/.ansible-lint b/.ansible-lint
new file mode 100644
index 0000000..fc315df
--- /dev/null
+++ b/.ansible-lint
@@ -0,0 +1,36 @@
+---
+# Collection wide lint-file
+# DO NOT CHANGE
+exclude_paths:
+ - .cache/
+ - .github/
+ #- docs/
+ - changelogs/
+ - playbooks/
+ - roles/sap_anydb_install_oracle
+ #- roles/sap_general_preconfigure
+ #- roles/sap_ha_install_hana_hsr
+ #- roles/sap_ha_pacemaker_cluster
+ #- roles/sap_hana_install
+ #- roles/sap_hana_preconfigure
+ - roles/sap_hostagent
+ - roles/sap_hypervisor_node_preconfigure
+ #- roles/sap_install_media_detect
+ #- roles/sap_netweaver_preconfigure
+ #- roles/sap_storage_setup
+ #- roles/sap_swpm
+ - roles/sap_vm_preconfigure
+ - tests/
+enable_list:
+ - yaml
+skip_list:
+ # We don't want to enforce new Ansible versions for Galaxy:
+ - meta-runtime[unsupported-version]
+ # We do not want to use checks which are marked as experimental:
+ - experimental
+ # We use ignore_errors for all the assert tasks, which should be acceptable:
+ - ignore-errors
+ # We want to allow single digit version numbers in a role's meta/main.yml file:
+ - schema
+ # Allow templating inside name because it creates more detailed output:
+ - name[template]
diff --git a/.yamllint.yml b/.yamllint.yml
new file mode 100644
index 0000000..57ef427
--- /dev/null
+++ b/.yamllint.yml
@@ -0,0 +1,21 @@
+---
+# Based on ansible-lint config
+extends: default
+
+rules:
+ braces: {max-spaces-inside: 1, level: error}
+ brackets: {max-spaces-inside: 1, level: error}
+# colons: {max-spaces-after: -1, level: error}
+# commas: {max-spaces-after: -1, level: error}
+ comments: disable
+ comments-indentation: disable
+# document-start: disable
+# empty-lines: {max: 3, level: error}
+# hyphens: {level: error}
+# indentation: disable
+# key-duplicates: enable
+ line-length: disable
+# new-line-at-end-of-file: disable
+# new-lines: {type: unix}
+# trailing-spaces: disable
+ truthy: disable
diff --git a/FILES.json b/FILES.json
index 0aa2f0c..9d05f0a 100644
--- a/FILES.json
+++ b/FILES.json
@@ -4662,6 +4662,27 @@
"chksum_sha256": "c21704059069b661602183a76facc9b89d8ce762347d70a2814c1115309d2706",
"format": 1
},
+ {
+ "name": ".ansible-lint",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e7c54d2713dff6625c16c9c4054c34b6951302bcc80fd224d7c6eeacd7989e35",
+ "format": 1
+ },
+ {
+ "name": ".yamllint.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "472c1f78b944dd89a218a05882b9e6e6f7a0b468680648ea16aec26024d698b9",
+ "format": 1
+ },
+ {
+ "name": "LICENSE",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
+ "format": 1
+ },
{
"name": "CHANGELOG.rst",
"ftype": "file",
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..261eeb9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/MANIFEST.json b/MANIFEST.json
index a9a4f02..a1fad57 100644
--- a/MANIFEST.json
+++ b/MANIFEST.json
@@ -20,11 +20,11 @@
"sap"
],
"description": "Collection of Ansible Roles for SAP software installation in various deployment configurations",
- "license": [
- "Apache-2.0"
- ],
- "license_file": null,
- "dependencies": {},
+ "license": [],
+ "license_file": "LICENSE",
+ "dependencies": {
+ "fedora.linux_system_roles": ">=1.13.0"
+ },
"repository": "https://github.com/sap-linuxlab/community.sap_install",
"documentation": "https://github.com/sap-linuxlab/sap-linuxlab.github.io/blob/master/README.md",
"homepage": "https://sap-linuxlab.github.io",
@@ -34,7 +34,7 @@
"name": "FILES.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e6402c80541e6642518408607ee3a370b11d69eb631f66ef520b70d725c84619",
+ "chksum_sha256": "63450d0681ed48ccd03707ccabe7cef5f0323602faef9b542b4b60b26707d7b6",
"format": 1
},
"format": 1
diff --git a/docs/README_sap_hana_install.md b/docs/README_sap_hana_install.md
index f3617e8..2deb5ac 100644
--- a/docs/README_sap_hana_install.md
+++ b/docs/README_sap_hana_install.md
@@ -12,7 +12,6 @@ make sure that the required collections are installed, for example by using the
### Configure your system for the installation of SAP HANA
- Make sure required volumes and filesystems are configured in the host.
-You can use the role `sap_storage_setup` to configure this. More info [here](/roles/sap_storage_setup)
- Run the roles `sap_general_preconfigure` and `sap_hana_preconfigure` for installing required packages and
for configuring system settings.
@@ -160,6 +159,12 @@ The firewall ports for SAP HANA are defined in member `port` of the first field
member `state` is set to `enabled`, the ports will be enabled. If the member `state` is set to `disabled`,
the ports will be disabled, which might be useful for testing.
+Certain parameters have identical meanings, for supporting different naming schemes in playbooks and inventories.
+You can find those in the task `Rename some variables used by hdblcm configfile` of the file `tasks/main.yml`.
+Example: The parameter `sap_hana_install_number`, which is used by the role to define the hdblm parameter `number`
+(= SAP HANA instance number) can be defined by setting `sap_hana_instance_number`, `sap_hana_install_instance_nr`,
+`sap_hana_install_instance_number`, or `sap_hana_install_number`. The order of precedence is from left to right.
+
### Default Parameters
Please check the default parameters file for more information on other parameters that can be used as an input
@@ -189,7 +194,7 @@ Sample Ansible Playbook Execution
sap_hana_install_software_directory: /software/hana
sap_hana_install_common_master_password: 'NewPass$321'
sap_hana_install_sid: 'H01'
- sap_hana_install_instance_number: '00'
+ sap_hana_install_instance_nr: '00'
roles:
- sap_hana_install
```
@@ -208,7 +213,7 @@ Sample Ansible Playbook Execution
sap_hana_install_root_password: 'NewPass$321'
sap_hana_install_addhosts: 'host2:role=worker,host3:role=worker:group=g02,host4:role=standby:group=g02'
sap_hana_install_sid: 'H01'
- sap_hana_install_instance_number: '00'
+ sap_hana_install_instance_nr: '00'
roles:
- sap_hana_install
```
@@ -228,7 +233,7 @@ Sample Ansible Playbook Execution
sap_hana_install_common_master_password: 'NewPass$321'
sap_hana_install_root_password: 'NewPass$321'
sap_hana_install_sid: 'H01'
- sap_hana_install_instance_number: '00'
+ sap_hana_install_instance_nr: '00'
roles:
- sap_hana_install
```
@@ -242,7 +247,7 @@ You can find more complex playbooks in directory `playbooks` of the collection `
#### Perform Initial Checks
These checks are only performed if `sap_hana_install_force` is set to `true`. Its default value is `false`
-- If variable `sap_hana_install_check_sidadm_user` is undefined or set to `y`: Check if user sidadm exists. If yes,
+- If variable `sap_hana_install_check_sidadm_user` is undefined or set to `yes`: Check if user sidadm exists. If yes,
abort the role.
- Check if `/usr/sap/hostctrl/exe/saphostctrl` exists and get info on running HANA instances.
@@ -261,7 +266,7 @@ These checks are only performed if `sap_hana_install_force` is set to `true`. It
- If file `hdblcm` is found, skip the next step and proceed with the `hdblcm` existence check.
- - If file `hdblcm` ist not found, proceed with the next step.
+ - If file `hdblcm` is not found, proceed with the next step.
- Prepare SAR files for `hdblcm`:
@@ -303,7 +308,7 @@ in a temporary directory for use by the hdblcm command in the next step.
- Set Log Mode key to overwrite value and apply to system.
-- Apply SAP HANA license to the new deployed instance if set to `y`.
+- Apply SAP HANA license to the new deployed instance if set to `yes`.
- Set expiry of Unix created users to `never`.
diff --git a/docs/README_sap_vm_preconfigure.md b/docs/README_sap_vm_preconfigure.md
index e86e885..95b5f39 100644
--- a/docs/README_sap_vm_preconfigure.md
+++ b/docs/README_sap_vm_preconfigure.md
@@ -1,5 +1,3 @@
-`EXPERIMENTAL`
-
sap_vm_preconfigure
==================
diff --git a/roles/sap_hana_install/README.md b/roles/sap_hana_install/README.md
index f3617e8..2deb5ac 100644
--- a/roles/sap_hana_install/README.md
+++ b/roles/sap_hana_install/README.md
@@ -12,7 +12,6 @@ make sure that the required collections are installed, for example by using the
### Configure your system for the installation of SAP HANA
- Make sure required volumes and filesystems are configured in the host.
-You can use the role `sap_storage_setup` to configure this. More info [here](/roles/sap_storage_setup)
- Run the roles `sap_general_preconfigure` and `sap_hana_preconfigure` for installing required packages and
for configuring system settings.
@@ -160,6 +159,12 @@ The firewall ports for SAP HANA are defined in member `port` of the first field
member `state` is set to `enabled`, the ports will be enabled. If the member `state` is set to `disabled`,
the ports will be disabled, which might be useful for testing.
+Certain parameters have identical meanings, for supporting different naming schemes in playbooks and inventories.
+You can find those in the task `Rename some variables used by hdblcm configfile` of the file `tasks/main.yml`.
+Example: The parameter `sap_hana_install_number`, which is used by the role to define the hdblm parameter `number`
+(= SAP HANA instance number) can be defined by setting `sap_hana_instance_number`, `sap_hana_install_instance_nr`,
+`sap_hana_install_instance_number`, or `sap_hana_install_number`. The order of precedence is from left to right.
+
### Default Parameters
Please check the default parameters file for more information on other parameters that can be used as an input
@@ -189,7 +194,7 @@ Sample Ansible Playbook Execution
sap_hana_install_software_directory: /software/hana
sap_hana_install_common_master_password: 'NewPass$321'
sap_hana_install_sid: 'H01'
- sap_hana_install_instance_number: '00'
+ sap_hana_install_instance_nr: '00'
roles:
- sap_hana_install
```
@@ -208,7 +213,7 @@ Sample Ansible Playbook Execution
sap_hana_install_root_password: 'NewPass$321'
sap_hana_install_addhosts: 'host2:role=worker,host3:role=worker:group=g02,host4:role=standby:group=g02'
sap_hana_install_sid: 'H01'
- sap_hana_install_instance_number: '00'
+ sap_hana_install_instance_nr: '00'
roles:
- sap_hana_install
```
@@ -228,7 +233,7 @@ Sample Ansible Playbook Execution
sap_hana_install_common_master_password: 'NewPass$321'
sap_hana_install_root_password: 'NewPass$321'
sap_hana_install_sid: 'H01'
- sap_hana_install_instance_number: '00'
+ sap_hana_install_instance_nr: '00'
roles:
- sap_hana_install
```
@@ -242,7 +247,7 @@ You can find more complex playbooks in directory `playbooks` of the collection `
#### Perform Initial Checks
These checks are only performed if `sap_hana_install_force` is set to `true`. Its default value is `false`
-- If variable `sap_hana_install_check_sidadm_user` is undefined or set to `y`: Check if user sidadm exists. If yes,
+- If variable `sap_hana_install_check_sidadm_user` is undefined or set to `yes`: Check if user sidadm exists. If yes,
abort the role.
- Check if `/usr/sap/hostctrl/exe/saphostctrl` exists and get info on running HANA instances.
@@ -261,7 +266,7 @@ These checks are only performed if `sap_hana_install_force` is set to `true`. It
- If file `hdblcm` is found, skip the next step and proceed with the `hdblcm` existence check.
- - If file `hdblcm` ist not found, proceed with the next step.
+ - If file `hdblcm` is not found, proceed with the next step.
- Prepare SAR files for `hdblcm`:
@@ -303,7 +308,7 @@ in a temporary directory for use by the hdblcm command in the next step.
- Set Log Mode key to overwrite value and apply to system.
-- Apply SAP HANA license to the new deployed instance if set to `y`.
+- Apply SAP HANA license to the new deployed instance if set to `yes`.
- Set expiry of Unix created users to `never`.

View File

@ -0,0 +1,326 @@
commit ed9bc223635d3e08661b506fdb9d62aef56032b0
Author: Bernd Finger <bfinger@redhat.com>
Date: Mon Jan 22 19:22:10 2024 +0100
version 1.3.4-rhel-package: Use modified README.md files
These files are adapted for the RHEL package rhel-system-roles-sap.
Signed-off-by: Bernd Finger <bfinger@redhat.com>
diff --git a/docs/README_sap_general_preconfigure.md b/docs/README_sap_general_preconfigure.md
index c1e228f..d58e984 100644
--- a/docs/README_sap_general_preconfigure.md
+++ b/docs/README_sap_general_preconfigure.md
@@ -4,12 +4,11 @@ This role installs required packages and performs configuration steps which are
For SLES systems, this role may not be necessary. The majority of SAP preparation and tuning is covered by `saptune` which is configured in the `sap_hana_preconfigure` and `sap_netweaver_preconfigure` roles.
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is: "Fully supported for RHEL managed nodes".
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
+## Requirements
To use this role, your system needs to be installed according to:
- RHEL 7: SAP note 2002167, Red Hat Enterprise Linux 7.x: Installation and Upgrade, section "Installing Red Hat Enterprise Linux 7"
diff --git a/docs/README_sap_ha_install_hana_hsr.md b/docs/README_sap_ha_install_hana_hsr.md
index f8a5730..f7f6d6c 100644
--- a/docs/README_sap_ha_install_hana_hsr.md
+++ b/docs/README_sap_ha_install_hana_hsr.md
@@ -2,6 +2,10 @@
Ansible role for SAP HANA System Replication Setup on 2 nodes.
+## Support Status
+
+The support status of this role is: "Technology Preview".
+
## Prerequisites
- target nodes are on the same OS level
diff --git a/docs/README_sap_ha_pacemaker_cluster.md b/docs/README_sap_ha_pacemaker_cluster.md
index 30f194c..a0877f5 100644
--- a/docs/README_sap_ha_pacemaker_cluster.md
+++ b/docs/README_sap_ha_pacemaker_cluster.md
@@ -5,6 +5,10 @@
Ansible Role for installation and configuration of Linux Pacemaker for High Availability of SAP Systems run on various Infrastructure Platforms.
+## Support Status
+
+The support status of this role is: "Technology Preview".
+
## Scope
This Ansible Role provides:
diff --git a/docs/README_sap_hana_install.md b/docs/README_sap_hana_install.md
index 2deb5ac..9d627e1 100644
--- a/docs/README_sap_hana_install.md
+++ b/docs/README_sap_hana_install.md
@@ -2,12 +2,11 @@
Ansible role for SAP HANA Installation
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is: "Fully supported for RHEL managed nodes"
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
+## Requirements
### Configure your system for the installation of SAP HANA
diff --git a/docs/README_sap_hana_preconfigure.md b/docs/README_sap_hana_preconfigure.md
index 6ee18a6..2cb6ca6 100644
--- a/docs/README_sap_hana_preconfigure.md
+++ b/docs/README_sap_hana_preconfigure.md
@@ -4,12 +4,11 @@ This role installs additional required packages and performs additional configur
If you want to configure a RHEL system for the installation and later usage of SAP HANA, you have to first run role sap_general_preconfigure
and then role sap_hana_preconfigure. However, if we wish to run SLES for HANA, you may run only this role.
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is: "Fully supported for RHEL managed nodes".
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
+## Requirements
To use this role, your system needs to be configured with the basic requirements for SAP NetWeaver or SAP HANA. This is typically done by running role sap_general_preconfigure (for RHEL managed nodes before RHEL 7.6, community maintained role sap-base-settings can be used).
diff --git a/docs/README_sap_hypervisor_node_preconfigure.md b/docs/README_sap_hypervisor_node_preconfigure.md
index 754e23a..2105d0d 100644
--- a/docs/README_sap_hypervisor_node_preconfigure.md
+++ b/docs/README_sap_hypervisor_node_preconfigure.md
@@ -4,6 +4,10 @@ This role will configure the following hypervisors in order to run SAP workloads
* Red Hat OpenShift Virtualization (OCPV)
* Red Hat Enterprise Virtualization (RHV)
+## Support Status
+
+The support status of this role is: "Technology Preview".
+
## Platform: Red Hat OpenShift Virtualization
Will configure a plain vanilla OpenShift cluster so it can be used for SAP workloads.
diff --git a/docs/README_sap_netweaver_preconfigure.md b/docs/README_sap_netweaver_preconfigure.md
index ae666cc..d18c96d 100644
--- a/docs/README_sap_netweaver_preconfigure.md
+++ b/docs/README_sap_netweaver_preconfigure.md
@@ -4,6 +4,10 @@ This role installs additional required packages and performs additional configur
If you want to configure a RHEL system for the installation and later usage of SAP NetWeaver, you have to first run role `sap_general_preconfigure` and then role sap_netweaver_preconfigure.
For SLES, running the `sap_general_preconfigure` role is not necessary.
+## Support Status
+
+The support status of this role is: "Fully supported for RHEL managed nodes".
+
## Requirements
To use this role, your system needs to be configured with the basic requirements for SAP NetWeaver or SAP HANA. This is typically done by
diff --git a/docs/README_sap_swpm.md b/docs/README_sap_swpm.md
index 82f9b14..064574f 100644
--- a/docs/README_sap_swpm.md
+++ b/docs/README_sap_swpm.md
@@ -2,16 +2,11 @@
Ansible role for SAP software installation using SWPM
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is as defined below.
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
-
-## Scope
-
-*NOTE*: This Ansible role is delivered by Red Hat with a support scope of *Technology Preview* only for the following deployment scenarios:
+This Ansible role is delivered by Red Hat with a support scope of *Technology Preview* only for the following deployment scenarios:
S/4HANA 2021 and S/4HANA 2022 single-host installation on x86_64: RHEL 8.4, 8.6, 9.0 and ppc64le: RHEL 8.4 and 8.6.
Only the `default` role mode is supported.
diff --git a/docs/README_sap_vm_preconfigure.md b/docs/README_sap_vm_preconfigure.md
index 95b5f39..57aae59 100644
--- a/docs/README_sap_vm_preconfigure.md
+++ b/docs/README_sap_vm_preconfigure.md
@@ -3,6 +3,9 @@ sap_vm_preconfigure
This role will set and check the required settings and parameters for a guest (VM) running on RHV/KVM for SAP HANA.
+## Support Status
+
+The support status of this role is: "Technology Preview".
Requirements
------------
diff --git a/roles/sap_general_preconfigure/README.md b/roles/sap_general_preconfigure/README.md
index c1e228f..d58e984 100644
--- a/roles/sap_general_preconfigure/README.md
+++ b/roles/sap_general_preconfigure/README.md
@@ -4,12 +4,11 @@ This role installs required packages and performs configuration steps which are
For SLES systems, this role may not be necessary. The majority of SAP preparation and tuning is covered by `saptune` which is configured in the `sap_hana_preconfigure` and `sap_netweaver_preconfigure` roles.
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is: "Fully supported for RHEL managed nodes".
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
+## Requirements
To use this role, your system needs to be installed according to:
- RHEL 7: SAP note 2002167, Red Hat Enterprise Linux 7.x: Installation and Upgrade, section "Installing Red Hat Enterprise Linux 7"
diff --git a/roles/sap_ha_install_hana_hsr/README.md b/roles/sap_ha_install_hana_hsr/README.md
index f8a5730..f7f6d6c 100644
--- a/roles/sap_ha_install_hana_hsr/README.md
+++ b/roles/sap_ha_install_hana_hsr/README.md
@@ -2,6 +2,10 @@
Ansible role for SAP HANA System Replication Setup on 2 nodes.
+## Support Status
+
+The support status of this role is: "Technology Preview".
+
## Prerequisites
- target nodes are on the same OS level
diff --git a/roles/sap_ha_pacemaker_cluster/README.md b/roles/sap_ha_pacemaker_cluster/README.md
index 30f194c..a0877f5 100644
--- a/roles/sap_ha_pacemaker_cluster/README.md
+++ b/roles/sap_ha_pacemaker_cluster/README.md
@@ -5,6 +5,10 @@
Ansible Role for installation and configuration of Linux Pacemaker for High Availability of SAP Systems run on various Infrastructure Platforms.
+## Support Status
+
+The support status of this role is: "Technology Preview".
+
## Scope
This Ansible Role provides:
diff --git a/roles/sap_hana_install/README.md b/roles/sap_hana_install/README.md
index 2deb5ac..9d627e1 100644
--- a/roles/sap_hana_install/README.md
+++ b/roles/sap_hana_install/README.md
@@ -2,12 +2,11 @@
Ansible role for SAP HANA Installation
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is: "Fully supported for RHEL managed nodes"
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
+## Requirements
### Configure your system for the installation of SAP HANA
diff --git a/roles/sap_hana_preconfigure/README.md b/roles/sap_hana_preconfigure/README.md
index 6ee18a6..2cb6ca6 100644
--- a/roles/sap_hana_preconfigure/README.md
+++ b/roles/sap_hana_preconfigure/README.md
@@ -4,12 +4,11 @@ This role installs additional required packages and performs additional configur
If you want to configure a RHEL system for the installation and later usage of SAP HANA, you have to first run role sap_general_preconfigure
and then role sap_hana_preconfigure. However, if we wish to run SLES for HANA, you may run only this role.
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is: "Fully supported for RHEL managed nodes".
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
+## Requirements
To use this role, your system needs to be configured with the basic requirements for SAP NetWeaver or SAP HANA. This is typically done by running role sap_general_preconfigure (for RHEL managed nodes before RHEL 7.6, community maintained role sap-base-settings can be used).
diff --git a/roles/sap_hypervisor_node_preconfigure/README.md b/roles/sap_hypervisor_node_preconfigure/README.md
index 754e23a..2105d0d 100644
--- a/roles/sap_hypervisor_node_preconfigure/README.md
+++ b/roles/sap_hypervisor_node_preconfigure/README.md
@@ -4,6 +4,10 @@ This role will configure the following hypervisors in order to run SAP workloads
* Red Hat OpenShift Virtualization (OCPV)
* Red Hat Enterprise Virtualization (RHV)
+## Support Status
+
+The support status of this role is: "Technology Preview".
+
## Platform: Red Hat OpenShift Virtualization
Will configure a plain vanilla OpenShift cluster so it can be used for SAP workloads.
diff --git a/roles/sap_netweaver_preconfigure/README.md b/roles/sap_netweaver_preconfigure/README.md
index ae666cc..d18c96d 100644
--- a/roles/sap_netweaver_preconfigure/README.md
+++ b/roles/sap_netweaver_preconfigure/README.md
@@ -4,6 +4,10 @@ This role installs additional required packages and performs additional configur
If you want to configure a RHEL system for the installation and later usage of SAP NetWeaver, you have to first run role `sap_general_preconfigure` and then role sap_netweaver_preconfigure.
For SLES, running the `sap_general_preconfigure` role is not necessary.
+## Support Status
+
+The support status of this role is: "Fully supported for RHEL managed nodes".
+
## Requirements
To use this role, your system needs to be configured with the basic requirements for SAP NetWeaver or SAP HANA. This is typically done by
diff --git a/roles/sap_swpm/README.md b/roles/sap_swpm/README.md
index 82f9b14..064574f 100644
--- a/roles/sap_swpm/README.md
+++ b/roles/sap_swpm/README.md
@@ -2,16 +2,11 @@
Ansible role for SAP software installation using SWPM
-## Requirements
+## Support Status
-The role requires additional collections which are specified in `meta/collection-requirements.yml`. Before using this role,
-make sure that the required collections are installed, for example by using the following command:
+The support status of this role is as defined below.
-`ansible-galaxy install -vv -r meta/collection-requirements.yml`
-
-## Scope
-
-*NOTE*: This Ansible role is delivered by Red Hat with a support scope of *Technology Preview* only for the following deployment scenarios:
+This Ansible role is delivered by Red Hat with a support scope of *Technology Preview* only for the following deployment scenarios:
S/4HANA 2021 and S/4HANA 2022 single-host installation on x86_64: RHEL 8.4, 8.6, 9.0 and ppc64le: RHEL 8.4 and 8.6.
Only the `default` role mode is supported.
diff --git a/roles/sap_vm_preconfigure/README.md b/roles/sap_vm_preconfigure/README.md
index 95b5f39..57aae59 100644
--- a/roles/sap_vm_preconfigure/README.md
+++ b/roles/sap_vm_preconfigure/README.md
@@ -3,6 +3,9 @@ sap_vm_preconfigure
This role will set and check the required settings and parameters for a guest (VM) running on RHV/KVM for SAP HANA.
+## Support Status
+
+The support status of this role is: "Technology Preview".
Requirements
------------

View File

@ -1,11 +1,9 @@
%if 0%{?rhel} && ! 0%{?epel}
%bcond_with ansible
%else
%bcond_without ansible
%endif
# disable collection_artifact by default
%bcond_with collection_artifact
# disable collection by default since version 3.6.0 (1.3.4)
%bcond_with collection
%if 0%{?fedora} || 0%{?rhel} > 8
%bcond_without html
%else
@ -26,45 +24,59 @@
# collection_version has to be increased by every rebuild
# otherwise, it cannot be uploaded to Automation Hub and Galaxy
# due to version conflict
%define collection_version 1.2.3
%define collection_version 1.3.4
%global mainid e2a233f5a0cb68363798bf014b16552cca681bd0
%global commit_id_sap_install 60f5f40497d54c46b0bd3f79ef1fef4ada148119
%global commit_id_sap_install %{collection_version}
%global rolename1 sap_general_preconfigure
%global rolename2 sap_hana_preconfigure
%global rolename3 sap_netweaver_preconfigure
%global rolename4 sap_hana_install
%global rolename2 sap_ha_install_hana_hsr
%global rolename3 sap_hana_install
%global rolename4 sap_hana_preconfigure
%global rolename5 sap_ha_pacemaker_cluster
%global rolename6 sap_ha_set_netweaver
%global rolename7 sap_hostagent
%global rolename8 sap_install_media_detect
%global rolename9 sap_storage
%global rolename10 sap_swpm
%global rolename11 sap_ha_install_hana_hsr
%global rolename6 sap_hypervisor_node_preconfigure
%global rolename7 sap_netweaver_preconfigure
%global rolename8 sap_swpm
%global rolename9 sap_vm_preconfigure
%global src_owner linux-system-roles
%global github_repo_sap_install community.sap_install
%global rolename_rhel %{rolename1} %{rolename2} %{rolename3} %{rolename4} %{rolename5} %{rolename10} %{rolename11}
%global rolename_community %{rolename_rhel} %{rolename1} %{rolename6} %{rolename7} %{rolename8} %{rolename9}
%if 0%{?fedora}
%global rolenames %{rolename_community}
%else
%global github_repo_sap_install redhat.sap_install
%global rolename_rhel %{rolename1} %{rolename2} %{rolename3} %{rolename4} %{rolename5} %{rolename6} %{rolename7} %{rolename8} %{rolename9}
%global rolenames %{rolename_rhel}
%endif
Name: %{package_name}
Summary: System Roles to configure RHEL for running SAP NetWeaver- or SAP HANA-based products
Version: 3.5.0
Version: 3.6.0
Release: 1%{?dist}
License: GPL-3.0-or-later
Url: https://github.com/sap-linuxlab/community.sap_install
Url: https://github.com/redhat-sap/community.sap_install
Source0: https://github.com/linux-system-roles/auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz
Source1: https://github.com/sap-linuxlab/%{github_repo_sap_install}/archive/%{commit_id_sap_install}/%{github_repo_sap_install}-%{commit_id_sap_install}.tar.gz
# files/README.md, files/roles/sap_swpm/README.md from https://gitlab.cee.redhat.com/sap-linuxlab/prepare-redhat.sap_install
Source2: prepare-redhat.sap_install-main.tar.bz2
Patch1: community.sap_install-shebang.patch
Source1: https://github.com/redhat-sap/redhat.sap_install/archive/%{commit_id_sap_install}/%{github_repo_sap_install}-%{commit_id_sap_install}.tar.gz
# update to json files
Patch1: redhat.sap_install-a0ea9108b9c419dc17d8567f7fbe2a360af3fba2.patch
# further fixes: add missing LICENSE file, .ansible-lint and .yamllint.yml
# fix syntax error for defining dependent collections in galaxy.yml
# updated README.md
Patch2: redhat.sap_install-ecaccb7a32617943e5bfc41de0e9269ae93e38f8.patch
# add missing galaxy.yml
Patch3: redhat.sap_install-54eb60d7ce67720ac79ebc558a97e7c16c354f97.patch
# update README.md files
Patch4: redhat.sap_install-ed9bc223635d3e08661b506fdb9d62aef56032b0.patch
# add collection files
Patch5: redhat.sap_install-a5b1b5d4e79bebafd9ba75926dc56ada53f28e2d.patch
# add tests files
Patch6: redhat.sap_install-1.3.4-add_tests.patch
# add tools files
Patch7: redhat.sap_install-1.3.4-add_tools.patch
BuildArch: noarch
Requires: rhel-system-roles
%if %{with html}
# Requirements for md2html.sh to build the documentation
@ -89,8 +101,14 @@ Requires: python-jmespath
Requires: python-netaddr
%endif
%if %{with ansible}
BuildRequires: ansible-core >= 2.9.10
# NOTE: ansible-core is in rhel-8.6 and newer, but not installable
# in buildroot as it depended on modular Python.
# It has been installable at buildtime in 8.8 and newer.
%if %{with collection}
%if 0%{?rhel} >= 8
BuildRequires: ansible-core >= 2.11.0
Requires: (ansible-core >= 2.11.0 or ansible >= 2.9.0)
%endif
%endif
%if %{undefined __ansible_provides}
@ -99,6 +117,10 @@ Provides: ansible-collection(%{collection_namespace}.%{collection_name}) = %{ver
# be compatible with the usual Fedora Provides:
Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{version}-%{release}
# ansible-galaxy is available by ansible-core on RHEL 8.6 and newer at buildtime.
%define ansible_collection_build() ansible-galaxy collection build
%define ansible_collection_install() ansible-galaxy collection install -n -p %{buildroot}%{_datadir}/ansible/collections %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz
%if 0%{?fedora} || 0%{?rhel} >= 8
%{!?ansible_collection_files:%define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/}
%else
@ -107,13 +129,6 @@ Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{vers
%endif
%endif
%if %{without ansible}
%define ansible_collection_build_install() tar -cf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz .; mkdir -p %{buildroot}%{ansible_collection_files}%{collection_name}; (cd %{buildroot}%{ansible_collection_files}%{collection_name}; tar -xf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz)
%else
%define ansible_collection_build_install() ansible-galaxy collection build; ansible-galaxy collection install -n -p %{buildroot}%{_datadir}/ansible/collections %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz
%endif
%description
Collection of Ansible roles which configures a RHEL system according
to applicable SAP notes so that any SAP software can be installed.
@ -127,58 +142,27 @@ Collection artifact for %{name}. This package contains %{collection_namespace}-%
%endif
%prep
%setup -q -a1 -a2 -n auto-maintenance-%{mainid}
# add correct version and namespace for Automation Hub and Galaxy
cp %{github_repo_sap_install}-%{commit_id_sap_install}/galaxy.yml .
sed -i -e "s|^namespace: .*|namespace: %{collection_namespace}|" galaxy.yml
sed -i -e "s|^version: .*|version: %{collection_version}|" galaxy.yml
# update README.md and roles/sap_swpm/README.md
cp prepare-redhat.sap_install-main/files/README.md %{github_repo_sap_install}-%{commit_id_sap_install}/
cp prepare-redhat.sap_install-main/files/roles/sap_swpm/README.md %{github_repo_sap_install}-%{commit_id_sap_install}/roles/sap_swpm/README.md
# remove roles/sap_swpm/requirements.yml
rm -f %{github_repo_sap_install}-%{commit_id_sap_install}/roles/sap_swpm/requirements.yml
%setup -q -a1 -n auto-maintenance-%{mainid}
pushd %{github_repo_sap_install}-%{commit_id_sap_install}/
# workaround for md2html error
sed -i -e "s|for POWER ||g" roles/sap_hana_preconfigure/README.md
%patch -P1 -p1
# modify collection-requirements.yml, fedora.linux_system_roles -> redhat.rhel_system_roles
for r in %{rolenames} ; do
yml=roles/${r}/meta/collection-requirements.yml
[ -f ${yml} ] && sed -i "s,fedora.linux_system_roles,redhat.rhel_system_roles," ${yml}
done
# modify defaults/main.yml, fedora.linux_system_roles -> redhat.rhel_system_roles
for r in %{rolenames} ; do
yml=roles/${r}/defaults/main.yml
[ -f ${yml} ] && sed -i "s,system_roles_collection: 'fedora.linux_system_roles',system_roles_collection: 'redhat.rhel_system_roles'," ${yml}
done
%patch -P2 -p1
%patch -P3 -p1
%patch -P4 -p1
%patch -P5 -p1
%patch -P6 -p1
%patch -P7 -p1
popd
# remove zero file and symlinks
find . -type f -size 0 -delete
find . -type l -delete
pushd %{github_repo_sap_install}-%{commit_id_sap_install}/roles/
# remove all SLES stuff and RHEL 6 stuff
rm -rf */tasks/SLES/
rm -f */vars/SLES_15.yml
rm -rf sap_hana_preconfigure/tasks/sapnote/1275776 # SLES - sapconf, saptune, etc
rm -rf sap_hana_preconfigure/tasks/sapnote/1944799 # SLES - HANA install and config guidelines
rm -f sap_hana_preconfigure/tasks/sapnote/1944799.yml
rm -f sap_hana_preconfigure/tasks/sapnote/2013638.yml # RHEL 6.5 - OS settings
rm -f sap_hana_preconfigure/tasks/sapnote/2136965.yml # RHEL 6.6 - OS settings
rm -f sap_hana_preconfigure/tasks/sapnote/2247020.yml # RHEL 6.7 - OS settings
rm -rf sap_hana_preconfigure/tasks/sapnote/2578899 # SLES 15 - installation
rm -rf sap_hana_preconfigure/tasks/sapnote/2684254 # SLES 15 - OS settings for HANA
rm -f sap_hana_preconfigure/vars/RedHat_6.5.yml
rm -f sap_hana_preconfigure/vars/RedHat_6.6.yml
rm -f sap_hana_preconfigure/vars/RedHat_6.7.yml
popd
# fix python and bash shebangs
find -type f \( -iname "*.py" \) -exec sed -i '1s=^#! */usr/bin/\(python\|env python\)[23]\?=#!/usr/bin/python3=' {} +
find -type f \( -iname "*.sh" \) -exec sed -i '1s=^#! */bin/bash=#!/usr/bin/bash=' {} +
%build
%if %{with html}
@ -189,6 +173,7 @@ done
sh md2html.sh $readmes %{github_repo_sap_install}-%{commit_id_sap_install}/README.md
%endif
%if %{with collection}
# create dest-path
mkdir .collections
@ -206,6 +191,13 @@ cp -p galaxy.yml .collections/ansible_collections/%{collection_namespace}/%{coll
# update README.md
cp %{github_repo_sap_install}-%{commit_id_sap_install}/README.md .collections/ansible_collections/%{collection_namespace}/%{collection_name}
# Build the collection
pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
%ansible_collection_build
popd
%endif
%install
mkdir -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles \
$RPM_BUILD_ROOT%{_pkgdocdir}
@ -213,6 +205,7 @@ mkdir -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles \
# create file selection for documents
echo "%dir %{_pkgdocdir}" > files_section.txt
cp %{github_repo_sap_install}-%{commit_id_sap_install}/README.md $RPM_BUILD_ROOT%{_pkgdocdir}/
%if %{with html}
cp %{github_repo_sap_install}-%{commit_id_sap_install}/README.html $RPM_BUILD_ROOT%{_pkgdocdir}/
%endif
@ -232,9 +225,13 @@ install -m 644 %{github_repo_sap_install}-%{commit_id_sap_install}/roles/$role/R
done
# install collection files
%if %{with collection}
pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
%ansible_collection_build_install
%ansible_collection_install
popd
%else
cp -pR %{github_repo_sap_install}-%{commit_id_sap_install}/collections $RPM_BUILD_ROOT%{_datadir}/ansible/
%endif
# install collection_artifact
%if %{with collection_artifact}
@ -248,19 +245,31 @@ popd
%dir %{_datadir}/ansible
%dir %{_datadir}/ansible/roles
%doc %{_pkgdocdir}/*/README.md
%license %{_pkgdocdir}/*/LICENSE
%{_datadir}/ansible/roles/*
%if %{with html}
%{_pkgdocdir}/*/README.html
%endif
%license %{_pkgdocdir}/*/LICENSE
%{_datadir}/ansible/roles/*
%if %{with collection}
%{ansible_collection_files}
%else
%{_datadir}/ansible/collections
%endif
%if %{with collection_artifact}
%files collection-artifact
%{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz
%endif
%changelog
* Thu Jan 25 2024 Than Ngo <than@redhat.com> - 3.6.0-1
- rebase sap roles to version 1.3.4
- add collection files
- update README files and add missing galaxy.yml, LICENSE
- fix syntax error for defining dependent collections in galaxy.yml
- add tools and tests
Resolves: RHEL-16897
* Mon May 08 2023 Than Ngo <than@redhat.com> - 3.5.0-1
- updated README.md files for sap and sap_swpm roles
- migrated to SPDX license

View File

@ -1,3 +1,2 @@
SHA512 (auto-maintenance-e2a233f5a0cb68363798bf014b16552cca681bd0.tar.gz) = 3d5c784e668605eb8b7862227b456da05ff5dedf84411131a27118b501b6a9bbe8894c4f29e6de4230fe534ef6b2de4653c56a904857d9eb11b452d31aed143c
SHA512 (prepare-redhat.sap_install-main.tar.bz2) = e152e015b1ff1f0e58f632e177166c1a1b296178960b0efddf8023d3544bfeeed36da8f0befe4c24cd6f778883139c64df3e713a60e8fe9a3b2e21aa43901a61
SHA512 (community.sap_install-60f5f40497d54c46b0bd3f79ef1fef4ada148119.tar.gz) = e3cbb66878f7920882eebbf4800b9302825d7a458a1087fb36e88f1d1ee184acf5a8e6f485fdfa012a179a28df95aac5bfbe14222192d75877e438e0f55fbc26
SHA512 (redhat.sap_install-1.3.4.tar.gz) = 640b4ba2b7e2ca01029768ee3a1fdba3db228ae94ad3e8b3bdcaa5a64594858bcd00c0473b3a1a44b51398c98f0b9aa4d852236ad7165d86d065cb7e197bc6c1