Skip to content

feat: Support SQL Server 2025 on RHEL 9 and RHEL 10 - #428

Open
spetrosi wants to merge 4 commits into
linux-system-roles:mainfrom
spetrosi:support-el-10
Open

feat: Support SQL Server 2025 on RHEL 9 and RHEL 10#428
spetrosi wants to merge 4 commits into
linux-system-roles:mainfrom
spetrosi:support-el-10

Conversation

@spetrosi

@spetrosi spetrosi commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Enhancement: Support SQL Server 2025 on RHEL 9 and RHEL 10.

Reason: Microsoft release SQL Server 2025 for RHEL 9 and 10 in February 2026, the role should support this.

Result: You can install SQL Server 2025 on RHEL 9, and newly on RHEL 10.

Summary by CodeRabbit

  • New Features

    • Added support for SQL Server 2025, including package signing and upgrade workflows.
    • Added support for RHEL/EL 10 and expanded confined SQL Server support to EL 9 and later.
    • Added SQL Server 2025 coverage for high availability, TLS, firewall, SELinux, password, and idempotency scenarios.
  • Documentation

    • Updated supported-platform and version guidance, including EL 10 restrictions and SQL Server 2025 signing-key configuration.
    • Documented an RHEL 10 SELinux policy issue and available workarounds.
  • Tests

    • Added comprehensive SQL Server 2025 installation, upgrade, configuration, and validation coverage.
    • Improved cleanup handling across existing test scenarios.

Feature: Support SQL Server 2025 on RHEL 9 and RHEL 10.
Reason: Microsoft release SQL Server 2025 for RHEL 9 and 10 in February
2026, the role should support this.
Result: You can install SQL Server 2025 on RHEL 9, and newly on RHEL 10.
@spetrosi
spetrosi requested a review from richm as a code owner August 12, 2026 13:41
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@spetrosi, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 44 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 1b76fb08-35a2-4182-b96d-b8f2eb2679be

📥 Commits

Reviewing files that changed from the base of the PR and between 7e6a934 and ca8f3b8.

📒 Files selected for processing (42)
  • meta/main.yml
  • tasks/main.yml
  • tests/playbooks/tests_ad_integration.yml
  • tests/playbooks/tests_ad_integration_w_keytab.yml
  • tests/tasks/assert_fail_on_unsupported_ver.yml
  • tests/tasks/tests_ha_single.yml
  • tests/tasks/upgrade_and_assert.yml
  • tests/tests_2019_upgrade.yml
  • tests/tests_2022_upgrade.yml
  • tests/tests_2025_upgrade.yml
  • tests/tests_accept_eula.yml
  • tests/tests_configure_ha_cluster_external.yml
  • tests/tests_configure_ha_cluster_external_read_only.yml
  • tests/tests_configure_ha_cluster_read_scale.yml
  • tests/tests_default_2019.yml
  • tests/tests_ha_single_2017.yml
  • tests/tests_ha_single_2019.yml
  • tests/tests_ha_single_2022.yml
  • tests/tests_ha_single_2025.yml
  • tests/tests_idempotency_2017.yml
  • tests/tests_idempotency_2019.yml
  • tests/tests_idempotency_2022.yml
  • tests/tests_idempotency_2025.yml
  • tests/tests_include_vars_from_parent.yml
  • tests/tests_input_sql_file_2017.yml
  • tests/tests_input_sql_file_2019.yml
  • tests/tests_input_sql_file_2022.yml
  • tests/tests_input_sql_file_2025.yml
  • tests/tests_password_2017.yml
  • tests/tests_password_2019.yml
  • tests/tests_password_2022.yml
  • tests/tests_password_2025.yml
  • tests/tests_selinux_enforcing_2022.yml
  • tests/tests_selinux_enforcing_2025.yml
  • tests/tests_tcp_firewall_2017.yml
  • tests/tests_tcp_firewall_2019.yml
  • tests/tests_tcp_firewall_2022.yml
  • tests/tests_tcp_firewall_2025.yml
  • tests/tests_tls_2017.yml
  • tests/tests_tls_2019.yml
  • tests/tests_tls_2022.yml
  • tests/tests_tls_2025.yml
📝 Walkthrough

Walkthrough

The role adds SQL Server 2025 and EL 10 support. It updates repository keys, platform mappings, SELinux handling, documentation, integration tests, HA tests, and cleanup tagging.

