Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
10ffda7
feat: split SELinux policy into public and test modules
bfjelds May 11, 2026
65ef899
feat: invoke trident update via systemd service in tests
bfjelds May 11, 2026
0daac44
fix: use mkdir -p for selinux build directory
bfjelds May 11, 2026
feafb4f
fix: split verbosity into separate env var for systemd
bfjelds May 11, 2026
bac962c
feat: add SELinux validation test images, revert update.go changes
bfjelds May 11, 2026
6b1cb96
feat: add SELinux update validation pipeline stage
bfjelds May 11, 2026
67fd1fd
cleanup: remove unused selinux-public-only test config
bfjelds May 11, 2026
acca620
refactor: use build-image.yml for SELinux test image builds
bfjelds May 11, 2026
5c29d89
fix: replace nonexistent download-tools.yml with actual artifact down…
bfjelds May 11, 2026
eded4b3
fix: add DownloadPipelineArtifact for SELinux test images
bfjelds May 11, 2026
e95020f
fix: download installer ISO and add stage dependency
bfjelds May 11, 2026
dc1ce18
refactor: use download-test-images.yml for ISO and tools download
bfjelds May 11, 2026
c0dc4a3
refactor: use explicit artifact downloads instead of download-test-im…
bfjelds May 11, 2026
8bfb258
cleanup: remove updateimg.yaml, use single build-image for both COSIs
bfjelds May 11, 2026
a5ae5a2
fix: rename COSIs to usrverity.cosi/usrverity_v2.cosi for usr-verity …
bfjelds May 11, 2026
eca9e11
fix: use qemu_guest baseimgType for SELinux test image
bfjelds May 11, 2026
8fe9a1d
fix: pass micBuildType, micVersion, useStagedSshKeys to build-image
bfjelds May 11, 2026
4801c9a
fix: build COSI not qcow2 for SELinux test image
bfjelds May 11, 2026
ee8b8f3
refactor: copy referenced files into trident-selinux-testimage, use l…
bfjelds May 12, 2026
f47e394
rename: trident-selinux-testimage -> trident-testimage/selinux
bfjelds May 12, 2026
1d359c5
rename: trident-testimage/selinux -> trident-testimage/base
bfjelds May 12, 2026
e53e12e
rename: baseimg.yaml -> baseimg-selinux.yaml
bfjelds May 12, 2026
1cac1b3
cleanup: remove id_rsa.pub references from SELinux test image
bfjelds May 12, 2026
8b049d4
feat: add optional --clones flag to COSI/ISO/VHDX build target
bfjelds May 12, 2026
65f5c7f
feat: add numClones parameter to build-image pipeline
bfjelds May 12, 2026
11d074e
fix: handle clone artifacts in output directory copy
bfjelds May 12, 2026
5f37428
fix: use netlaunch-prep.yml for libvirt/QEMU setup
bfjelds May 12, 2026
1b87802
fix: call trident-prep.yml to edit host config and set up SSH key
bfjelds May 12, 2026
2a092d0
refactor: rebase baseimg-selinux.yaml on trident-verity-testimage/usr…
bfjelds May 12, 2026
8fa01b7
refactor: move SELinux test image to test-images repo
bfjelds May 12, 2026
8e859cb
refactor: use stages/build_image/build-image.yml for SELinux test images
bfjelds May 12, 2026
5d63a67
revert: remove numClones/NUM_CLONES from trident pipeline and Makefile
bfjelds May 12, 2026
e4a756a
fix: capture journal and AVC log even when update stage fails
bfjelds May 12, 2026
36a2948
fix: write update config on VM before starting update service
bfjelds May 12, 2026
4418f69
fix: start netlisten to serve COSI files for update
bfjelds May 12, 2026
94a866e
fix: use python3 http.server instead of netlisten for COSI serving
bfjelds May 12, 2026
9e06712
fix: switch back to netlisten with retry loop for startup
bfjelds May 12, 2026
3775b95
fix: merge netlisten into same step as update invocation
bfjelds May 12, 2026
7953229
fix: remove stdout redirect from netlisten, add crash detection
bfjelds May 12, 2026
6d6d289
fix: fail fast if netlisten doesn't start
bfjelds May 12, 2026
795d413
fix: restore netlisten log redirect, copy logs to artifacts
bfjelds May 12, 2026
d819e2d
fix: add SSH and step timeouts to Collect logs
bfjelds May 12, 2026
1641659
fix: add netlisten to Go tools download patterns
bfjelds May 12, 2026
6133b3d
fix: add timeout to ausearch SSH call in update stage step
bfjelds May 12, 2026
c7c611b
fix: add SSH retry loop in validation step
bfjelds May 12, 2026
7c08ca7
fix: truncate serial log before finalize to avoid stale login detection
bfjelds May 12, 2026
f3f4a71
fix: take only first serial log path from virsh dumpxml
bfjelds May 12, 2026
b102c64
fix: re-resolve VM IP after reboot using virsh domifaddr
bfjelds May 13, 2026
a90bcee
feat: add comprehensive diagnostics to validation step
bfjelds May 13, 2026
69e4eaa
fix: wait for VM network after wait-for-login in finalize step
bfjelds May 13, 2026
9eea4a4
refactor: use 'trident update -v trace' instead of grpc-client
bfjelds May 13, 2026
7068357
fix: derive update config from install config with full os section
bfjelds May 13, 2026
2cf986f
feat: split RAID SELinux policies into trident-selinux-raid package
bfjelds May 13, 2026
1a6b79b
feat: split encryption & PCRlock SELinux policies into trident-selinu…
bfjelds May 13, 2026
1d90de7
feat: split GRUB & dracut SELinux policies into trident-selinux-grub
bfjelds May 13, 2026
f6da56f
docs: improve comments for optional relabeling policies
bfjelds May 13, 2026
cc234e9
docs: add explanatory comments to all SELinux policy rules
bfjelds May 13, 2026
f6f6790
feat: split cloud-init SELinux policies into trident-selinux-cloud-init
bfjelds May 13, 2026
c36fd39
security: narrow and clean up SELinux policies
bfjelds May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .pipelines/templates/e2e-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,12 @@ stages:
micVersion: ${{ parameters.micVersion }}
testSecureBoot: ${{ parameters.testSecureBoot }}

# SELinux policy validation — tests update with public policy only
- template: stages/testing_selinux/selinux-update-testing.yml
parameters:
micBuildType: ${{ parameters.micBuildType }}
micVersion: ${{ parameters.micVersion }}

# TESTING stages for AZL-VALIDATION
- ${{ if eq(parameters.stageType, 'azl-validation') }}:
# VM Testing (host, post_merge)
Expand Down

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ target/azl3/release/trident target/azl3/release/trident-acl-agent: version-vars
cargo build --color always --target-dir target/azl3 --release --features dangerous-options,grpc-preview -p trident -p trident-acl-agent

# This will do a proper build on azl3, exactly as the pipelines would, with the custom registry and all.
bin/trident-rpms-azl3.tar.gz: packaging/docker/Dockerfile.full packaging/systemd/*.service packaging/rpm/trident.spec artifacts/osmodifier packaging/selinux-policy-trident/* version-vars
bin/trident-rpms-azl3.tar.gz: packaging/docker/Dockerfile.full packaging/systemd/*.service packaging/rpm/trident.spec packaging/rpm/trident-test-selinux.spec artifacts/osmodifier packaging/selinux-policy-trident/* packaging/selinux-policy-trident-test/* version-vars
$(eval CARGO_REGISTRIES_BMP_PUBLICPACKAGES_TOKEN := $(shell az account get-access-token --query "join(' ', ['Bearer', accessToken])" --output tsv))

@mkdir -p bin/
Expand All @@ -207,7 +207,7 @@ bin/trident-rpms-azl3.tar.gz: packaging/docker/Dockerfile.full packaging/systemd
@tar xf $@ -C bin/

# This one does a fast trick-build where we build locally and inject the binary into the container to add it to the RPM.
bin/trident-rpms.tar.gz: packaging/docker/Dockerfile.azl3 packaging/systemd/*.service packaging/rpm/trident.spec artifacts/osmodifier target/release/trident packaging/selinux-policy-trident/*
bin/trident-rpms.tar.gz: packaging/docker/Dockerfile.azl3 packaging/systemd/*.service packaging/rpm/trident.spec packaging/rpm/trident-test-selinux.spec artifacts/osmodifier target/release/trident packaging/selinux-policy-trident/* packaging/selinux-policy-trident-test/*
@mkdir -p bin/
@if [ ! -f bin/trident ] || ! cmp -s target/release/trident bin/trident; then \
cp target/release/trident bin/trident; \
Expand Down Expand Up @@ -844,6 +844,7 @@ bin/trident-mos.iso: \
tests/images/trident-mos/files/* \
tests/images/trident-mos/post-install.sh \
packaging/selinux-policy-trident/* \
packaging/selinux-policy-trident-test/* \
tools/cmd/rcp-agent/rcp-agent.service \
bin/rcp-agent
@echo "Rebuilding Trident MOS ISO: $@ from $< because of: $?"
Expand Down
2 changes: 2 additions & 0 deletions packaging/docker/Dockerfile.azl3
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ RUN tdnf install -y rpmdevtools openssl-devel clang-devel protobuf-devel rust se
WORKDIR /work

COPY packaging/rpm/trident.spec .
COPY packaging/rpm/trident-test-selinux.spec .
COPY packaging ./packaging
COPY bin/trident ./target/release/trident
COPY artifacts/osmodifier /usr/src/azl/SOURCES/osmodifier
Expand All @@ -23,4 +24,5 @@ RUN \
--define="trident_version $TRIDENT_VERSION" \
--define="rpm_ver $RPM_VER" \
--define="rpm_rel $RPM_REL" && \
rpmbuild -bb --build-in-place trident-test-selinux.spec && \
tar -czvf trident-rpms.tar.gz -C /usr/src/azl ./RPMS
2 changes: 2 additions & 0 deletions packaging/docker/Dockerfile.full
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ RUN tdnf install -y rpmdevtools openssl-devel clang-devel protobuf-devel rust-1.
WORKDIR /work

COPY packaging/rpm/trident.spec .
COPY packaging/rpm/trident-test-selinux.spec .
COPY packaging ./packaging
COPY artifacts/osmodifier /usr/src/azl/SOURCES/osmodifier

Expand Down Expand Up @@ -35,6 +36,7 @@ RUN --mount=type=secret,id=registry_token \
--define="trident_version $TRIDENT_VERSION" \
--define="rpm_ver $RPM_VER" \
--define="rpm_rel $RPM_REL" && \
rpmbuild -bb --build-in-place trident-test-selinux.spec && \
tar -czvf trident-rpms.tar.gz -C /usr/src/azl ./RPMS

FROM scratch AS artifact
Expand Down
65 changes: 65 additions & 0 deletions packaging/rpm/trident-test-selinux.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Test-only SELinux policy module for Trident
#
# This RPM provides additional SELinux permissions needed only in test/CI
# environments. It layers on top of the base trident-selinux module and
# must NOT be installed in production images.
#
# Permissions included:
# - Steamboat/CI exec transition (ci_unconfined_t -> trident_t)
# - Interactive unconfined transition (for manual debugging)

%global selinuxtype targeted
%global modulename trident-test

Summary: Trident test-only SELinux policy
Name: trident-test-selinux
Version: 1.0.0
Release: 1%{?dist}
License: MIT
Vendor: Microsoft Corporation
Group: Applications/System
Distribution: Azure Linux
BuildArch: noarch

Requires: trident-selinux
Requires: selinux-policy-%{selinuxtype}
Requires(post): selinux-policy-%{selinuxtype}
BuildRequires: selinux-policy-devel
%{?selinux_requires}

%description
Test-only SELinux policy module for Trident. Provides CI/interactive
transitions that are not included in the production trident-selinux package.
This package must NOT be installed in production images.

%build
mkdir -p selinux
cp -p packaging/selinux-policy-trident-test/%{modulename}.fc selinux/
cp -p packaging/selinux-policy-trident-test/%{modulename}.if selinux/
cp -p packaging/selinux-policy-trident-test/%{modulename}.te selinux/

make -f %{_datadir}/selinux/devel/Makefile %{modulename}.pp
bzip2 -9 %{modulename}.pp

%install
install -D -m 0644 %{modulename}.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2
install -D -p -m 0644 selinux/%{modulename}.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{modulename}.if

%files
%{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2
%{_datadir}/selinux/devel/include/distributed/%{modulename}.if
%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{modulename}

%pre
%selinux_relabel_pre -s %{selinuxtype}

%post
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{modulename}.pp.bz2

%postun
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{modulename}
fi

%posttrans
%selinux_relabel_post -s %{selinuxtype}
197 changes: 195 additions & 2 deletions packaging/rpm/trident.spec
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,147 @@ fi

# ------------------------------------------------------------------------------

%package selinux-raid
Summary: Trident RAID SELinux policy
BuildArch: noarch
Requires: %{name}-selinux
Requires: selinux-policy-%{selinuxtype}
Requires(post): selinux-policy-%{selinuxtype}
BuildRequires: selinux-policy-devel
%{?selinux_requires}

%description selinux-raid
RAID SELinux policy module for Trident. Provides mdadm and bootloader
permissions needed for RAID storage configurations. Only install on
systems that use RAID.

%files selinux-raid
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-raid.pp.bz2
%{_datadir}/selinux/devel/include/distributed/%{name}-raid.if
%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}-raid

%pre selinux-raid
%selinux_relabel_pre -s %{selinuxtype}

%post selinux-raid
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}-raid.pp.bz2

%postun selinux-raid
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{name}-raid
fi

%posttrans selinux-raid
%selinux_relabel_post -s %{selinuxtype}

# ------------------------------------------------------------------------------

%package selinux-encryption
Summary: Trident encryption & PCRlock SELinux policy
BuildArch: noarch
Requires: %{name}-selinux
Requires: selinux-policy-%{selinuxtype}
Requires(post): selinux-policy-%{selinuxtype}
BuildRequires: selinux-policy-devel
%{?selinux_requires}

%description selinux-encryption
Encryption and PCRlock SELinux policy module for Trident. Provides TPM,
cryptsetup/LUKS, and systemd-pcrphase permissions. Only install on
systems that use encryption or pcrlock features.

%files selinux-encryption
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-encryption.pp.bz2
%{_datadir}/selinux/devel/include/distributed/%{name}-encryption.if
%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}-encryption

%pre selinux-encryption
%selinux_relabel_pre -s %{selinuxtype}

%post selinux-encryption
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}-encryption.pp.bz2

%postun selinux-encryption
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{name}-encryption
fi

%posttrans selinux-encryption
%selinux_relabel_post -s %{selinuxtype}

# ------------------------------------------------------------------------------

%package selinux-grub
Summary: Trident GRUB & dracut SELinux policy
BuildArch: noarch
Requires: %{name}-selinux
Requires: selinux-policy-%{selinuxtype}
Requires(post): selinux-policy-%{selinuxtype}
BuildRequires: selinux-policy-devel
%{?selinux_requires}

%description selinux-grub
GRUB and dracut SELinux policy module for Trident. Provides bootloader
execution, /boot management, and loadkeys permissions needed for
GRUB-based boot. Not needed on UKI/systemd-boot systems.

%files selinux-grub
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-grub.pp.bz2
%{_datadir}/selinux/devel/include/distributed/%{name}-grub.if
%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}-grub

%pre selinux-grub
%selinux_relabel_pre -s %{selinuxtype}

%post selinux-grub
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}-grub.pp.bz2

%postun selinux-grub
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{name}-grub
fi

%posttrans selinux-grub
%selinux_relabel_post -s %{selinuxtype}

# ------------------------------------------------------------------------------

%package selinux-cloud-init
Summary: Trident cloud-init SELinux policy
BuildArch: noarch
Requires: %{name}-selinux
Requires: selinux-policy-%{selinuxtype}
Requires(post): selinux-policy-%{selinuxtype}
BuildRequires: selinux-policy-devel
%{?selinux_requires}

%description selinux-cloud-init
Cloud-init SELinux policy module for Trident. Provides permissions for
trident to interact with cloud-init during provisioning, and for
cloud-init to manage files trident creates. Install on any system
that uses cloud-init.

%files selinux-cloud-init
%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-cloud-init.pp.bz2
%{_datadir}/selinux/devel/include/distributed/%{name}-cloud-init.if
%ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name}-cloud-init

%pre selinux-cloud-init
%selinux_relabel_pre -s %{selinuxtype}

%post selinux-cloud-init
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}-cloud-init.pp.bz2

%postun selinux-cloud-init
if [ $1 -eq 0 ]; then
%selinux_modules_uninstall -s %{selinuxtype} %{name}-cloud-init
fi

%posttrans selinux-cloud-init
%selinux_relabel_post -s %{selinuxtype}

# ------------------------------------------------------------------------------

%package static-pcrlock-files
Summary: Statically defined .pcrlock files
Requires: %{name}
Expand Down Expand Up @@ -244,14 +385,50 @@ export TRIDENT_VERSION="%{trident_version}"
%endif
cargo build --release

mkdir selinux
mkdir -p selinux
cp -p packaging/selinux-policy-trident/trident.fc selinux/
cp -p packaging/selinux-policy-trident/trident.if selinux/
cp -p packaging/selinux-policy-trident/trident.te selinux/

make -f %{_datadir}/selinux/devel/Makefile %{name}.pp
bzip2 -9 %{name}.pp

# Build RAID SELinux policy module
rm -f selinux/*
cp -p packaging/selinux-policy-trident-raid/trident-raid.fc selinux/
cp -p packaging/selinux-policy-trident-raid/trident-raid.if selinux/
cp -p packaging/selinux-policy-trident-raid/trident-raid.te selinux/

make -f %{_datadir}/selinux/devel/Makefile %{name}-raid.pp
bzip2 -9 %{name}-raid.pp

# Build encryption SELinux policy module
rm -f selinux/*
cp -p packaging/selinux-policy-trident-encryption/trident-encryption.fc selinux/
cp -p packaging/selinux-policy-trident-encryption/trident-encryption.if selinux/
cp -p packaging/selinux-policy-trident-encryption/trident-encryption.te selinux/

make -f %{_datadir}/selinux/devel/Makefile %{name}-encryption.pp
bzip2 -9 %{name}-encryption.pp

# Build GRUB SELinux policy module
rm -f selinux/*
cp -p packaging/selinux-policy-trident-grub/trident-grub.fc selinux/
cp -p packaging/selinux-policy-trident-grub/trident-grub.if selinux/
cp -p packaging/selinux-policy-trident-grub/trident-grub.te selinux/

make -f %{_datadir}/selinux/devel/Makefile %{name}-grub.pp
bzip2 -9 %{name}-grub.pp

# Build cloud-init SELinux policy module
rm -f selinux/*
cp -p packaging/selinux-policy-trident-cloud-init/trident-cloud-init.fc selinux/
cp -p packaging/selinux-policy-trident-cloud-init/trident-cloud-init.if selinux/
cp -p packaging/selinux-policy-trident-cloud-init/trident-cloud-init.te selinux/

make -f %{_datadir}/selinux/devel/Makefile %{name}-cloud-init.pp
bzip2 -9 %{name}-cloud-init.pp

%check
# Test the trident variable for the appropriate version
%if %{undefined rpm_ver}
Expand Down Expand Up @@ -280,7 +457,23 @@ install -D -m 755 target/release/%{name} %{buildroot}/%{_bindir}/%{name}

# Copy Trident SELinux policy module to /usr/share/selinux/packages
install -D -m 0644 %{name}.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2
install -D -p -m 0644 selinux/%{name}.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}.if
install -D -p -m 0644 packaging/selinux-policy-trident/%{name}.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}.if

# Copy Trident RAID SELinux policy module
install -D -m 0644 %{name}-raid.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-raid.pp.bz2
install -D -p -m 0644 packaging/selinux-policy-trident-raid/%{name}-raid.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}-raid.if

# Copy Trident encryption SELinux policy module
install -D -m 0644 %{name}-encryption.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-encryption.pp.bz2
install -D -p -m 0644 packaging/selinux-policy-trident-encryption/%{name}-encryption.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}-encryption.if

# Copy Trident GRUB SELinux policy module
install -D -m 0644 %{name}-grub.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-grub.pp.bz2
install -D -p -m 0644 packaging/selinux-policy-trident-grub/%{name}-grub.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}-grub.if

# Copy Trident cloud-init SELinux policy module
install -D -m 0644 %{name}-cloud-init.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}-cloud-init.pp.bz2
install -D -p -m 0644 packaging/selinux-policy-trident-cloud-init/%{name}-cloud-init.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/%{name}-cloud-init.if

mkdir -p %{buildroot}%{_unitdir}
install -D -m 644 packaging/systemd/%{name}.service %{buildroot}%{_unitdir}/%{name}.service
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# trident-cloud-init SELinux file contexts
# No additional file contexts needed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
## <summary>Cloud-init SELinux interfaces for Trident</summary>
## <desc>
## <p>
## This module provides no public interfaces.
## It exists only to satisfy the SELinux build toolchain requirement
## for a .if file alongside the .te and .fc files.
## </p>
## </desc>
Loading