Repository: osbuild/osbuild-composer
Pull request #3055 (2022-10-10 10:48:24)

Extend firewall customizations to add sources
~~Requires https://github.com/osbuild/osbuild/pull/1137~~ (see below)

This patch adds support to specify firewalld sources for zones

(will add tests asap)

Signed-off-by: Antonio Murdaca <runcom@linux.com>

---
osbuild-composer counterpart to osbuild/osbuild#1157.

Signed-off-by: Irene Diez <idiez@redhat.com>

This pull request includes:

- [x] adequate testing for the new functionality or fixed issue
- [ ] adequate documentation informing people about the change such as
  - [ ] submit a PR for the [guides](https://github.com/osbuild/guides) repository if this PR changed any behavior described there: https://www.osbuild.org/guides/

<!--
Thanks for proposing a change to osbuild-composer!

Please don't remove the above check list. These are things that each pull
request must have before it is merged. It helps maintainers to not forget
anything.

If the reason for ticking any of the boxes is ambiguous, please add a short
note explaining why.

In addition, if this pull request fixes a downstream issue, please refer to
test/README.md and add these additional items:

- [ ] 1st commit of any `rhbz#` related PR contains bug reproducer; CI reports FAIL or
- [ ] PR contains automated tests for new functionality and
- [ ] QE has approved reproducer/new tests and
- [ ] Subsequent commits provide bug fixes without modifying the reproducer; CI reports PASS and
- [ ] QE approves this PR; RHBZ status is set to `MODIFIED + Verified=Tested`

Information regarding our GitLab pipeline (Schutzbot):

CI will not be ran automatically if WIP label is applied or the PR is in DRAFT state, instead only
a link will be provided to the pipeline which can then be triggered manually if desired. To run the
CI automatically either switch the PR to ready or apply WIP+test label.

Outside contributors need manual approval from one of the osbuild-composer maintainers.

Schutzbot will only be triggered if all Tests jobs in GitHub workflow succeed.
-->


7flying: The tests are all green but the CentOS9 ones on Packit
achilleas-k: Looks good, but the git history is a bit weird with the addition of the customization and then changing it.  Not a big issue though.  Did a rebase to hopefully get everything green again and merge.
7flying: > Looks good, but the git history is a bit weird with the addition of the customization and then changing it. Not a big issue though. Did a rebase to hopefully get everything green again and merge.

Yeah, I wanted to build upon @runcom's work now that I have permissions to write on other people's branches. Seemed more 'fair/accountable' to me.

Thanks for the review Achilleas!
gicmo: > > Looks good, but the git history is a bit weird with the addition of the customization and then changing it. Not a big issue though. Did a rebase to hopefully get everything green again and merge.
> 
> Yeah, I wanted to build upon @runcom's work now that I have permissions to write on other people's branches. Seemed more 'fair/accountable' to me.

We sometimes use the `Co-authored-By:`  git trailer for this, see https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors


mcattamoredhat: Hello, I have been trying to test locally the firewall zones customization, may you please help me to clarify which is the proper syntax to include it in the blueprint?

Example 1: 
[customizations.firewall.zones]
name = "dmz"
sources = ["192.168.100.50"]

or

Example 2:
[[customizations.firewall.zones]]
name = "dmz"
sources = ["192.168.100.50"]

Example 1 did throws an error at pushing though, Example 2 didn't, but the compose fails.
7flying: > Hello, I have been trying to test locally the firewall zones customization, may you please help me to clarify which is the proper syntax to include it in the blueprint?
> 
> Example 1: [customizations.firewall.zones] name = "dmz" sources = ["192.168.100.50"]
> 
> or
> 
> Example 2: [[customizations.firewall.zones]] name = "dmz" sources = ["192.168.100.50"]
> 
> Example 1 did throws an error at pushing though, Example 2 didn't, but the compose fails.

Example 2 is the way to go. You need to use an [array of tables](https://toml.io/en/v1.0.0#array-of-tables).
My tests have been done using osbuild at commit `1ecc7843866af7a1896f55ac0bba3482e7ad15d8` and osbuild-composer with this branch rebased in the current main, you need the commits from #3099 .

achilleas-k: CS9 CI runners are failing to install osbuild because the repo snapshots we have configured are too old.
We're going to have to update the repos in `test/data/repositories/centos-stream-9.json` to `20221101` from `20220330`.
7flying: > CS9 CI runners are failing to install osbuild because the repo snapshots we have configured are too old. We're going to have to update the repos in `test/data/repositories/centos-stream-9.json` to `20221101` from `20220330`.

Can I do it myself with a new commit on this PR or do you want to handle that separately?
achilleas-k: > > CS9 CI runners are failing to install osbuild because the repo snapshots we have configured are too old. We're going to have to update the repos in `test/data/repositories/centos-stream-9.json` to `20221101` from `20220330`.
> 
> Can I do it myself with a new commit on this PR or do you want to handle that separately?

Go ahead and update them.  If we get any issues (from new packages), we can think about dealing with them separately.
7flying: Status as of 4/11:
Some of the tests in Gitlab's CI [fail](https://gitlab.com/redhat/services/products/image-builder/ci/osbuild-composer/-/jobs/3276139517) in CentOS-9  because there is a missing GPG key on `containers-common` ([bugzilla](https://bugzilla.redhat.com/show_bug.cgi?id=2123611)).

We need to wait until `containers-common-1-45.el9` appears in the composes, the Osbuild folks need to make a new snapshot and then we can update the repos at `test/data/repositories` with the proper snapshot.
runcom: @7flying can you rebase and update the repo to 20221115?
7flying: @runcom, I will wait until #3136 goes in to rebase again
runcom: this needs a rebase :angel: 
7flying: > this needs a rebase angel

Yes I was working on it, but the whole firewall-customizations (https://github.com/osbuild/osbuild-composer/pull/3055/files#diff-35ef1e16afb78c169160d0547c67bcc94cb891f2519ee115dfcabd776bfd54d9R69) pre `new-shiny-rhel` are nowhere to be found, the stuff that was there before our changes.
7flying: > > this needs a rebase angel
> 
> Yes I was working on it, but the whole firewall-customizations (https://github.com/osbuild/osbuild-composer/pull/3055/files#diff-35ef1e16afb78c169160d0547c67bcc94cb891f2519ee115dfcabd776bfd54d9R69) pre `new-shiny-rhel` are nowhere to be found, the stuff that was there before our changes.

Found the thing, ignore this.

Patch:
diff --git a/Schutzfile b/Schutzfile
index 3cfc00822..248f5da6a 100644
--- a/Schutzfile
+++ b/Schutzfile
@@ -2,7 +2,7 @@
   "fedora-35": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     },
     "repos": [
@@ -79,7 +79,7 @@
   "fedora-36": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     },
     "repos": [
@@ -156,7 +156,7 @@
   "fedora-37": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     },
     "repos": [
@@ -233,21 +233,21 @@
   "rhel-8.4": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     }
   },
   "rhel-8.6": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     }
   },
   "rhel-8.7": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     },
     "repos": [
@@ -334,14 +334,14 @@
   "rhel-9.0": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     }
   },
   "rhel-9.1": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     },
     "repos": [
@@ -428,21 +428,21 @@
   "centos-8": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     }
   },
   "centos-9": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     }
   },
   "centos-stream-9": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     },
     "repos": [
@@ -488,7 +488,7 @@
   "centos-stream-8": {
     "dependencies": {
       "osbuild": {
-        "commit": "976fbe178ac66ee0ba64c983d754dc4672921958"
+        "commit": "24b116213ce6836f0aca310325ed037cedaaf616"
       }
     },
     "repos": [
diff --git a/internal/blueprint/customizations.go b/internal/blueprint/customizations.go
index 299ccc6df..1dfdb53c9 100644
--- a/internal/blueprint/customizations.go
+++ b/internal/blueprint/customizations.go
@@ -74,6 +74,12 @@ type LocaleCustomization struct {
 type FirewallCustomization struct {
 	Ports    []string                       `json:"ports,omitempty" toml:"ports,omitempty"`
 	Services *FirewallServicesCustomization `json:"services,omitempty" toml:"services,omitempty"`
+	Zones    []FirewallZoneCustomization    `json:"zones,omitempty" toml:"zones,omitempty"`
+}
+
+type FirewallZoneCustomization struct {
+	Name    *string  `json:"name,omitempty" toml:"name,omitempty"`
+	Sources []string `json:"sources,omitempty" toml:"sources,omitempty"`
 }
 
 type FirewallServicesCustomization struct {
@@ -162,8 +168,8 @@ func (e *CustomizationError) Error() string {
 	return e.Message
 }
 
-//CheckCustomizations returns an error of type `CustomizationError`
-//if `c` has any customizations not specified in `allowed`
+// CheckCustomizations returns an error of type `CustomizationError`
+// if `c` has any customizations not specified in `allowed`
 func (c *Customizations) CheckAllowed(allowed ...string) error {
 	if c == nil {
 		return nil
diff --git a/internal/distro/rhel8/pipelines.go b/internal/distro/rhel8/pipelines.go
index 59180e30e..f7a2d363b 100644
--- a/internal/distro/rhel8/pipelines.go
+++ b/internal/distro/rhel8/pipelines.go
@@ -200,8 +200,8 @@ func tarPipelines(t *imageType, customizations *blueprint.Customizations, option
 	return pipelines, nil
 }
 
-//makeISORootPath return a path that can be used to address files and folders in
-//the root of the iso
+// makeISORootPath return a path that can be used to address files and folders in
+// the root of the iso
 func makeISORootPath(p string) string {
 	fullpath := path.Join("/run/install/repo", p)
 	return fmt.Sprintf("file://%s", fullpath)
@@ -497,11 +497,12 @@ func osPipeline(t *imageType,
 		// merge the user-provided firewall config with the default one
 		if fwStageOptions != nil {
 			fwStageOptions = &osbuild.FirewallStageOptions{
-				// Prefer the firewall ports and services settings provided
+				// Prefer the firewall ports, services and zone settings provided
 				// via BP customization.
 				Ports:            fwStageOptions.Ports,
 				EnabledServices:  fwStageOptions.EnabledServices,
 				DisabledServices: fwStageOptions.DisabledServices,
+				Zones:            fwStageOptions.Zones,
 				// Default zone can not be set using BP customizations, therefore
 				// default to the one provided in the default image configuration.
 				DefaultZone: firewallConfig.DefaultZone,
@@ -664,6 +665,19 @@ func osPipeline(t *imageType,
 		}))
 	}
 
+	if t.rpmOstree {
+		p.AddStage(osbuild.NewSystemdJournaldStage(
+			&osbuild.SystemdJournaldStageOptions{
+				Filename: "10-persistent.conf",
+				Config: osbuild.SystemdJournaldConfigDropin{
+					Journal: osbuild.SystemdJournaldConfigJournalSection{
+						Storage: osbuild.StoragePresistent,
+					},
+				},
+			},
+		))
+	}
+
 	// Relabel the tree, unless the `NoSElinux` flag is explicitly set to `true`
 	if imageConfig.NoSElinux == nil || imageConfig.NoSElinux != nil && !*imageConfig.NoSElinux {
 		p.AddStage(osbuild.NewSELinuxStage(selinuxStageOptions(false)))
diff --git a/internal/distro/rhel8/stage_options.go b/internal/distro/rhel8/stage_options.go
index 873b2d469..d653e8823 100644
--- a/internal/distro/rhel8/stage_options.go
+++ b/internal/distro/rhel8/stage_options.go
@@ -76,6 +76,15 @@ func firewallStageOptions(firewall *blueprint.FirewallCustomization) *osbuild.Fi
 		options.DisabledServices = firewall.Services.Disabled
 	}
 
+	if len(firewall.Zones) != 0 {
+		for _, z := range firewall.Zones {
+			options.Zones = append(options.Zones, osbuild.FirewallZone{
+				Name:    *z.Name,
+				Sources: z.Sources,
+			})
+		}
+	}
+
 	return &options
 }
 
diff --git a/internal/distro/rhel9/images.go b/internal/distro/rhel9/images.go
index 9679b10d1..09e9377c6 100644
--- a/internal/distro/rhel9/images.go
+++ b/internal/distro/rhel9/images.go
@@ -65,6 +65,7 @@ func osCustomizations(
 		osc.DefaultTarget = *imageConfig.DefaultTarget
 	}
 
+	osc.Firewall = imageConfig.Firewall
 	if fw := c.GetFirewall(); fw != nil {
 		options := osbuild.FirewallStageOptions{
 			Ports: fw.Ports,
@@ -74,6 +75,14 @@ func osCustomizations(
 			options.EnabledServices = fw.Services.Enabled
 			options.DisabledServices = fw.Services.Disabled
 		}
+		if fw.Zones != nil {
+			for _, z := range fw.Zones {
+				options.Zones = append(options.Zones, osbuild.FirewallZone{
+					Name:    *z.Name,
+					Sources: z.Sources,
+				})
+			}
+		}
 		osc.Firewall = &options
 	}
 
@@ -155,7 +164,6 @@ func osCustomizations(
 	osc.RHSMConfig = imageConfig.RHSMConfig
 	osc.Subscription = options.Subscription
 	osc.WAAgentConfig = imageConfig.WAAgentConfig
-	osc.Firewall = imageConfig.Firewall
 	osc.UdevRules = imageConfig.UdevRules
 	osc.GCPGuestAgentConfig = imageConfig.GCPGuestAgentConfig
 
diff --git a/internal/manifest/os.go b/internal/manifest/os.go
index 1b8998074..a5aa7431a 100644
--- a/internal/manifest/os.go
+++ b/internal/manifest/os.go
@@ -530,6 +530,18 @@ func (p *OS) serialize() osbuild.Pipeline {
 		}))
 	}
 
+	if p.OSTreeRef != "" {
+		pipeline.AddStage(osbuild.NewSystemdJournaldStage(
+			&osbuild.SystemdJournaldStageOptions{
+				Filename: "10-persistent.conf",
+				Config: osbuild.SystemdJournaldConfigDropin{
+					Journal: osbuild.SystemdJournaldConfigJournalSection{
+						Storage: osbuild.StoragePresistent,
+					},
+				},
+			}))
+	}
+
 	if p.SElinux != "" {
 		pipeline.AddStage(osbuild.NewSELinuxStage(&osbuild.SELinuxStageOptions{
 			FileContexts: fmt.Sprintf("etc/selinux/%s/contexts/files/file_contexts", p.SElinux),
diff --git a/internal/osbuild/firewall_stage.go b/internal/osbuild/firewall_stage.go
index 8ffe8349b..2ed28ec23 100644
--- a/internal/osbuild/firewall_stage.go
+++ b/internal/osbuild/firewall_stage.go
@@ -1,14 +1,33 @@
 package osbuild
 
+import "fmt"
+
 type FirewallStageOptions struct {
-	Ports            []string `json:"ports,omitempty"`
-	EnabledServices  []string `json:"enabled_services,omitempty"`
-	DisabledServices []string `json:"disabled_services,omitempty"`
-	DefaultZone      string   `json:"default_zone,omitempty"`
+	Ports            []string       `json:"ports,omitempty"`
+	EnabledServices  []string       `json:"enabled_services,omitempty"`
+	DisabledServices []string       `json:"disabled_services,omitempty"`
+	DefaultZone      string         `json:"default_zone,omitempty"`
+	Zones            []FirewallZone `json:"zones,omitempty"`
+}
+
+type FirewallZone struct {
+	Name    string   `json:"name,omitempty"`
+	Sources []string `json:"sources,omitempty"`
 }
 
 func (FirewallStageOptions) isStageOptions() {}
 
+func (o FirewallStageOptions) validate() error {
+	if len(o.Zones) != 0 {
+		for _, fz := range o.Zones {
+			if fz.Name == "" || len(fz.Sources) == 0 {
+				return fmt.Errorf("items in firewall Zones cannot be empty, provide a non-empty 'Name' and a list of 'Sources'")
+			}
+		}
+	}
+	return nil
+}
+
 func NewFirewallStage(options *FirewallStageOptions) *Stage {
 	return &Stage{
 		Type:    "org.osbuild.firewall",
diff --git a/internal/osbuild/systemd_journald_stage.go b/internal/osbuild/systemd_journald_stage.go
new file mode 100644
index 000000000..906bf3815
--- /dev/null
+++ b/internal/osbuild/systemd_journald_stage.go
@@ -0,0 +1,92 @@
+package osbuild
+
+import (
+	"fmt"
+	"regexp"
+)
+
+const configFilenameRegex = "^[a-zA-Z0-9_\\.-]{1,250}\\.conf$"
+
+type SystemdJournaldStageOptions struct {
+	Filename string                      `json:"filename"`
+	Config   SystemdJournaldConfigDropin `json:"config"`
+}
+
+func (SystemdJournaldStageOptions) isStageOptions() {}
+
+func (o SystemdJournaldStageOptions) validate() error {
+	filenameRegex := regexp.MustCompile(configFilenameRegex)
+	if !filenameRegex.MatchString(o.Filename) {
+		return fmt.Errorf("filename %q doesn't conform to schema (%s)", o.Filename, repoFilenameRegex)
+	}
+	if o.Config.Journal == (SystemdJournaldConfigJournalSection{}) {
+		return fmt.Errorf("the 'Journal' section is required")
+	}
+
+	return nil
+}
+
+func NewSystemdJournaldStage(options *SystemdJournaldStageOptions) *Stage {
+	if err := options.validate(); err != nil {
+		panic(err)
+	}
+	return &Stage{
+		Type:    "org.osbuild.systemd-journald",
+		Options: options,
+	}
+}
+
+type SystemdJournaldConfigDropin struct {
+	Journal SystemdJournaldConfigJournalSection `json:"Journal"`
+}
+
+type ConfigStorage string
+
+const (
+	StorageVolatile   ConfigStorage = "volatile"
+	StoragePresistent ConfigStorage = "persistent"
+	StorageAuto       ConfigStorage = "auto"
+	StorageNone       ConfigStorage = "none"
+)
+
+type ConfigSplitMode string
+
+const (
+	SplitUuid ConfigSplitMode = "uuid"
+	SplitNone ConfigSplitMode = "none"
+)
+
+type ConfigAudit string
+
+const (
+	AuditYes ConfigAudit = "yes"
+	AuditNo  ConfigAudit = "no"
+)
+
+// 'Journal' configuration section, at least one option must be specified
+type SystemdJournaldConfigJournalSection struct {
+	// Controls where to store journal data.
+	Storage ConfigStorage `json:"Storage,omitempty"`
+
+	// Sets whether the data objects stored in the journal should be
+	// compressed or not. Can also take threshold values.
+	Compress string `json:"Compress,omitempty"`
+
+	// Splits journal files per user or to a single file.
+	SplitMode ConfigSplitMode `json:"SplitMode,omitempty"`
+
+	// Max time to store entries in a single file. By default seconds, may be
+	// sufixed with units (year, month, week, day, h, m) to override this.
+	MaxFileSec string `json:"MaxFileSec,omitempty"`
+
+	// Maximum time to store journal entries. By default seconds, may be sufixed
+	// with units (year, month, week, day, h, m) to override this.
+	MaxRetentionSec string `json:"MaxRetentionSec,omitempty"`
+
+	// Timeout before synchronizing journal files to disk. Minimum 0.
+	SyncIntervalSec int `json:"SyncIntervalSec,omitempty"`
+
+	// Enables/Disables kernel auditing on start-up, leaves it as is if
+	// unspecified.
+	Audit ConfigAudit `json:"Audit,omitempty"`
+}


Test patch:
diff --git a/internal/osbuild/firewall_stage_test.go b/internal/osbuild/firewall_stage_test.go
index 89fa2776c..e4e64b4e3 100644
--- a/internal/osbuild/firewall_stage_test.go
+++ b/internal/osbuild/firewall_stage_test.go
@@ -14,3 +14,14 @@ func TestNewFirewallStage(t *testing.T) {
 	actualFirewall := NewFirewallStage(&FirewallStageOptions{})
 	assert.Equal(t, expectedFirewall, actualFirewall)
 }
+
+func TestFirewallStageZones_ValidateInvalid(t *testing.T) {
+	options := FirewallStageOptions{}
+	var sources []string
+	options.Zones = append(options.Zones, FirewallZone{
+		Name:    "",
+		Sources: sources,
+	})
+	assert := assert.New(t)
+	assert.Error(options.validate())
+}
diff --git a/internal/osbuild/systemd_journald_stage_test.go b/internal/osbuild/systemd_journald_stage_test.go
new file mode 100644
index 000000000..550147fed
--- /dev/null
+++ b/internal/osbuild/systemd_journald_stage_test.go
@@ -0,0 +1,70 @@
+package osbuild
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestNewSystemdJournalStage(t *testing.T) {
+	options := &SystemdJournaldStageOptions{
+		Filename: "journald-config.conf",
+		Config: SystemdJournaldConfigDropin{
+			Journal: SystemdJournaldConfigJournalSection{
+				Storage:    StoragePresistent,
+				Compress:   "yes",
+				MaxFileSec: "10day",
+				Audit:      AuditYes,
+			},
+		}}
+	expectedStage := &Stage{
+		Type:    "org.osbuild.systemd-journald",
+		Options: options,
+	}
+	actualStage := NewSystemdJournaldStage(options)
+	assert.Equal(t, expectedStage, actualStage)
+}
+
+func TestSystemdJournaldStage_ValidateInvalid(t *testing.T) {
+	tests := []struct {
+		name    string
+		options SystemdJournaldStageOptions
+	}{
+		{
+			name:    "empty-options",
+			options: SystemdJournaldStageOptions{},
+		},
+		{
+			name: "no-journal-section-options",
+			options: SystemdJournaldStageOptions{
+				Filename: "10-some-file.conf",
+				Config: SystemdJournaldConfigDropin{
+					Journal: SystemdJournaldConfigJournalSection{},
+				},
+			},
+		},
+	}
+	for idx, te := range tests {
+		t.Run(te.name, func(t *testing.T) {
+			assert.Errorf(t, te.options.validate(), "%q didn't return an error [idx: %d]", te.name, idx)
+			assert.Panics(t, func() { NewSystemdJournaldStage(&te.options) })
+		})
+	}
+}
+
+func TestInvalidFilename(t *testing.T) {
+	options := &SystemdJournaldStageOptions{
+		Filename: "invalid-filename",
+		Config: SystemdJournaldConfigDropin{
+			Journal: SystemdJournaldConfigJournalSection{
+				Storage:    StoragePresistent,
+				Compress:   "yes",
+				MaxFileSec: "10day",
+				Audit:      AuditYes,
+			},
+		},
+	}
+
+	assert.Errorf(t, options.validate(), "test didn't return any error ")
+	assert.Panics(t, func() { NewSystemdJournaldStage(options) })
+}
diff --git a/test/cases/ostree.sh b/test/cases/ostree.sh
index ef015cf1e..77514c5be 100755
--- a/test/cases/ostree.sh
+++ b/test/cases/ostree.sh
@@ -10,6 +10,9 @@ if [[ ${ID} == "rhel" ]] && ! sudo subscription-manager status; then
     source /usr/libexec/osbuild-composer-test/define-compose-url.sh
 fi
 
+# Set up variables.
+FIREWALL_FEATURE="false"
+
 # Provision the software under test.
 /usr/libexec/osbuild-composer-test/provision.sh none
 
@@ -22,6 +25,7 @@ case "${ID}-${VERSION_ID}" in
         USER_IN_COMMIT="false"
         BOOT_LOCATION="https://mirrors.rit.edu/fedora/fedora/linux/releases/36/Everything/x86_64/os/"
         EMBEDED_CONTAINER="false"
+        FIREWALL_FEATURE="false"
         ;;
     "fedora-37")
         IMAGE_TYPE=iot-commit
@@ -30,6 +34,7 @@ case "${ID}-${VERSION_ID}" in
         USER_IN_COMMIT="false"
         BOOT_LOCATION="https://mirrors.kernel.org/fedora/development/37/Everything/x86_64/os/"
         EMBEDED_CONTAINER="false"
+        FIREWALL_FEATURE="false"
         ;;
     "rhel-8.4")
         IMAGE_TYPE=edge-commit
@@ -38,6 +43,7 @@ case "${ID}-${VERSION_ID}" in
         USER_IN_COMMIT="true"
         BOOT_LOCATION="http://download.devel.redhat.com/released/rhel-8/RHEL-8/8.4.0/BaseOS/x86_64/os/"
         EMBEDED_CONTAINER="false"
+        FIREWALL_FEATURE="false"
         ;;
     "rhel-8.6")
         IMAGE_TYPE=edge-commit
@@ -46,6 +52,7 @@ case "${ID}-${VERSION_ID}" in
         USER_IN_COMMIT="true"
         BOOT_LOCATION="http://download.devel.redhat.com/released/rhel-8/RHEL-8/8.6.0/BaseOS/x86_64/os/"
         EMBEDED_CONTAINER="false"
+        FIREWALL_FEATURE="false"
         ;;
     "rhel-8.7")
         IMAGE_TYPE=edge-commit
@@ -53,6 +60,7 @@ case "${ID}-${VERSION_ID}" in
         OS_VARIANT="rhel8-unknown"
         USER_IN_COMMIT="true"
         EMBEDED_CONTAINER="true"
+        FIREWALL_FEATURE="true"
 
         # Use a stable installer image unless it's the nightly pipeline
         BOOT_LOCATION="http://download.devel.redhat.com/released/rhel-8/RHEL-8/8.6.0/BaseOS/x86_64/os/"
@@ -67,6 +75,7 @@ case "${ID}-${VERSION_ID}" in
         USER_IN_COMMIT="true"
         BOOT_LOCATION="http://download.devel.redhat.com/released/rhel-9/RHEL-9/9.0.0/BaseOS/x86_64/os/"
         EMBEDED_CONTAINER="false"
+        FIREWALL_FEATURE="false"
         ;;
     "rhel-9.1")
         IMAGE_TYPE=edge-commit
@@ -74,6 +83,7 @@ case "${ID}-${VERSION_ID}" in
         OS_VARIANT="rhel9-unknown"
         USER_IN_COMMIT="true"
         EMBEDED_CONTAINER="true"
+        FIREWALL_FEATURE="true"
 
         # Use a stable installer image unless it's the nightly pipeline
         BOOT_LOCATION="http://download.devel.redhat.com/released/rhel-9/RHEL-9/9.0.0/BaseOS/x86_64/os/"
@@ -88,6 +98,7 @@ case "${ID}-${VERSION_ID}" in
         USER_IN_COMMIT="true"
         BOOT_LOCATION="http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/"
         EMBEDED_CONTAINER="true"
+        FIREWALL_FEATURE="false"
         ;;
     "centos-9")
         IMAGE_TYPE=edge-commit
@@ -96,6 +107,7 @@ case "${ID}-${VERSION_ID}" in
         USER_IN_COMMIT="true"
         BOOT_LOCATION="https://odcs.stream.centos.org/production/latest-CentOS-Stream/compose/BaseOS/x86_64/os/"
         EMBEDED_CONTAINER="true"
+        FIREWALL_FEATURE="false"
         ;;
     *)
         echo "unsupported distro: ${ID}-${VERSION_ID}"
@@ -516,6 +528,17 @@ source = "quay.io/fedora/fedora:latest"
 EOF
 fi
 
+if [[ "${FIREWALL_FEATURE}" == "true" ]]; then
+    tee -a "$BLUEPRINT_FILE" > /dev/null << EOF
+[[customizations.firewall.zones]]
+name = "trusted"
+sources = ["192.168.100.51"]
+[[customizations.firewall.zones]]
+name = "work"
+sources = ["192.168.100.52"]
+EOF
+fi
+
 # Build upgrade image.
 build_image "$BLUEPRINT_FILE" upgrade
 
@@ -582,7 +605,7 @@ ansible_ssh_common_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/
 EOF
 
 # Test IoT/Edge OS
-sudo ansible-playbook -v -i "${TEMPDIR}"/inventory -e image_type=${IMAGE_TYPE} -e ostree_commit="${UPGRADE_HASH}" -e embeded_container="${EMBEDED_CONTAINER}" /usr/share/tests/osbuild-composer/ansible/check_ostree.yaml || RESULTS=0
+sudo ansible-playbook -v -i "${TEMPDIR}"/inventory -e image_type=${IMAGE_TYPE} -e ostree_commit="${UPGRADE_HASH}" -e embeded_container="${EMBEDED_CONTAINER}" -e firewall_feature="${FIREWALL_FEATURE}" /usr/share/tests/osbuild-composer/ansible/check_ostree.yaml || RESULTS=0
 check_result
 
 # Final success clean up
diff --git a/test/data/ansible/check_ostree.yaml b/test/data/ansible/check_ostree.yaml
index 14ea86194..96919b737 100644
--- a/test/data/ansible/check_ostree.yaml
+++ b/test/data/ansible/check_ostree.yaml
@@ -8,6 +8,7 @@
     embeded_container: "false"
     total_counter: "0"
     failed_counter: "0"
+    firewall_feature: "false"
 
   tasks:
     # current target host's IP address
@@ -699,6 +700,28 @@
             failed_counter: "{{ failed_counter | int + 1 }}"
       when: skip_rollback_test == "false"
 
+    - name: check journald has persistent logging
+      block:
+        - name: lsit boots
+          shell: journalctl --list-boots
+          register: result_list_boots
+
+        - assert:
+            that:
+              - result_list_boots.stdout_lines | length > 1
+            fail_msg: "journald hasn't persistent logging"
+            success_msg: "journald has persistent logging"
+      always:
+        - set_fact:
+            total_counter: "{{ total_counter | int + 1 }}"
+      rescue:
+        - name: failed count + 1
+          set_fact:
+            failed_counter: "{{ failed_counter | int + 1 }}"
+      when:
+        - skip_rollback_test == "false"
+        - result_rollback is succeeded
+
     # case: check ostree commit after rollback
     - name: check ostree commit after rollback
       block:
@@ -816,6 +839,33 @@
         - skip_rollback_test == "false"
         - result_rollback is succeeded
 
+    # case: checking firewall customizations
+    - name: Check applied firewall customizations
+      block:
+        - name: Ensure firewall customizations applied from blueprint in trusted zone
+          command: firewall-cmd --info-zone=trusted
+          register: result_trusted_zone
+          become: yes
+        - name: Ensure firewall customizations applied from blueprint in work zone
+          command: firewall-cmd --info-zone=work
+          register: result_work_zone
+          become: yes
+
+        - assert:
+            that:
+              - "'192.168.100.51' in result_trusted_zone.stdout"
+              - "'192.168.100.52' in result_work_zone.stdout"
+            fail_msg: "No firewall customizations found"
+            success_msg: "Firewall customizations added from blueprint"
+      always:
+        - set_fact:
+            total_counter: "{{ total_counter | int + 1 }}"
+      rescue:
+        - name: failed count + 1
+          set_fact:
+            failed_counter: "{{ failed_counter | int + 1 }}"
+      when: firewall_feature == "true"
+
     - assert:
         that:
           - failed_counter == "0"
diff --git a/test/data/manifests/centos_8-aarch64-edge_commit-boot.json b/test/data/manifests/centos_8-aarch64-edge_commit-boot.json
index be655e96c..bc3ab3f80 100644
--- a/test/data/manifests/centos_8-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/centos_8-aarch64-edge_commit-boot.json
@@ -5029,6 +5029,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_8-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/centos_8-aarch64-edge_commit_with_container-boot.json
index 8638dd3cf..11dfaeb4b 100644
--- a/test/data/manifests/centos_8-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/centos_8-aarch64-edge_commit_with_container-boot.json
@@ -5286,6 +5286,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_8-aarch64-edge_container-boot.json b/test/data/manifests/centos_8-aarch64-edge_container-boot.json
index 0eb93f006..83896b5e5 100644
--- a/test/data/manifests/centos_8-aarch64-edge_container-boot.json
+++ b/test/data/manifests/centos_8-aarch64-edge_container-boot.json
@@ -5029,6 +5029,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_8-x86_64-edge_commit-boot.json b/test/data/manifests/centos_8-x86_64-edge_commit-boot.json
index ae447d9e5..75c9b5186 100644
--- a/test/data/manifests/centos_8-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/centos_8-x86_64-edge_commit-boot.json
@@ -5213,6 +5213,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_8-x86_64-edge_commit_rt-boot.json b/test/data/manifests/centos_8-x86_64-edge_commit_rt-boot.json
index 0dc17e89e..6cec3e39e 100644
--- a/test/data/manifests/centos_8-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/centos_8-x86_64-edge_commit_rt-boot.json
@@ -5204,6 +5204,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_8-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/centos_8-x86_64-edge_commit_with_container-boot.json
index 57dba8787..ec00b8dba 100644
--- a/test/data/manifests/centos_8-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/centos_8-x86_64-edge_commit_with_container-boot.json
@@ -5470,6 +5470,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_8-x86_64-edge_container-boot.json b/test/data/manifests/centos_8-x86_64-edge_container-boot.json
index 469ef5817..da1e649f2 100644
--- a/test/data/manifests/centos_8-x86_64-edge_container-boot.json
+++ b/test/data/manifests/centos_8-x86_64-edge_container-boot.json
@@ -5213,6 +5213,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_9-aarch64-edge_commit-boot.json b/test/data/manifests/centos_9-aarch64-edge_commit-boot.json
index 5bb2d1c17..b993552d9 100644
--- a/test/data/manifests/centos_9-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/centos_9-aarch64-edge_commit-boot.json
@@ -4303,6 +4303,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_9-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/centos_9-aarch64-edge_commit_with_container-boot.json
index f98c284ff..4aa9cd5b8 100644
--- a/test/data/manifests/centos_9-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/centos_9-aarch64-edge_commit_with_container-boot.json
@@ -4536,6 +4536,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_9-aarch64-edge_container-boot.json b/test/data/manifests/centos_9-aarch64-edge_container-boot.json
index 7bf5624a3..24178a7fb 100644
--- a/test/data/manifests/centos_9-aarch64-edge_container-boot.json
+++ b/test/data/manifests/centos_9-aarch64-edge_container-boot.json
@@ -4303,6 +4303,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_9-x86_64-edge_commit-boot.json b/test/data/manifests/centos_9-x86_64-edge_commit-boot.json
index b289189f5..6e6a08bcf 100644
--- a/test/data/manifests/centos_9-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/centos_9-x86_64-edge_commit-boot.json
@@ -4519,6 +4519,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_9-x86_64-edge_commit_rt-boot.json b/test/data/manifests/centos_9-x86_64-edge_commit_rt-boot.json
index dd3994c60..9bb6dbfc4 100644
--- a/test/data/manifests/centos_9-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/centos_9-x86_64-edge_commit_rt-boot.json
@@ -4686,6 +4686,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_9-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/centos_9-x86_64-edge_commit_with_container-boot.json
index de4535012..78d1d15c9 100644
--- a/test/data/manifests/centos_9-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/centos_9-x86_64-edge_commit_with_container-boot.json
@@ -4752,6 +4752,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/centos_9-x86_64-edge_container-boot.json b/test/data/manifests/centos_9-x86_64-edge_container-boot.json
index fc5217cf0..ba88eb153 100644
--- a/test/data/manifests/centos_9-x86_64-edge_container-boot.json
+++ b/test/data/manifests/centos_9-x86_64-edge_container-boot.json
@@ -4519,6 +4519,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_35-aarch64-iot_commit-boot.json b/test/data/manifests/fedora_35-aarch64-iot_commit-boot.json
index 3b7741d8a..207bb6caf 100644
--- a/test/data/manifests/fedora_35-aarch64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_35-aarch64-iot_commit-boot.json
@@ -5166,6 +5166,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_35-aarch64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_35-aarch64-iot_commit_with_container-boot.json
index cfd58df81..5fed9f866 100644
--- a/test/data/manifests/fedora_35-aarch64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_35-aarch64-iot_commit_with_container-boot.json
@@ -5391,6 +5391,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_35-aarch64-iot_container-boot.json b/test/data/manifests/fedora_35-aarch64-iot_container-boot.json
index 090110b9f..16724a703 100644
--- a/test/data/manifests/fedora_35-aarch64-iot_container-boot.json
+++ b/test/data/manifests/fedora_35-aarch64-iot_container-boot.json
@@ -5166,6 +5166,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_35-x86_64-iot_commit-boot.json b/test/data/manifests/fedora_35-x86_64-iot_commit-boot.json
index 4bcd57bf1..d925fd166 100644
--- a/test/data/manifests/fedora_35-x86_64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_35-x86_64-iot_commit-boot.json
@@ -5278,6 +5278,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_35-x86_64-iot_commit_debug-boot.json b/test/data/manifests/fedora_35-x86_64-iot_commit_debug-boot.json
index de7133d85..ba706b17e 100644
--- a/test/data/manifests/fedora_35-x86_64-iot_commit_debug-boot.json
+++ b/test/data/manifests/fedora_35-x86_64-iot_commit_debug-boot.json
@@ -5285,6 +5285,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_35-x86_64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_35-x86_64-iot_commit_with_container-boot.json
index 6e33b43aa..cfcb5368c 100644
--- a/test/data/manifests/fedora_35-x86_64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_35-x86_64-iot_commit_with_container-boot.json
@@ -5503,6 +5503,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_35-x86_64-iot_container-boot.json b/test/data/manifests/fedora_35-x86_64-iot_container-boot.json
index 665e51473..aba03645d 100644
--- a/test/data/manifests/fedora_35-x86_64-iot_container-boot.json
+++ b/test/data/manifests/fedora_35-x86_64-iot_container-boot.json
@@ -5278,6 +5278,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_36-aarch64-iot_commit-boot.json b/test/data/manifests/fedora_36-aarch64-iot_commit-boot.json
index c614a34af..877b2f963 100644
--- a/test/data/manifests/fedora_36-aarch64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_36-aarch64-iot_commit-boot.json
@@ -5398,6 +5398,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_36-aarch64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_36-aarch64-iot_commit_with_container-boot.json
index 4eba33e5c..35b08a4b5 100644
--- a/test/data/manifests/fedora_36-aarch64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_36-aarch64-iot_commit_with_container-boot.json
@@ -5447,6 +5447,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_36-aarch64-iot_container-boot.json b/test/data/manifests/fedora_36-aarch64-iot_container-boot.json
index 43968d8e3..92f9ed9c5 100644
--- a/test/data/manifests/fedora_36-aarch64-iot_container-boot.json
+++ b/test/data/manifests/fedora_36-aarch64-iot_container-boot.json
@@ -5398,6 +5398,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_36-x86_64-iot_commit-boot.json b/test/data/manifests/fedora_36-x86_64-iot_commit-boot.json
index 20801d53f..6467b3c51 100644
--- a/test/data/manifests/fedora_36-x86_64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_36-x86_64-iot_commit-boot.json
@@ -5518,6 +5518,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_36-x86_64-iot_commit_debug-boot.json b/test/data/manifests/fedora_36-x86_64-iot_commit_debug-boot.json
index 5ebd466bc..874432e07 100644
--- a/test/data/manifests/fedora_36-x86_64-iot_commit_debug-boot.json
+++ b/test/data/manifests/fedora_36-x86_64-iot_commit_debug-boot.json
@@ -5525,6 +5525,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_36-x86_64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_36-x86_64-iot_commit_with_container-boot.json
index 5de8c5aac..bdb160b28 100644
--- a/test/data/manifests/fedora_36-x86_64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_36-x86_64-iot_commit_with_container-boot.json
@@ -5567,6 +5567,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_36-x86_64-iot_container-boot.json b/test/data/manifests/fedora_36-x86_64-iot_container-boot.json
index 1a7cab75e..1b0ccb71a 100644
--- a/test/data/manifests/fedora_36-x86_64-iot_container-boot.json
+++ b/test/data/manifests/fedora_36-x86_64-iot_container-boot.json
@@ -5518,6 +5518,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_37-aarch64-iot_commit-boot.json b/test/data/manifests/fedora_37-aarch64-iot_commit-boot.json
index da9e22960..51a7fa9e8 100644
--- a/test/data/manifests/fedora_37-aarch64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_37-aarch64-iot_commit-boot.json
@@ -5468,6 +5468,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_37-aarch64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_37-aarch64-iot_commit_with_container-boot.json
index f36e667b8..9202b28f5 100644
--- a/test/data/manifests/fedora_37-aarch64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_37-aarch64-iot_commit_with_container-boot.json
@@ -5517,6 +5517,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_37-aarch64-iot_container-boot.json b/test/data/manifests/fedora_37-aarch64-iot_container-boot.json
index 18380159d..187d6f99b 100644
--- a/test/data/manifests/fedora_37-aarch64-iot_container-boot.json
+++ b/test/data/manifests/fedora_37-aarch64-iot_container-boot.json
@@ -5468,6 +5468,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_37-x86_64-iot_commit-boot.json b/test/data/manifests/fedora_37-x86_64-iot_commit-boot.json
index c6b52e897..d28496723 100644
--- a/test/data/manifests/fedora_37-x86_64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_37-x86_64-iot_commit-boot.json
@@ -5588,6 +5588,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_37-x86_64-iot_commit_debug-boot.json b/test/data/manifests/fedora_37-x86_64-iot_commit_debug-boot.json
index a4a6a6855..be3f9f909 100644
--- a/test/data/manifests/fedora_37-x86_64-iot_commit_debug-boot.json
+++ b/test/data/manifests/fedora_37-x86_64-iot_commit_debug-boot.json
@@ -5595,6 +5595,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_37-x86_64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_37-x86_64-iot_commit_with_container-boot.json
index e3272701c..2b0fbfc1e 100644
--- a/test/data/manifests/fedora_37-x86_64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_37-x86_64-iot_commit_with_container-boot.json
@@ -5637,6 +5637,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_37-x86_64-iot_container-boot.json b/test/data/manifests/fedora_37-x86_64-iot_container-boot.json
index 61c1ed68e..8cbf4cad1 100644
--- a/test/data/manifests/fedora_37-x86_64-iot_container-boot.json
+++ b/test/data/manifests/fedora_37-x86_64-iot_container-boot.json
@@ -5588,6 +5588,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_38-aarch64-iot_commit-boot.json b/test/data/manifests/fedora_38-aarch64-iot_commit-boot.json
index 099ec65ae..35ea770e3 100644
--- a/test/data/manifests/fedora_38-aarch64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_38-aarch64-iot_commit-boot.json
@@ -5300,6 +5300,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_38-aarch64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_38-aarch64-iot_commit_with_container-boot.json
index 7567d6216..287c3ab09 100644
--- a/test/data/manifests/fedora_38-aarch64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_38-aarch64-iot_commit_with_container-boot.json
@@ -5349,6 +5349,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_38-aarch64-iot_container-boot.json b/test/data/manifests/fedora_38-aarch64-iot_container-boot.json
index 413d608ce..1ebd73c0a 100644
--- a/test/data/manifests/fedora_38-aarch64-iot_container-boot.json
+++ b/test/data/manifests/fedora_38-aarch64-iot_container-boot.json
@@ -5300,6 +5300,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_38-x86_64-iot_commit-boot.json b/test/data/manifests/fedora_38-x86_64-iot_commit-boot.json
index 8b62d08e0..a9627fa3d 100644
--- a/test/data/manifests/fedora_38-x86_64-iot_commit-boot.json
+++ b/test/data/manifests/fedora_38-x86_64-iot_commit-boot.json
@@ -5404,6 +5404,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_38-x86_64-iot_commit_debug-boot.json b/test/data/manifests/fedora_38-x86_64-iot_commit_debug-boot.json
index 63d54ed8f..bf86c1aa6 100644
--- a/test/data/manifests/fedora_38-x86_64-iot_commit_debug-boot.json
+++ b/test/data/manifests/fedora_38-x86_64-iot_commit_debug-boot.json
@@ -5411,6 +5411,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_38-x86_64-iot_commit_with_container-boot.json b/test/data/manifests/fedora_38-x86_64-iot_commit_with_container-boot.json
index d857bf6fb..c15cace5f 100644
--- a/test/data/manifests/fedora_38-x86_64-iot_commit_with_container-boot.json
+++ b/test/data/manifests/fedora_38-x86_64-iot_commit_with_container-boot.json
@@ -5453,6 +5453,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/fedora_38-x86_64-iot_container-boot.json b/test/data/manifests/fedora_38-x86_64-iot_container-boot.json
index 3d1f6e3d8..f2ee369b9 100644
--- a/test/data/manifests/fedora_38-x86_64-iot_container-boot.json
+++ b/test/data/manifests/fedora_38-x86_64-iot_container-boot.json
@@ -5404,6 +5404,17 @@
               ]
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_8-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_8-aarch64-edge_commit-boot.json
index 2d42a05d0..81bd92af1 100644
--- a/test/data/manifests/rhel_8-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-edge_commit-boot.json
@@ -1965,6 +1965,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_8-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_8-aarch64-edge_commit_with_container-boot.json
index a11456ba2..ce8b56a89 100644
--- a/test/data/manifests/rhel_8-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-edge_commit_with_container-boot.json
@@ -2087,6 +2087,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_8-aarch64-edge_container-boot.json b/test/data/manifests/rhel_8-aarch64-edge_container-boot.json
index 10efc0c70..a14b9421b 100644
--- a/test/data/manifests/rhel_8-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_8-aarch64-edge_container-boot.json
@@ -1965,6 +1965,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_8-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_8-x86_64-edge_commit-boot.json
index 9465baa35..e8aad0a02 100644
--- a/test/data/manifests/rhel_8-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-edge_commit-boot.json
@@ -2044,6 +2044,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_8-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_8-x86_64-edge_commit_rt-boot.json
index a6cd898a8..ac76cf9b4 100644
--- a/test/data/manifests/rhel_8-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-edge_commit_rt-boot.json
@@ -2120,6 +2120,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_8-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_8-x86_64-edge_commit_with_container-boot.json
index 073ce753b..33c33c0ad 100644
--- a/test/data/manifests/rhel_8-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-edge_commit_with_container-boot.json
@@ -2166,6 +2166,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_8-x86_64-edge_container-boot.json b/test/data/manifests/rhel_8-x86_64-edge_container-boot.json
index ea47b85e5..1e7a05337 100644
--- a/test/data/manifests/rhel_8-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_8-x86_64-edge_container-boot.json
@@ -2034,6 +2034,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_84-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_84-aarch64-edge_commit-boot.json
index d88d0a3bd..109dd5788 100644
--- a/test/data/manifests/rhel_84-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_84-aarch64-edge_commit-boot.json
@@ -2029,6 +2029,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_84-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_84-aarch64-edge_commit_with_container-boot.json
index 20548188c..48953ebb2 100644
--- a/test/data/manifests/rhel_84-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_84-aarch64-edge_commit_with_container-boot.json
@@ -2094,6 +2094,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_84-aarch64-edge_container-boot.json b/test/data/manifests/rhel_84-aarch64-edge_container-boot.json
index 267234e42..d7072d287 100644
--- a/test/data/manifests/rhel_84-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_84-aarch64-edge_container-boot.json
@@ -2029,6 +2029,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_84-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_84-x86_64-edge_commit-boot.json
index ba36208ae..25fe8c336 100644
--- a/test/data/manifests/rhel_84-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-edge_commit-boot.json
@@ -2108,6 +2108,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_84-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_84-x86_64-edge_commit_rt-boot.json
index f51a2538d..f69606781 100644
--- a/test/data/manifests/rhel_84-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-edge_commit_rt-boot.json
@@ -2184,6 +2184,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_84-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_84-x86_64-edge_commit_with_container-boot.json
index 57c525deb..64ad5c60c 100644
--- a/test/data/manifests/rhel_84-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-edge_commit_with_container-boot.json
@@ -2173,6 +2173,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_84-x86_64-edge_container-boot.json b/test/data/manifests/rhel_84-x86_64-edge_container-boot.json
index 2bb19f437..6f89628c7 100644
--- a/test/data/manifests/rhel_84-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_84-x86_64-edge_container-boot.json
@@ -2098,6 +2098,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_85-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_85-aarch64-edge_commit-boot.json
index c752bc6b4..71d6f5bdb 100644
--- a/test/data/manifests/rhel_85-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_85-aarch64-edge_commit-boot.json
@@ -1970,6 +1970,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_85-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_85-aarch64-edge_commit_with_container-boot.json
index c8b027a92..53c721d64 100644
--- a/test/data/manifests/rhel_85-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_85-aarch64-edge_commit_with_container-boot.json
@@ -2104,6 +2104,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_85-aarch64-edge_container-boot.json b/test/data/manifests/rhel_85-aarch64-edge_container-boot.json
index 0962deaa1..1a1f916dd 100644
--- a/test/data/manifests/rhel_85-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_85-aarch64-edge_container-boot.json
@@ -1970,6 +1970,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_85-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_85-x86_64-edge_commit-boot.json
index 68ccf163f..ed3ca03b8 100644
--- a/test/data/manifests/rhel_85-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_85-x86_64-edge_commit-boot.json
@@ -2049,6 +2049,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_85-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_85-x86_64-edge_commit_rt-boot.json
index d608740b3..463f3ce38 100644
--- a/test/data/manifests/rhel_85-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_85-x86_64-edge_commit_rt-boot.json
@@ -2122,6 +2122,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_85-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_85-x86_64-edge_commit_with_container-boot.json
index d06539a86..08b118c73 100644
--- a/test/data/manifests/rhel_85-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_85-x86_64-edge_commit_with_container-boot.json
@@ -2183,6 +2183,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_85-x86_64-edge_container-boot.json b/test/data/manifests/rhel_85-x86_64-edge_container-boot.json
index 683402039..856bc3885 100644
--- a/test/data/manifests/rhel_85-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_85-x86_64-edge_container-boot.json
@@ -2039,6 +2039,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_86-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_86-aarch64-edge_commit-boot.json
index 12edbc953..54f45bbdc 100644
--- a/test/data/manifests/rhel_86-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_86-aarch64-edge_commit-boot.json
@@ -1965,6 +1965,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_86-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_86-aarch64-edge_commit_with_container-boot.json
index 093a3a630..841d9a6bc 100644
--- a/test/data/manifests/rhel_86-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_86-aarch64-edge_commit_with_container-boot.json
@@ -2087,6 +2087,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_86-aarch64-edge_container-boot.json b/test/data/manifests/rhel_86-aarch64-edge_container-boot.json
index 60c5674a7..8d89dd754 100644
--- a/test/data/manifests/rhel_86-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_86-aarch64-edge_container-boot.json
@@ -1965,6 +1965,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_86-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_86-x86_64-edge_commit-boot.json
index 01e201a16..0b07a4457 100644
--- a/test/data/manifests/rhel_86-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_86-x86_64-edge_commit-boot.json
@@ -2044,6 +2044,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_86-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_86-x86_64-edge_commit_rt-boot.json
index 06b7a9796..b0ea3f337 100644
--- a/test/data/manifests/rhel_86-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_86-x86_64-edge_commit_rt-boot.json
@@ -2120,6 +2120,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_86-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_86-x86_64-edge_commit_with_container-boot.json
index 28affab2c..123798d67 100644
--- a/test/data/manifests/rhel_86-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_86-x86_64-edge_commit_with_container-boot.json
@@ -2166,6 +2166,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_86-x86_64-edge_container-boot.json b/test/data/manifests/rhel_86-x86_64-edge_container-boot.json
index 4f37aed3a..07fa6c455 100644
--- a/test/data/manifests/rhel_86-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_86-x86_64-edge_container-boot.json
@@ -2034,6 +2034,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_87-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_87-aarch64-edge_commit-boot.json
index 82798cbe5..60b535652 100644
--- a/test/data/manifests/rhel_87-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_87-aarch64-edge_commit-boot.json
@@ -1968,6 +1968,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_87-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_87-aarch64-edge_commit_with_container-boot.json
index c83f16dc5..a44ba5bfd 100644
--- a/test/data/manifests/rhel_87-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_87-aarch64-edge_commit_with_container-boot.json
@@ -2090,6 +2090,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_87-aarch64-edge_container-boot.json b/test/data/manifests/rhel_87-aarch64-edge_container-boot.json
index aeb062942..a6769f757 100644
--- a/test/data/manifests/rhel_87-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_87-aarch64-edge_container-boot.json
@@ -1968,6 +1968,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_87-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_87-x86_64-edge_commit-boot.json
index 52493038b..bd8e8f4ff 100644
--- a/test/data/manifests/rhel_87-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_87-x86_64-edge_commit-boot.json
@@ -2047,6 +2047,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_87-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_87-x86_64-edge_commit_rt-boot.json
index 1e3020f3d..0d11a063a 100644
--- a/test/data/manifests/rhel_87-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_87-x86_64-edge_commit_rt-boot.json
@@ -2120,6 +2120,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_87-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_87-x86_64-edge_commit_with_container-boot.json
index c2d48d1b7..ed2e30879 100644
--- a/test/data/manifests/rhel_87-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_87-x86_64-edge_commit_with_container-boot.json
@@ -2169,6 +2169,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_87-x86_64-edge_container-boot.json b/test/data/manifests/rhel_87-x86_64-edge_container-boot.json
index a07687c10..2b08dc5bc 100644
--- a/test/data/manifests/rhel_87-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_87-x86_64-edge_container-boot.json
@@ -2037,6 +2037,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_88-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_88-aarch64-edge_commit-boot.json
index 8dc4e0111..2f49173a4 100644
--- a/test/data/manifests/rhel_88-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_88-aarch64-edge_commit-boot.json
@@ -1968,6 +1968,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_88-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_88-aarch64-edge_commit_with_container-boot.json
index 6be9c7ed2..a99c197d3 100644
--- a/test/data/manifests/rhel_88-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_88-aarch64-edge_commit_with_container-boot.json
@@ -2090,6 +2090,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_88-aarch64-edge_container-boot.json b/test/data/manifests/rhel_88-aarch64-edge_container-boot.json
index 063f444bc..4c64d9dbb 100644
--- a/test/data/manifests/rhel_88-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_88-aarch64-edge_container-boot.json
@@ -1968,6 +1968,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_88-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_88-x86_64-edge_commit-boot.json
index ae77f3815..25421a4e9 100644
--- a/test/data/manifests/rhel_88-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_88-x86_64-edge_commit-boot.json
@@ -2047,6 +2047,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_88-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_88-x86_64-edge_commit_rt-boot.json
index 55e63668c..cfcf0d035 100644
--- a/test/data/manifests/rhel_88-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_88-x86_64-edge_commit_rt-boot.json
@@ -2117,6 +2117,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_88-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_88-x86_64-edge_commit_with_container-boot.json
index c4def352c..758373544 100644
--- a/test/data/manifests/rhel_88-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_88-x86_64-edge_commit_with_container-boot.json
@@ -2169,6 +2169,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_88-x86_64-edge_container-boot.json b/test/data/manifests/rhel_88-x86_64-edge_container-boot.json
index d2548fe74..2972bfc5b 100644
--- a/test/data/manifests/rhel_88-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_88-x86_64-edge_container-boot.json
@@ -2037,6 +2037,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_90-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_90-aarch64-edge_commit-boot.json
index 478d7f513..113ff4e03 100644
--- a/test/data/manifests/rhel_90-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_90-aarch64-edge_commit-boot.json
@@ -1688,6 +1688,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_90-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_90-aarch64-edge_commit_with_container-boot.json
index d8530e546..434918b29 100644
--- a/test/data/manifests/rhel_90-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_90-aarch64-edge_commit_with_container-boot.json
@@ -1801,6 +1801,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_90-aarch64-edge_container-boot.json b/test/data/manifests/rhel_90-aarch64-edge_container-boot.json
index af3b81ab0..c659374e3 100644
--- a/test/data/manifests/rhel_90-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_90-aarch64-edge_container-boot.json
@@ -1688,6 +1688,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_90-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_90-x86_64-edge_commit-boot.json
index 740af0af6..283261003 100644
--- a/test/data/manifests/rhel_90-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_90-x86_64-edge_commit-boot.json
@@ -1776,6 +1776,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_90-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_90-x86_64-edge_commit_rt-boot.json
index 4b28d7753..d9e329d50 100644
--- a/test/data/manifests/rhel_90-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_90-x86_64-edge_commit_rt-boot.json
@@ -1945,6 +1945,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_90-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_90-x86_64-edge_commit_with_container-boot.json
index 37b9d677f..2019c02f7 100644
--- a/test/data/manifests/rhel_90-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_90-x86_64-edge_commit_with_container-boot.json
@@ -1889,6 +1889,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_90-x86_64-edge_container-boot.json b/test/data/manifests/rhel_90-x86_64-edge_container-boot.json
index 71d4ff243..20dd6ff7f 100644
--- a/test/data/manifests/rhel_90-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_90-x86_64-edge_container-boot.json
@@ -1766,6 +1766,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_91-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_91-aarch64-edge_commit-boot.json
index d0657ee15..c5dc5f5d5 100644
--- a/test/data/manifests/rhel_91-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_91-aarch64-edge_commit-boot.json
@@ -4495,6 +4495,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_91-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_91-aarch64-edge_commit_with_container-boot.json
index e3b57e790..3f32eb1af 100644
--- a/test/data/manifests/rhel_91-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_91-aarch64-edge_commit_with_container-boot.json
@@ -4544,6 +4544,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_91-aarch64-edge_container-boot.json b/test/data/manifests/rhel_91-aarch64-edge_container-boot.json
index ab68dfde1..ecd55efd5 100644
--- a/test/data/manifests/rhel_91-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_91-aarch64-edge_container-boot.json
@@ -4495,6 +4495,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_91-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_91-x86_64-edge_commit-boot.json
index 5985aa628..09ffec699 100644
--- a/test/data/manifests/rhel_91-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_91-x86_64-edge_commit-boot.json
@@ -4706,6 +4706,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_91-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_91-x86_64-edge_commit_rt-boot.json
index 4efd283d5..42ca82c79 100644
--- a/test/data/manifests/rhel_91-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_91-x86_64-edge_commit_rt-boot.json
@@ -5137,6 +5137,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_91-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_91-x86_64-edge_commit_with_container-boot.json
index 6dc2501a4..b5faa2ac7 100644
--- a/test/data/manifests/rhel_91-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_91-x86_64-edge_commit_with_container-boot.json
@@ -4755,6 +4755,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_91-x86_64-edge_container-boot.json b/test/data/manifests/rhel_91-x86_64-edge_container-boot.json
index f802e9eff..5cb6d927b 100644
--- a/test/data/manifests/rhel_91-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_91-x86_64-edge_container-boot.json
@@ -4695,6 +4695,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_92-aarch64-edge_commit-boot.json b/test/data/manifests/rhel_92-aarch64-edge_commit-boot.json
index e40918975..52ad1438e 100644
--- a/test/data/manifests/rhel_92-aarch64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_92-aarch64-edge_commit-boot.json
@@ -4495,6 +4495,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_92-aarch64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_92-aarch64-edge_commit_with_container-boot.json
index 87c6ce638..1c6eca163 100644
--- a/test/data/manifests/rhel_92-aarch64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_92-aarch64-edge_commit_with_container-boot.json
@@ -4544,6 +4544,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_92-aarch64-edge_container-boot.json b/test/data/manifests/rhel_92-aarch64-edge_container-boot.json
index 979a9a8da..3b5f7e64a 100644
--- a/test/data/manifests/rhel_92-aarch64-edge_container-boot.json
+++ b/test/data/manifests/rhel_92-aarch64-edge_container-boot.json
@@ -4495,6 +4495,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_92-x86_64-edge_commit-boot.json b/test/data/manifests/rhel_92-x86_64-edge_commit-boot.json
index 86dceabce..992d78919 100644
--- a/test/data/manifests/rhel_92-x86_64-edge_commit-boot.json
+++ b/test/data/manifests/rhel_92-x86_64-edge_commit-boot.json
@@ -4706,6 +4706,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_92-x86_64-edge_commit_rt-boot.json b/test/data/manifests/rhel_92-x86_64-edge_commit_rt-boot.json
index dc7c224c0..aa4aa77ad 100644
--- a/test/data/manifests/rhel_92-x86_64-edge_commit_rt-boot.json
+++ b/test/data/manifests/rhel_92-x86_64-edge_commit_rt-boot.json
@@ -5137,6 +5137,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_92-x86_64-edge_commit_with_container-boot.json b/test/data/manifests/rhel_92-x86_64-edge_commit_with_container-boot.json
index aedf9d887..831b71fb4 100644
--- a/test/data/manifests/rhel_92-x86_64-edge_commit_with_container-boot.json
+++ b/test/data/manifests/rhel_92-x86_64-edge_commit_with_container-boot.json
@@ -4755,6 +4755,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {
diff --git a/test/data/manifests/rhel_92-x86_64-edge_container-boot.json b/test/data/manifests/rhel_92-x86_64-edge_container-boot.json
index 918ea9c6e..81fe09a5e 100644
--- a/test/data/manifests/rhel_92-x86_64-edge_container-boot.json
+++ b/test/data/manifests/rhel_92-x86_64-edge_container-boot.json
@@ -4695,6 +4695,17 @@
               }
             }
           },
+          {
+            "type": "org.osbuild.systemd-journald",
+            "options": {
+              "filename": "10-persistent.conf",
+              "config": {
+                "Journal": {
+                  "Storage": "persistent"
+                }
+              }
+            }
+          },
           {
             "type": "org.osbuild.selinux",
             "options": {