Changes

Platform and version support

Layer / File(s) Summary
Platform and version contracts
README.md, meta/main.yml, vars/*
Adds EL 10 metadata and distribution mappings. Adds SQL Server 2025 package version mapping and platform support.
Repository and SELinux wiring
defaults/main.yml, tasks/main.yml, README.md
Adds the SQL Server 2025 signing key. Installs it conditionally for version 2025. Allows EL 10 hosts and RHEL 9 or later SELinux support.
RHEL 10 SELinux defect record
mssql-server-selinux-rhel10-bug-report.md
Documents missing file contexts, access rules, evidence, workarounds, proposed package changes, and deployment impact.

SQL Server 2025 validation

Layer / File(s) Summary
SQL Server 2025 functional tests
tests/tests_2025_upgrade.yml, tests/tests_idempotency_2025.yml, tests/tests_input_sql_file_2025.yml, tests/tests_password_2025.yml, tests/tests_selinux_enforcing_2025.yml, tests/tests_tcp_firewall_2025.yml, tests/tests_tls_2025.yml
Adds SQL Server 2025 upgrade, idempotency, SQL input, password, SELinux, firewall, and TLS test playbooks.
SQL Server 2025 HA test
tests/tests_ha_single_2025.yml
Adds SQL Server 2025 availability-group, cluster-resource, virtual-IP, ordering, and cleanup test configuration.
Test support and cleanup tagging
tests/tasks/*, tests/playbooks/*, tests/tests_*
Uses the role-maintained supported-version matrix and tags existing cleanup tasks with cleanup.
🚥 Pre-merge checks | ✅ 5 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description Format ⚠️ Warning The description has Enhancement, Reason, and Result sections, but it omits the required Signed-off-by section; the PR commits also have no sign-off trailer. Add Signed-off-by: Full Name <email> to the PR description and create or amend the contributing commit with git commit -s.
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title follows Conventional Commits format and clearly describes support for SQL Server 2025 on RHEL 9 and RHEL 10.
Description check ✅ Passed The description includes the required Enhancement, Reason, and Result sections and clearly explains the support change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread tasks/main.yml Outdated
Comment thread tests/playbooks/tests_ad_integration_w_keytab.yml Outdated
- name: Determine the SQL Server versions supported on this platform
include_role:
name: linux-system-roles.mssql
tasks_from: set_vars

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this work without the .yml suffix?

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 16

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/tests_include_vars_from_parent.yml (1)

121-125: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Tag every cleanup task with tests::cleanup.

Line [131] uses cleanup instead of tests::cleanup. The local Cleanup task at Lines [121-125] has no cleanup tag. Tag both tasks so debug runs can skip the complete cleanup sequence.

As per path instructions, cleanup tasks must be tagged with tests::cleanup so cleanup can be skipped for debug purposes.

Also applies to: 129-131

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/tests_include_vars_from_parent.yml` around lines 121 - 125, Tag the
local Cleanup task and the cleanup task around the referenced loop with
tests::cleanup, replacing the existing cleanup tag where present. Ensure both
cleanup tasks use the exact tests::cleanup tag so debug runs can skip the entire
cleanup sequence.

Source: Path instructions

🧹 Nitpick comments (1)
defaults/main.yml (1)

39-40: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add a usage example for mssql_rpm_key_2025.

README.md documents the variable and its default value, but it does not show how to override it. Add the variable to a relevant example playbook.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@defaults/main.yml` around lines 39 - 40, Add mssql_rpm_key_2025 to a relevant
example playbook in README.md, showing how users can override its default URL.
Keep the existing variable documentation and default value unchanged.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@mssql-server-selinux-rhel10-bug-report.md`:
- Around line 79-92: Narrow the finding in the section describing mssql_server_t
access to only the demonstrated dir:write permission on mssql_var_t and
mssql_opt_t. Remove unsupported claims about add_name, create, file, or
mssql_db_t permissions, or add corresponding sesearch queries for any such
claims before stating them.
- Around line 137-152: Update the Reproduction section to establish a clean
first boot by removing or resetting any existing /var/opt/mssql state before
installation and setup. Add an explicit sqlservr service start command and
capture its failure, ensuring the documented sequence supports the first-start
failure claim; otherwise remove that claim.
- Around line 113-123: Revise the root-cause and package-fix sections to
distinguish fcontext lookup from creation-time labeling: do not treat
matchpathcon returning usr_t as proof that newly created children receive usr_t.
Document the required clean RHEL 10 reproduction data—creator domain, parent and
child labels, and AVCs—before assigning the creation result. Accurately describe
the role’s scope: it adds fcontexts and restore requests only for configured
mssql_datadir and mssql_logdir when both SELinux variables are enabled, and does
not cover .system.
- Around line 185-191: Update the Impact section to retain
linux-system-roles.mssql and document that mssql-conf setup runs before SELinux
contexts are applied, with null default mssql_datadir and mssql_logdir values
and no role context for /var/opt/mssql/.system. Add a RHEL 10 role test that
captures setup results, post-setup SELinux labels, and AVCs.
- Around line 154-170: Update the “Workaround” section to distinguish fcontext
configuration from audit2allow policy generation: state that audit2allow -M only
creates AVC-derived allow rules, while intended mappings for /var/opt/mssql/data
and .system must be defined separately, including creation-transition rules
where runtime-created paths need them. Clarify that semanage permissive -a
mssql_server_t is diagnostic-only and document its removal with semanage
permissive -d mssql_server_t; retain the requirement to review generated rules
before loading.

In `@README.md`:
- Around line 204-211: Update the confined SELinux documentation text to use “EL
9 and later” consistently in the heading and applicability/default statements,
while retaining the restriction to SQL Server versions 2022 and 2025.
- Around line 425-426: Align the README description of mssql_rpm_key_2025 with
the predicate used by tasks/main.yml by documenting it as applicable only when
mssql_version is 2025, unless the task condition is intentionally broadened to
>= 2025. Add a playbook usage example that sets mssql_rpm_key_2025, following
the README’s existing variable examples.

In `@tasks/main.yml`:
- Around line 243-244: Correct the spelling of “isntall” to “install” in the
comment near the mssql_rpm_key requirement, without changing the surrounding
wording or behavior.

In `@tests/tasks/upgrade_and_assert.yml`:
- Line 31: Replace the cleanup tag with tests::cleanup at
tests/tasks/upgrade_and_assert.yml:31-31, tests/tests_2019_upgrade.yml:75-75,
tests/tests_2022_upgrade.yml:75-75, tests/tests_accept_eula.yml:41-41,
tests/tests_configure_ha_cluster_external.yml:267-267,
tests/tests_tcp_firewall_2017.yml:20-20,
tests/tests_tcp_firewall_2019.yml:20-20,
tests/tests_tcp_firewall_2022.yml:25-25, tests/tests_tls_2017.yml:23-23,
tests/tests_tls_2019.yml:23-23, and tests/tests_tls_2022.yml:27-27, preserving
the surrounding task definitions.

In `@tests/tests_2025_upgrade.yml`:
- Around line 81-83: All affected cleanup task includes use the wrong tag. In
tests/tests_2025_upgrade.yml:81-83, tests/tests_idempotency_2025.yml:18-20,
tests/tests_input_sql_file_2025.yml:22-24, tests/tests_password_2025.yml:18-21,
both tests/tests_selinux_enforcing_2025.yml:40-42 and :84-86,
tests/tests_tcp_firewall_2025.yml:23-25, and tests/tests_tls_2025.yml:25-27,
replace tags: cleanup with tags: tests::cleanup, including both SELinux cleanup
includes.

In `@tests/tests_configure_ha_cluster_external_read_only.yml`:
- Line 163: The cleanup tags use an inconsistent contract. In
tests/tests_configure_ha_cluster_external_read_only.yml:163-163,
tests/tests_configure_ha_cluster_read_scale.yml:98-98,
tests/tests_default_2019.yml:25-25, tests/tests_ha_single_2017.yml:111-111,
tests/tests_ha_single_2019.yml:111-111, tests/tests_ha_single_2022.yml:111-111,
tests/tests_idempotency_2017.yml:19-19, tests/tests_idempotency_2019.yml:19-19,
and tests/tests_idempotency_2022.yml:20-20, replace the cleanup tag with
tests::cleanup; in tests/tests_include_vars_from_parent.yml:121-131, tag the
local cleanup task and update the included cleanup tag to tests::cleanup.

In `@tests/tests_ha_single_2025.yml`:
- Around line 109-111: Update the cleanup task entry in the test playbook to use
the required `tests::cleanup` tag instead of `cleanup`, preserving the existing
`include_tasks` reference and task behavior.
- Around line 104-107: Update the cleanup task tags in the test workflow,
including the block around “Run tests_ha_single with SQL Server {{ mssql_version
}}” and the corresponding cleanup task in tests_ha_single.yml, replacing the
generic cleanup tag with tests::cleanup while preserving all other tags and
behavior.

In `@tests/tests_input_sql_file_2017.yml`:
- Line 20: Update the cleanup task tags from cleanup to tests::cleanup in
tests/tests_input_sql_file_2017.yml:20, tests/tests_input_sql_file_2019.yml:20,
tests/tests_input_sql_file_2022.yml:24, tests/tests_password_2017.yml:19,
tests/tests_password_2019.yml:19, tests/tests_password_2022.yml:20, and both
cleanup tag sites in tests/tests_selinux_enforcing_2022.yml:42 and :86. No other
changes are needed.

In `@tests/tests_selinux_enforcing_2025.yml`:
- Around line 65-69: Remove the direct fedora.linux_system_roles.selinux
include_role block from the test playbook, move the SELinux permissive setup
into a dedicated test task file, and invoke that file via
ansible.builtin.include_tasks while preserving selinux_state: permissive.

In `@vars/Fedora.yml`:
- Line 1: Remove the Fedora platform mapping by deleting the vars/Fedora.yml
symbolic link, then remove Fedora from the supported-platform entries in
meta/main.yml and all Fedora support documentation. Do not replace it with
another platform mapping; preserve only platforms officially supported by the
project.

---

Outside diff comments:
In `@tests/tests_include_vars_from_parent.yml`:
- Around line 121-125: Tag the local Cleanup task and the cleanup task around
the referenced loop with tests::cleanup, replacing the existing cleanup tag
where present. Ensure both cleanup tasks use the exact tests::cleanup tag so
debug runs can skip the entire cleanup sequence.

---

Nitpick comments:
In `@defaults/main.yml`:
- Around line 39-40: Add mssql_rpm_key_2025 to a relevant example playbook in
README.md, showing how users can override its default URL. Keep the existing
variable documentation and default value unchanged.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 978125b2-13f9-4b3a-af82-d5e8294d9c3e

📥 Commits

Reviewing files that changed from the base of the PR and between 3490f84 and 7e6a934.

📒 Files selected for processing (55)
  • README.md
  • defaults/main.yml
  • meta/main.yml
  • mssql-server-selinux-rhel10-bug-report.md
  • tasks/main.yml
  • tests/playbooks/tests_ad_integration.yml
  • tests/playbooks/tests_ad_integration_w_keytab.yml
  • tests/tasks/assert_fail_on_unsupported_ver.yml
  • tests/tasks/tests_ha_single.yml
  • tests/tasks/upgrade_and_assert.yml
  • tests/tests_2019_upgrade.yml
  • tests/tests_2022_upgrade.yml
  • tests/tests_2025_upgrade.yml
  • tests/tests_accept_eula.yml
  • tests/tests_configure_ha_cluster_external.yml
  • tests/tests_configure_ha_cluster_external_read_only.yml
  • tests/tests_configure_ha_cluster_read_scale.yml
  • tests/tests_default_2019.yml
  • tests/tests_ha_single_2017.yml
  • tests/tests_ha_single_2019.yml
  • tests/tests_ha_single_2022.yml
  • tests/tests_ha_single_2025.yml
  • tests/tests_idempotency_2017.yml
  • tests/tests_idempotency_2019.yml
  • tests/tests_idempotency_2022.yml
  • tests/tests_idempotency_2025.yml
  • tests/tests_include_vars_from_parent.yml
  • tests/tests_input_sql_file_2017.yml
  • tests/tests_input_sql_file_2019.yml
  • tests/tests_input_sql_file_2022.yml
  • tests/tests_input_sql_file_2025.yml
  • tests/tests_password_2017.yml
  • tests/tests_password_2019.yml
  • tests/tests_password_2022.yml
  • tests/tests_password_2025.yml
  • tests/tests_selinux_enforcing_2022.yml
  • tests/tests_selinux_enforcing_2025.yml
  • tests/tests_tcp_firewall_2017.yml
  • tests/tests_tcp_firewall_2019.yml
  • tests/tests_tcp_firewall_2022.yml
  • tests/tests_tcp_firewall_2025.yml
  • tests/tests_tls_2017.yml
  • tests/tests_tls_2019.yml
  • tests/tests_tls_2022.yml
  • tests/tests_tls_2025.yml
  • vars/AlmaLinux_10.yml
  • vars/AlmaLinux_9.yml
  • vars/CentOS_10.yml
  • vars/CentOS_9.yml
  • vars/Fedora.yml
  • vars/RedHat_10.yml
  • vars/RedHat_9.yml
  • vars/Rocky_10.yml
  • vars/Rocky_9.yml
  • vars/main.yml

Comment thread mssql-server-selinux-rhel10-bug-report.md Outdated
Comment thread mssql-server-selinux-rhel10-bug-report.md Outdated
Comment thread mssql-server-selinux-rhel10-bug-report.md Outdated
Comment thread mssql-server-selinux-rhel10-bug-report.md Outdated
Comment thread mssql-server-selinux-rhel10-bug-report.md Outdated
Comment thread tests/tests_ha_single_2025.yml
Comment thread tests/tests_ha_single_2025.yml Outdated
Comment thread tests/tests_input_sql_file_2017.yml Outdated
Comment on lines +65 to +69
- name: Set SELinux to permissive to test without selinux_confined
include_role:
name: fedora.linux_system_roles.selinux
vars:
selinux_state: permissive

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Remove the direct role invocation from this test playbook.

Line 66 uses ansible.builtin.include_role directly. Move the SELinux setup into a test task file, then call that file with ansible.builtin.include_tasks.

As per path instructions, files matching tests/tests_*.yml must never use ansible.builtin.include_role directly.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/tests_selinux_enforcing_2025.yml` around lines 65 - 69, Remove the
direct fedora.linux_system_roles.selinux include_role block from the test
playbook, move the SELinux permissive setup into a dedicated test task file, and
invoke that file via ansible.builtin.include_tasks while preserving
selinux_state: permissive.

Source: Path instructions

Comment thread vars/Fedora.yml
Comment thread meta/main.yml
company: Red Hat, Inc.
license: MIT
min_ansible_version: "2.9"
platforms:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't look right to remove the entire platforms section?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ansible-lint was arguing, I guess Ansible doesn't maintain platforms any more hence there is no need to maintain it from our side.

schema[meta]: roles/mssql/meta/main.yml#L1
$.galaxy_info.platforms[1].versions[0] '10' is not one of ['6.1', '7.1', '7.2', 'all']. See https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html#using-role-dependencies
schema[meta]: .ansible/collections/ansible_collections/fedora/linux_system_roles/roles/mssql/meta/main.yml#L1
$.galaxy_info.platforms[1].versions[0] '10' is not one of ['6.1', '7.1', '7.2', 'all']. See https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html#using-role-dependencies

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ansible-lint does not like having version "10" under

  platforms:
    - name: EL
      versions:

which is why we moved to using the tag el10 under galaxy_tags

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so the only change to meta/main.yml should be to add el10 under galaxy_tags

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then platform won't list EL 10, and tags will. That's a conflict.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then platform won't list EL 10, and tags will. That's a conflict.

This is fine, not a conflict. This is what every other role does e.g. https://github.com/linux-system-roles/auditd/blob/main/meta/main.yml#L15

  platforms:
    - name: Fedora
      versions:
        - all
    - name: EL
      versions:
        - "8"
        - "9"
    - name: Debian
      versions:
        - all
  galaxy_tags:
    - audit
    - auditd
    - security
    - el8
    - el9
    - el10

@spetrosi

spetrosi commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator Author

There is an issue with mssql-server on the Microsoft side: on RHEL 10 with SELinux enforcing, running SQL Server 2025 as a confined application fails during mssql-conf setup with Permission denied. The shipped mssql-server-selinux policy module appears incomplete — it defines no file contexts for the runtime directories under /var/opt/mssql (e.g. data and .system, which fall back to usr_t), and mssql_server_t has no rules to write its own directory types. As a result, confined setup is denied out of the box, and it can't be worked around from the role (a restorecon has no target context to apply).

I've let Microsoft know and am waiting for them to resolve this issue.

@spetrosi

Copy link
Copy Markdown
Collaborator Author

[citest]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants