Blame SOURCES/scap-security-guide-0.1.57-ansible-playbooks-per-rule-PR_7039.patch

647bb4
commit c58a2b0af3c8094446df1850cb1c943d51b2ec5f
647bb4
Author: Gabriel Becker <ggasparb@redhat.com>
647bb4
Date:   Tue Jun 8 13:40:28 2021 +0200
647bb4
647bb4
    Add option to enable installation of individual ansible playbooks per rule.
647bb4
647bb4
diff --git a/CMakeLists.txt b/CMakeLists.txt
647bb4
index 6995944..bd317c0 100644
647bb4
--- a/CMakeLists.txt
647bb4
+++ b/CMakeLists.txt
647bb4
@@ -46,6 +46,7 @@ option(SSG_SHELLCHECK_BASH_FIXES_VALIDATION_ENABLED "If enabled, shellcheck vali
647bb4
 option(SSG_LINKCHECKER_VALIDATION_ENABLED "If enabled, linkchecker will be used to validate URLs in all the HTML guides and tables." TRUE)
647bb4
 option(SSG_SVG_IN_XCCDF_ENABLED "If enabled, the built XCCDFs will include the SVG SCAP Security Guide logo." TRUE)
647bb4
 option(SSG_SEPARATE_SCAP_FILES_ENABLED "If enabled, separate SCAP files (OVAL, XCCDF, CPE dict, ...) will be installed alongside the source data-streams" TRUE)
647bb4
+option(SSG_ANSIBLE_PLAYBOOKS_PER_RULE_ENABLED "If enabled, Ansible Playbooks for each rule will be built and installed." FALSE)
647bb4
 option(SSG_JINJA2_CACHE_ENABLED "If enabled, the jinja2 templating files will be cached into bytecode. Also see SSG_JINJA2_CACHE_DIR." TRUE)
647bb4
 option(SSG_BATS_TESTS_ENABLED "If enabled, bats will be used to run unit-tests of bash remediations." TRUE)
647bb4
 set(SSG_JINJA2_CACHE_DIR "${CMAKE_BINARY_DIR}/jinja2_cache" CACHE PATH "Where the jinja2 cached bytecode should be stored. This speeds up builds at the expense of disk space. You can use one location for multiple SSG builds for performance improvements.")
647bb4
@@ -231,6 +232,7 @@ message(STATUS "OVAL schematron validation: ${SSG_OVAL_SCHEMATRON_VALIDATION_ENA
647bb4
 message(STATUS "shellcheck bash fixes validation: ${SSG_SHELLCHECK_BASH_FIXES_VALIDATION_ENABLED}")
647bb4
 message(STATUS "SVG logo in XCCDFs: ${SSG_SVG_IN_XCCDF_ENABLED}")
647bb4
 message(STATUS "Separate SCAP files: ${SSG_SEPARATE_SCAP_FILES_ENABLED}")
647bb4
+message(STATUS "Ansible Playbooks Per Rule: ${SSG_ANSIBLE_PLAYBOOKS_PER_RULE_ENABLED}")
647bb4
 if (SSG_JINJA2_CACHE_ENABLED)
647bb4
     message(STATUS "jinja2 cache: enabled")
647bb4
     message(STATUS "jinja2 cache dir: ${SSG_JINJA2_CACHE_DIR}")
647bb4
diff --git a/cmake/SSGCommon.cmake b/cmake/SSGCommon.cmake
647bb4
index b487a0b..b7db7fd 100644
647bb4
--- a/cmake/SSGCommon.cmake
647bb4
+++ b/cmake/SSGCommon.cmake
647bb4
@@ -746,8 +746,12 @@ macro(ssg_build_product PRODUCT)
647bb4
     ssg_build_xccdf_unlinked(${PRODUCT})
647bb4
     ssg_build_ocil_unlinked(${PRODUCT})
647bb4
     ssg_build_remediations(${PRODUCT})
647bb4
-    if ("${PRODUCT_ANSIBLE_REMEDIATION_ENABLED}")
647bb4
+    if ("${PRODUCT_ANSIBLE_REMEDIATION_ENABLED}" AND SSG_ANSIBLE_PLAYBOOKS_PER_RULE_ENABLED)
647bb4
         ssg_build_ansible_playbooks(${PRODUCT})
647bb4
+        add_dependencies(
647bb4
+            ${PRODUCT}-content
647bb4
+            generate-${PRODUCT}-ansible-playbooks
647bb4
+        )
647bb4
     endif()
647bb4
     ssg_build_xccdf_with_remediations(${PRODUCT})
647bb4
     ssg_build_oval_unlinked(${PRODUCT})
647bb4
@@ -778,10 +782,6 @@ macro(ssg_build_product PRODUCT)
647bb4
     add_dependencies(zipfile "generate-ssg-${PRODUCT}-ds.xml")
647bb4
 
647bb4
     if ("${PRODUCT_ANSIBLE_REMEDIATION_ENABLED}")
647bb4
-        add_dependencies(
647bb4
-            ${PRODUCT}-content
647bb4
-            generate-${PRODUCT}-ansible-playbooks
647bb4
-        )
647bb4
         ssg_build_profile_playbooks(${PRODUCT})
647bb4
         add_custom_target(
647bb4
             ${PRODUCT}-profile-playbooks
647bb4
@@ -885,6 +885,20 @@ macro(ssg_build_product PRODUCT)
647bb4
         endif()
647bb4
         "
647bb4
     )
647bb4
+    if(SSG_ANSIBLE_PLAYBOOKS_PER_RULE_ENABLED)
647bb4
+        install(
647bb4
+            CODE "
647bb4
+            file(GLOB PLAYBOOK_PER_RULE_FILES \"${CMAKE_BINARY_DIR}/${PRODUCT}/playbooks/*\") \n
647bb4
+            if(NOT IS_ABSOLUTE ${SSG_ANSIBLE_ROLE_INSTALL_DIR}/rule_playbooks)
647bb4
+                file(INSTALL DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${SSG_ANSIBLE_ROLE_INSTALL_DIR}/rule_playbooks/${PRODUCT}\"
647bb4
+                    TYPE FILE FILES \${PLAYBOOK_PER_RULE_FILES})
647bb4
+            else()
647bb4
+                file(INSTALL DESTINATION \"${SSG_ANSIBLE_ROLE_INSTALL_DIR}/rule_playbooks/${PRODUCT}\"
647bb4
+                    TYPE FILE FILES \${PLAYBOOK_PER_RULE_FILES})
647bb4
+            endif()
647bb4
+            "
647bb4
+        )
647bb4
+    endif()
647bb4
 
647bb4
     # grab all the kickstarts (if any) and install them
647bb4
     file(GLOB KICKSTART_FILES "${CMAKE_CURRENT_SOURCE_DIR}/kickstart/ssg-${PRODUCT}-*-ks.cfg")