diff --git a/.ansible-collection-microsoft-sql.metadata b/.ansible-collection-microsoft-sql.metadata deleted file mode 100644 index 3656fde..0000000 --- a/.ansible-collection-microsoft-sql.metadata +++ /dev/null @@ -1,2 +0,0 @@ -06bdf4fd47cd57661f657fa4f29ec3031198ba11 SOURCES/auto-maintenance-73800682a3293ef5ab5ed5880329ce792cd34bbf.tar.gz -43136931b6fa02984e7e0c30564f8202114ed2bd SOURCES/mssql-1.3.0.tar.gz diff --git a/.gitignore b/.gitignore index 486522e..c7c5da6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/auto-maintenance-73800682a3293ef5ab5ed5880329ce792cd34bbf.tar.gz -SOURCES/mssql-1.3.0.tar.gz +SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz +SOURCES/mssql-2.2.3.tar.gz diff --git a/SOURCES/ansible-packaging.inc b/SOURCES/ansible-packaging.inc new file mode 100644 index 0000000..7cdb972 --- /dev/null +++ b/SOURCES/ansible-packaging.inc @@ -0,0 +1,21 @@ +# Helper macros originally from macros.ansible by Igor Raits +# This file is for maintaining the compatibility with macros and other +# functionality (generators) provided by ansible-packaging on Fedora. + +Provides: ansible-collection(%{collection_namespace}.%{collection_name}) = %{collection_version} + +# 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}-%{version}.tar.gz + +%define ansible_roles_dir %{_datadir}/ansible/roles +%define ansible_collections_dir %{_datadir}/ansible/collections/ansible_collections + +# TODO: Officially deprecate this macro and add the following line to the macro +# def after the new approach has gotten more testing and adoption: +# %%{warn: %%{ansible_collection_files} is deprecated. Use %%files -f %%{ansible_collection_filelist} instead.} +%define ansible_collection_files %{shrink: +%{ansible_collections_dir}/%{collection_namespace}/ +} + +%define ansible_collection_filelist %{__ansible_builddir}/ansible_collection_files diff --git a/SPECS/ansible-collection-microsoft-sql.spec b/SPECS/ansible-collection-microsoft-sql.spec index 5f12631..98ee341 100644 --- a/SPECS/ansible-collection-microsoft-sql.spec +++ b/SPECS/ansible-collection-microsoft-sql.spec @@ -1,31 +1,21 @@ -# NOTE: Even though ansible-core is in 8.6, it is only available -# at *runtime*, not at *buildtime* - so we can't have -# ansible-core as a build_dep on RHEL8 -%if 0%{?fedora} || 0%{?rhel} >= 9 -%bcond_without ansible +# 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 0%{?fedora} BuildRequires: ansible-packaging %else +%if 0%{?rhel} >= 8 BuildRequires: ansible-core >= 2.11.0 %endif -%else -%bcond_with ansible %endif %bcond_with collection_artifact -# Do not convert .md to .html on RHEL 7 because pandoc is not available -%if 0%{?fedora} || 0%{?rhel} >= 8 -%bcond_without html -%else -%bcond_with html -%endif - Name: ansible-collection-microsoft-sql Url: https://github.com/linux-system-roles/mssql Summary: The Ansible collection for Microsoft SQL Server management -Version: 1.3.0 -Release: 3%{?dist} +Version: 2.2.3 +Release: 2%{?dist} License: MIT @@ -37,24 +27,6 @@ License: MIT %global legacy_rolename %{collection_namespace}.sql-server %global _pkglicensedir %{_licensedir}/%{name} -# Helper macros originally from macros.ansible by Igor Raits -# On RHEL, not available, so we must define those macros locally -# On Fedora, provided by ansible-packager -# Not used (yet). Could be made to point to AH in RHEL - but what about CentOS Stream? -#%%{!?ansible_collection_url:%%define ansible_collection_url() https://galaxy.ansible.com/%%{collection_namespace}/%%{collection_name}} -%if 0%{?rhel} -Provides: ansible-collection(%{collection_namespace}.%{collection_name}) = %{collection_version} -%global ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/ -%define ansible_roles_dir %{_datadir}/ansible/roles -%if %{without ansible} -# Untar and copy everything instead of galaxy-installing the built artifact when ansible is not available -%define ansible_collection_build() tar -cf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz . -%define ansible_collection_install() mkdir -p %{buildroot}%{ansible_collection_files}%{collection_name}; (cd %{buildroot}%{ansible_collection_files}%{collection_name}; tar -xf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz) -%else -%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}-%{version}.tar.gz -%endif -%endif # be compatible with the usual Fedora Provides: Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{collection_version}-%{release} @@ -75,7 +47,7 @@ Requires: rhel-system-roles Requires: linux-system-roles %endif -%global mainid 73800682a3293ef5ab5ed5880329ce792cd34bbf +%global mainid eadd06cfa98d244b096cff24cd11b668428b1613 # Use either hash or tag for source1id # %%global source1id 50edba099ab2c8b25b225fe760cb5a459b320030 %global source1id %{version} @@ -83,18 +55,20 @@ Requires: linux-system-roles Source: %{parenturl}/auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz Source1: %{parenturl}/%{rolename}/archive/%{source1id}/%{rolename}-%{source1id}.tar.gz -BuildArch: noarch +# Includes with ansible_collection_build/_install that differ between RHEL versions +Source1002: ansible-packaging.inc +%include %{SOURCE1002} -%if %{with html} -# Requirements for md2html.sh to build the documentation -%if 0%{?fedora} || 0%{?rhel} >= 9 -BuildRequires: rubygem-kramdown-parser-gfm -%else -BuildRequires: pandoc -BuildRequires: asciidoc -BuildRequires: highlight -%endif -%endif +BuildArch: noarch +# there is no ansible on i686, so when we get a builder that uses +# this arch, the build fails with +# No matching package to install: 'ansible-core >= 2.11.0' +# unfortunately, this causes the src rpm build tasks to be reported +# with the arch of the builder :-( which causes problems with internal +# test infrastructure - while we get those issues sorted out, revert +# this change - this means that centpkg builds may fail and may have +# to be retried +# ExcludeArch: i686 # Requirements for galaxy_transform.py BuildRequires: python3 @@ -112,7 +86,7 @@ Summary: Collection artifact to import to Automation Hub / Ansible Galaxy %description collection-artifact Collection artifact for %{name}. This package contains -%{collection_namespace}-%{collection_name}-%{version}.tar.gz +%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz %endif %pretrans -p @@ -136,28 +110,25 @@ if [ -d %{rolename}/tests/roles ]; then fi %build -%if %{with html} -# Convert README.md to README.html in the source roles -sh md2html.sh -t %{rolename}/README.md -%endif +# Move a hidden .README.html to a not hidden README.html +mv %{rolename}/.README.html %{rolename}/README.html mkdir .collections -# Copy README.md for the collection build -cp %{rolename}/.collection/README.md lsr_role2collection/collection_readme.md + # Copy galaxy.yml for the collection build cp %{rolename}/.collection/galaxy.yml ./ %if 0%{?rhel} # Ensure the correct entries in galaxy.yml -./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{version}" \ +./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \ "Ansible collection for Microsoft SQL Server management" \ "https://github.com/linux-system-roles/mssql" \ - "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/administration_and_configuration_tasks_using_system_roles_in_rhel/assembly_configuring-microsoft-sql-server-using-microsoft-sql-server-ansible-role_assembly_updating-packages-to-enable-automation-for-the-rhel-system-roles" \ - "https://github.com/linux-system-roles/mssql/blob/main/README.md" \ - "https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%208&component=ansible-collection-microsoft-sql" \ + "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/automating_system_administration_by_using_rhel_system_roles/assembly_configuring-microsoft-sql-server-using-microsoft-sql-server-ansible-role_automating-system-administration-by-using-rhel-system-roles" \ + "https://access.redhat.com/articles/3050101" \ + "https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12332745&summary=Your%20request%20summary&issuetype=1&priority=10200&labels=Partner-Feature-Request&components=12377164" \ > galaxy.yml.tmp %else -./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{version}" \ +./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \ "Ansible collection for Microsoft SQL Server management" \ > galaxy.yml.tmp %endif @@ -166,8 +137,8 @@ mv galaxy.yml.tmp galaxy.yml %if 0%{?rhel} # Replace "fedora.linux_system_roles" with "redhat.rhel_system_roles" # This is for the "roles calling other roles" case -find %{rolename} -type f -exec \ - sed -e "s/fedora[.]linux_system_roles[.]/redhat.rhel_system_roles./g" \ +find . -type f -exec \ + sed -e "s/fedora\.linux_system_roles/redhat.rhel_system_roles/g" \ -i {} \; %endif @@ -176,7 +147,7 @@ python3 lsr_role2collection.py --role "%{rolename}" \ --src-path "%{rolename}" \ --src-owner linux-system-roles \ --dest-path .collections \ - --readme lsr_role2collection/collection_readme.md \ + --readme %{rolename}/.collection/README.md \ --namespace %{collection_namespace} \ --collection %{collection_name} \ --new-role "%{collection_rolename}" \ @@ -191,13 +162,13 @@ find .collections/ansible_collections/%{collection_namespace}/%{collection_name} rm -r .collections/ansible_collections/%{collection_namespace}/%{collection_name}/.[A-Za-z]* rm -r .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/%{collection_rolename}/.[A-Za-z]* +# Copy CHANGELOG.md from collection role to parent collection dir +cp .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/%{collection_rolename}/CHANGELOG.md \ + .collections/ansible_collections/%{collection_namespace}/%{collection_name} + # Copy galaxy.yml to the collection directory cp -p galaxy.yml .collections/ansible_collections/%{collection_namespace}/%{collection_name} -# Copy CHANGELOG.md from mssql to collection dir -mv .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/%{collection_rolename}/CHANGELOG.md \ - .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ - # Build collection pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ %ansible_collection_build @@ -206,21 +177,22 @@ popd %install mkdir -p %{buildroot}%{ansible_roles_dir} +# Step 1: Install the role in legacy format # Copy role in legacy format and rename rolename in tests cp -pR "%{rolename}" "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}" find %{buildroot}%{ansible_roles_dir}/%{legacy_rolename} -type f -exec \ - sed -e "s/linux-system-roles\.%{rolename}/%{legacy_rolename}/g" \ + sed -e "s/%{collection_namespace}\.%{collection_name}\.%{collection_rolename}/%{legacy_rolename}/g" \ -i {} \; -# Copy README, COPYING, and LICENSE files to the corresponding directories +# Copy README, COPYING, CHANGELOG and LICENSE files to the corresponding directories mkdir -p %{buildroot}%{_pkglicensedir} mkdir -p "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.md" \ "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" -%if %{with html} ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.html" \ "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" -%endif +ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/CHANGELOG.md" \ + "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" if [ -f "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/COPYING" ]; then ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/COPYING" \ "%{buildroot}%{_pkglicensedir}/%{legacy_rolename}.COPYING" @@ -234,43 +206,42 @@ fi rm -r %{buildroot}%{ansible_roles_dir}/*/.[A-Za-z]* rm -r %{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/tests/.[A-Za-z]* -# Remove the molecule directory +# Step 2: Remove molecule directory from all roles under ansible_roles_dir rm -r %{buildroot}%{ansible_roles_dir}/*/molecule -# Install collection +# Step 3: Install the role in collection format pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ %ansible_collection_install popd mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles -# Copy the collection README files to the collection +# Link collection README to /usr/share/doc/ansible-collection-microsoft-sql/collection. ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \ %{buildroot}%{_pkgdocdir}/collection -# Copy role's readme to /usr/share/doc/ -if [ -f "%{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.md" ]; then - mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} - ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.md \ - %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} -fi +# Link role READMEs to /usr/share/doc/ansible-collection-microsoft-sql/collection/roles/server +mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} +ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.md \ + %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} +ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.html \ + %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} -%if %{with html} -# Convert README.md to README.html for collection in %%{buildroot}%%{_pkgdocdir}/collection -sh md2html.sh -t %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename}/README.md -%endif +# Link role CHANGELOG.md to /usr/share/doc/ansible-collection-microsoft-sql/collection/roles/server +ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/CHANGELOG.md \ + %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} +# Step 4: Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact %if %{with collection_artifact} -# Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ -if [ -f %{collection_namespace}-%{collection_name}-%{version}.tar.gz ]; then - mv %{collection_namespace}-%{collection_name}-%{version}.tar.gz \ +if [ -f %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz ]; then + mv %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz \ %{buildroot}%{_datadir}/ansible/collections/ fi popd %endif -# Generate the %%files section in files_section.txt +# Step 5: Generate the %%files section in files_section.txt # Bulk files inclusion is not possible because roles store doc and licence # files together with other files format_item_for_files() { @@ -346,10 +317,58 @@ find %{buildroot}%{ansible_roles_dir} -mindepth 1 -maxdepth 1 | \ %if %{with collection_artifact} %files collection-artifact -%{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{version}.tar.gz +%{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz %endif %changelog +* Thu Feb 27 2024 Sergei Petrosian - 2.2.3-2 +- Revert ExcludeArch: i686 due to TFT-2460 + Resolves: RHEL-17080 + +* Thu Feb 22 2024 Sergei Petrosian - 2.2.3-1 +- Add support for running SQL Server as a SELinux unconfined application with SELinux in enforcing mode on RHEL 9 + Resolves: RHEL-17080 +- ExcludeArch: i686 + +* Tue Feb 6 2024 Sergei Petrosian - 2.2.2-1 +- Update role to version 2.2.2 to fix HA + Resolves: RHEL-19202 +- CHANGELOG.md was missing in some places +- In legacy role, sed repalced unexpected strings at some places + Resolves: RHEL-23456 + +* Wed Jan 31 2024 Sergei Petrosian - 2.2.1-2 +- Use latest auto-maintenance for updates in lsr_role2collection.py +- Remove with_html, instead use built-in .README.html + Resolves: RHEL-23456 + +* Mon Jan 29 2024 Sergei Petrosian - 2.2.1-1 +- Update role to version 2.2.1 to enhance running on EL 9 + Resolves: RHEL-17080 + +* Mon Dec 11 2023 Sergei Petrosian - 2.2.0-1 +- Support installing SQL Server 2022 on RHEL 9 and running as a selinux-confined application + Resolves: RHEL-17080 +- Remove unnecessary variable and RPM requirements for read-scale clusters + Resolves: RHEL-19202 +- Add the mssql_ha_prep_for_pacemaker variable to configure SQL Server for Pacemaker + Resolves: RHEL-19204 +- Deprecate `mssql_ha_cluster_run_role` for `mssql_manage_ha_cluster` + Resolves: RHEL-19203 + +* Thu Jul 27 2023 Sergei Petrosian - 2.0.1-1 +- Update role to version 2.0.1 to enhance AD integration + Resolves: RHEL-877 + Resolves: RHEL-878 + Resolves: RHEL-879 + Resolves: RHEL-880 + +* Wed May 31 2023 Sergei Petrosian - 1.4.1-1 +- Update BuiildRequires to use ansible-core on RHEL > 8.8 +- Move RHEL related code into an include for spec readability +- Update role to version 1.4.1 to add customizable storage paths + Resolves: RHEL-528 + * Thu Feb 23 2023 Sergei Petrosian - 1.3.0-3 - Spec: add functionality to build from a commit hash - Use latest 1.3.0 to add flexibility to AD integration functionality