Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions pkg/distro/generic/images.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"math/rand"
"strings"

"github.com/BurntSushi/toml"
"github.com/osbuild/blueprint/pkg/blueprint"
"github.com/osbuild/images/pkg/container"
"github.com/osbuild/images/pkg/customizations/anaconda"
Expand Down Expand Up @@ -188,6 +189,16 @@ func osCustomizations(t *imageType, osPackageSet rpmmd.PackageSet, options distr
}

var err error
redactedBP := bp.DeepCopy()
if redactedBP.Customizations != nil {
for i := range redactedBP.Customizations.User {
redactedBP.Customizations.User[i].Password = nil
}
}
osc.BlueprintTOML, err = toml.Marshal(&redactedBP)
if err != nil {
return osc, fmt.Errorf("failed to marshal blueprint to TOML: %w", err)
}
osc.Directories, err = blueprint.DirectoryCustomizationsToFsNodeDirectories(c.GetDirectories())
if err != nil {
// In theory this should never happen, because the blueprint directory customizations
Expand Down
52 changes: 52 additions & 0 deletions pkg/distro/generic/images_test.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package generic

import (
"strings"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/osbuild/blueprint/pkg/blueprint"
"github.com/osbuild/images/internal/common"
"github.com/osbuild/images/pkg/container"
"github.com/osbuild/images/pkg/distro"
"github.com/osbuild/images/pkg/distro/defs"
"github.com/osbuild/images/pkg/rpmmd"
)

func isoTestImageType() *imageType {
Expand Down Expand Up @@ -106,3 +109,52 @@ func TestInstallerCustomizationsOverridePreview(t *testing.T) {
}

}

func testImageType() *imageType {
return &imageType{
arch: &architecture{
distro: &distribution{},
},
}
}

func TestOSCustomizationsRedactsPasswords(t *testing.T) {
password := "super-secret-password"
bp := &blueprint.Blueprint{
Customizations: &blueprint.Customizations{
User: []blueprint.UserCustomization{
{
Name: "testuser",
Password: &password,
},
},
},
}

it := testImageType()
osc, err := osCustomizations(it, rpmmd.PackageSet{}, distro.ImageOptions{}, nil, bp)
require.NoError(t, err)
require.NotEmpty(t, osc.BlueprintTOML)

tomlStr := string(osc.BlueprintTOML)
assert.True(t, strings.Contains(tomlStr, "testuser"), "blueprint TOML should contain the username")
assert.False(t, strings.Contains(tomlStr, password), "blueprint TOML should not contain the password")

// DeepCopy must not mutate the original blueprint
require.NotNil(t, bp.Customizations.User[0].Password)
assert.Equal(t, password, *bp.Customizations.User[0].Password)
}

func TestOSCustomizationsBlueprintTOMLPopulated(t *testing.T) {
bp := &blueprint.Blueprint{
Name: "my-test-blueprint",
}

it := testImageType()
osc, err := osCustomizations(it, rpmmd.PackageSet{}, distro.ImageOptions{}, []container.SourceSpec{}, bp)
require.NoError(t, err)
require.NotEmpty(t, osc.BlueprintTOML)

tomlStr := string(osc.BlueprintTOML)
assert.True(t, strings.Contains(tomlStr, "my-test-blueprint"))
}
13 changes: 13 additions & 0 deletions pkg/manifest/os.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"net/url"
"os"
"path/filepath"
"slices"
"strings"
Expand Down Expand Up @@ -163,6 +164,10 @@ type OSCustomizations struct {
RHSMConfig *subscription.RHSMConfig
RHSMFacts *facts.ImageOptions

// BlueprintTOML is the TOML-encoded blueprint used to build this image,
// written to /root/blueprint.toml as build provenance.
BlueprintTOML []byte

// Custom directories to create in the image. The stages for the
// directories defined here are always added at the end of the pipeline.
Directories []*fsnode.Directory
Expand Down Expand Up @@ -854,6 +859,14 @@ func (p *OS) serialize() (osbuild.Pipeline, error) {
}))
}

if len(p.OSCustomizations.BlueprintTOML) > 0 {
bpFile, err := fsnode.NewFile("/root/blueprint.toml", common.ToPtr(os.FileMode(0644)), "root", "root", p.OSCustomizations.BlueprintTOML)
if err != nil {
return osbuild.Pipeline{}, fmt.Errorf("failed to create blueprint file node: %w", err)
}
p.addStagesForAllFilesAndInlineData(&pipeline, []*fsnode.File{bpFile})
}

if p.OSTreeRef != "" {
pipeline.AddStage(osbuild.NewSystemdJournaldStage(
&osbuild.SystemdJournaldStageOptions{
Expand Down
24 changes: 24 additions & 0 deletions pkg/manifest/os_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,30 @@ func TestAddInlineOS(t *testing.T) {
require.ElementsMatch(expectedContents, fileContents)
}

func TestBlueprintTOMLProducesCopyStage(t *testing.T) {
os := manifest.NewTestOS()
os.OSCustomizations.BlueprintTOML = []byte("name = \"my-blueprint\"\n")

pipeline, err := os.Serialize()
require.NoError(t, err)

destinationPaths := collectCopyDestinationPaths(pipeline.Stages)
assert.Contains(t, destinationPaths, "tree:///root/blueprint.toml")

fileContents := manifest.GetInline(os)
assert.Contains(t, fileContents, "name = \"my-blueprint\"\n")
}

func TestNoBlueprintTOMLNoCopyStage(t *testing.T) {
os := manifest.NewTestOS()

pipeline, err := os.Serialize()
require.NoError(t, err)

destinationPaths := collectCopyDestinationPaths(pipeline.Stages)
assert.NotContains(t, destinationPaths, "tree:///root/blueprint.toml")
}

func createTestFilesForPipeline() []*fsnode.File {
fileOne := common.Must(fsnode.NewFile("/etc/test/one", nil, nil, nil, []byte("test 1")))
fileTwo := common.Must(fsnode.NewFile("/etc/test/two", nil, nil, nil, []byte("test 2")))
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d4f4032262b29e8d7b0823ab3af0f434ee1ac090
d9e1fdaa8f40dfefea13506ca7b654ed1bf826d5
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-aarch64-ami-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d315df907905bf9d533a6ade94678784912edf37
e09ef26698c9f015c5bd6e189960fa2aa9f513be
Original file line number Diff line number Diff line change
@@ -1 +1 @@
cc64ddde38cefe2e4010651fa8b42821dee99fbc
87e6370637610f72e466e9dadc298d21f70523dd
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3ef862ece4c8fa5a39a4ea8950fab7e2c213a8ba
a8f2f98ab44da27807750c32753d3b1053f749c8
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f96419763c7e5a2551d17487c3b43e153949dfa4
5989bc323c51a446a267686125b9c80e3482d8c7
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f46342396c4e8c9edf72ff97e960e4c63d8c5d4c
f04914f869cb5ecbd383f88ad3baa225bf982127
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4e857ade56a2e2da48fbdd10fcc837b7db5fab91
289443e88da17d0e949d7a3319e1bfdd7a4f4480
Original file line number Diff line number Diff line change
@@ -1 +1 @@
31a7285e788b3b96e749534aed9608d0d3ffb2f0
eb0a590e7828ae6ccf45f8548436018c96a08e63
Original file line number Diff line number Diff line change
@@ -1 +1 @@
113f9c3d7b7fe8718680357766a489682460d683
0bfecd879792739887be34cc33a9cdf273abb435
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-aarch64-ec2-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2cd2aa4bbad9bee5010d33672aab9e1c119b6027
d4c6bf31abfcc3936eceb0d293e49640c5012553
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3749089911815ec1da7ccc1b53cddf1fa3a411a4
bcd00fb3f227b8473dd73ebcbbec8c4b835fae79
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c0d5daecdceac2da9717e8d25a7dc77b56585f2f
a98aff4a963a63c88fd90a937660f708979f5d91
Original file line number Diff line number Diff line change
@@ -1 +1 @@
185e1fdd04deffd2a4f9f30419d8dc8a66ee80da
bd0b03ad6f0a555fb968a6252229dab3bb695ce0
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8553db9a715e5105a7d1693d5b1d0883b2b5357b
ed03ec123f157f2660f7471d10c7a8faba3d1fca
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3e81f93586420d9b94411baf69cd95952609b4d1
94df3b58b53c68545104f0cba45f7733142f29ed
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-aarch64-tar-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0de092fa8b355c4ef0319a09433723c39d33900c
1090c21bee33dd12ff8803b0b27f94981b05928d
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a2a3db19e5d28dd05551966cca45ea6e15817b83
7061dc87a15cba2aeb6e871c408118cfb441f196
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-aarch64-vhd-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5cfd782a162b5f13c0f1931e210e5c587c30b2b0
48e91c9a85c654c9abc443a97317ce32e383d327
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-aarch64-wsl-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2a300188441018686f4a542bab23e86710b1ddf3
1b4b607f1469bc8eb155bcdfb1cf51b4bf38d73c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1e4b38d4fc47f4c99cea0bbdac44324b171bcd02
4393966b2388183062c36974831774a6fc632763
Original file line number Diff line number Diff line change
@@ -1 +1 @@
276f8035f1df0a307afa0e7cd56be5c290a4d634
42d415d949dbdb5857f649775d46b12cd29ce856
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c80e8ed93f4372ce8289a6a3b167a031666efb84
5bfe7907eb044670f3be82f238463000d96ff2ad
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7c098eed6eeee0a00908a06adc40277ec459e5f9
0811745b01f0c9550de504972bfdc241de9358f5
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-ppc64le-tar-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8cf28485bf1863c8080c4d8e52682d83e19e3847
8dad1caf55dea6eccf2a5a6b135294efd0aaa069
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a67efdffd0b2232e8ee24400489245f69f008303
cd18de5356f7c11b5bdb977813ddea0bfc0a8080
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2056abb324bc79be4ca7c1d66be772f61f940095
72484519c7306228fa8572e80d15d0b5d56b27ef
Original file line number Diff line number Diff line change
@@ -1 +1 @@
52922891aee258b8d31da74a31b3b2cec83740d7
68b5b3d718d8c48aced633002898c805f2d5e872
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-s390x-qcow2-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
256fd32f336774f83c2147099a3fa71bfeb7c329
c7e51678448d6ac2be3dbffdc4bea0fed98dfc12
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-s390x-tar-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
bdcbd0e40bfdc1d36cf988f78b409f9011da802d
06b4f5ae51326e20783e144472c056430da8511b
Original file line number Diff line number Diff line change
@@ -1 +1 @@
494584f1966307732cceb1e08a906498d8a3c961
aeeb101eda6b627a44d384c86245961e2f19cc3b
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-ami-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9b79184d76ff0f21c3cae0ffa882c544d2dd2777
c264e4e9c2150f8971cab983da3762bc9c33afc5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b2d4262ecab57896caf69b7866867a41f1d269b0
090ff4fb75a9e8144a01d06ea5086cd5fc9a0b82
Original file line number Diff line number Diff line change
@@ -1 +1 @@
73bb2c806c2dde152f4bf7e9128855881fbd111b
9cb26bb52d0ffd38c838086cf7963380505b89ea
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fe4e1317c040147051028939e7a068c25694042c
723506db98b0363890e557892f728ba6dbe33b1a
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1963eff9b9088fef6b036125d248ffe994a54885
1c62536780009a39ed767872f201ebe052123b69
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8e16e256242e5ec23a94af67cabb8b713cae60f8
4b2a20742049a330f9135bf598d0de5b51cdfe8b
Original file line number Diff line number Diff line change
@@ -1 +1 @@
110de329337360bbbfc067282cf094e2c995d343
cc9765a044d1932ebf124a7984fa6378f1579c66
Original file line number Diff line number Diff line change
@@ -1 +1 @@
676ef3f620f44d3d5ba1fbefc66899c91536602f
970a720f6e673d93198250cb86db8fccffb6b773
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-ec2-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
17111eb2e78fb58b44c6a7a603eaaa3e1d2ff43f
e5a1a700982d16d5efe5a118c4df15dc9031e6d4
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-gce-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
960e4bb89d8bd3a669e444734c241d5ff994059b
010625f1a1fb37e1b39076981a43c4ac82485de5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1b12344bc0b06c3e24027a0a38d11ab5bd015264
425bcdb743e3241342a39cc6e06fb32fdc820fae
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6144fdfa7f7e6d7a69cbb6dc50fea20a53de415d
e9260efd4b9c23514b330a289f6378bdf625d148
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-oci-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9d6e1ba71b80185b12e442a2c3cdca3f73e57025
d278202a9c07625b795b7afc044cbdda673bd997
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-ova-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fb0b854e116126423d58a23a85f42262f92edff5
10d24e8d516b8816aa436f249ea4499a28a4e7f0
Original file line number Diff line number Diff line change
@@ -1 +1 @@
85209900fdd8479fb1f0fb7513c1c165e5b6ae15
b035a1e6082bcfe37a8b047df05ea606a7fdaba1
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3870b950ab324575da7d8609c603fe8132571695
8c4fdf4a102a30b73b84bb98c785b9e81d9c2955
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f7d5a36045e1fe96b63b9c9b8cebedc166d0d30c
d278202a9c07625b795b7afc044cbdda673bd997
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-tar-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ba07dcf2bc2ce9eae2957e23d14864c66e121862
eea3f59b604a8d6ed6bb5827794814c6b6787d97
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e66ad6563b47dea4055e5a79ea5120112a2fd851
b898448d6edf627bd8aa2fa0057cb9f1c7eb2ce3
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ddfe7374abcce510791965d9cf9c580ad17b55a6
4fad88b8bf3c5606fb007b3e4e8190e2374c377f
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-vhd-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
55ef5b63274c68c2af06024e2a3fed500d9f1f79
5457088f4d7032d138fe77ec99970038cb0aa027
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-vmdk-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
85e978ee5e14fddc83064b256441a50d7fa1b769
99d5a5c46a6f114054756c886d610b0bf6e49b5c
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_10-x86_64-wsl-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8162090441286c919f061edfcb9bcea1bd07fc0d
4586ad45534d628b3d458665702633f26d78226e
Original file line number Diff line number Diff line change
@@ -1 +1 @@
07f0348ab10a18e19a7a04d82b7efb9a63338c4d
71f1d28722ba839b59005dbb12112ddc36f83782
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_9-aarch64-ami-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
faae47a684a4722eb9ac6d49125c66f888f9de22
19dd4f9cdb298ca61f75cfdcec59dcb2abeda9da
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b6b9c1f99a0127079a5b31fe5ee3f5d1a9b98b44
7450bba7351ecc7b8cc6accdaee427a79403d72a
Original file line number Diff line number Diff line change
@@ -1 +1 @@
a31e595a0f099bd0d86ff24ba2f7a79a56d8de54
5b5476cd060be9064851de3ca5587329f19e5a1f
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3eb405ffca9ff50ade109d15ffcd975df022e408
43dcfd5d15bf2bcf8d13311e804e9ed1047b2d12
Original file line number Diff line number Diff line change
@@ -1 +1 @@
495a4c6b5bc60c04abb3d5968cf34914b29065ff
c6f2e6300a1964e48eab958a3b2f893ee11a6a64
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2bd4d23daec6f8872a3fbf34b90eb0d36781032c
1290b1c00596f6bc671ba9926a11ecc152449226
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6dcbff486ba43b48425154d0f1046a008c07c076
1ec31096dbc59e03cac1349886a2a0a2698bf4af
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c65268dcae686d5275c27e8bfebfe72a2c661acf
8547ade13a40e0f68abb9a7b8ab519c12f806a41
Original file line number Diff line number Diff line change
@@ -1 +1 @@
abae9c724bf47d4562e7275bb49719939555aa57
0d07a7d7a420578eb4f2f1ab4478122550435423
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0a7af7d8371d3727bb42ab4e6f661cbce763271d
12e65dd6cc406b00d35f8059be20f9716409481b
2 changes: 1 addition & 1 deletion test/data/manifest-checksums/centos_9-aarch64-ec2-empty
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22f6b23f37ca046a4560a16de8ad142a1646024c
7ffdc6a40554342d4978e688cf6a32bb8fe626c6
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8c4c91de9c244b963e48b1feb501d4ecfb4f46fe
d3e26f2fa945b1d35069c328a52a9b8feeaa3772
Original file line number Diff line number Diff line change
@@ -1 +1 @@
650597fe6918578ab43daaa76eb4457e3bcda062
33398c93a20e362ffaf80f43f6724e54b22b3260
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f0893ebe35d743cfb3c728ad8f98c6fb08fe5682
6382e66742b10bee4c14a69064c44563b738991a
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7c0ce44cc7218045d7bcccff1396487144e706d2
649711d951421c961f2ebd5a38a35250346e5071
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3142461c68d11eaffee51a322329c510fce4a0df
7a0488fdc8fcf804f7c8fe896aa9cd01ee77bfc5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
987012dec08c13efbea8b827e524c6727b38c39f
2f2f58dc15eba0731f3afc7a25af36a86058278b
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f6fdb51ab958674e3e24fb079ba75114fa702a59
ea74d4f34ce5a7b3de366adeac07af2f7069cd88
Original file line number Diff line number Diff line change
@@ -1 +1 @@
048a53a95fe7f28c0fd382a09d82ff1794dc2098
090d431f038432888215fabe4b8c7ed4c9075af4
Original file line number Diff line number Diff line change
@@ -1 +1 @@
cc2867036267bbbb216206797d6ce580a9252aa0
b7f433f1b9433c6a7119bfabd3b9d432789d924f
Original file line number Diff line number Diff line change
@@ -1 +1 @@
56204828dd90e440a535e40cbc5c66f6d2751568
2d72576fcc5022d1a1b8a7ea3e103078bf766b03
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2165c3b663d695a7ef9aabb35f812eccdac23988
52424b095af9d5d247096b515c2089d48dd9a292
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ed90641d43948d6d5c64f9c27f0325d20bca2cc4
2e59c92687801e68b2e55e130b1e80d55a4d2c9a
Original file line number Diff line number Diff line change
@@ -1 +1 @@
fd0118b7b87457502eaea40370143b7cd24434f0
ff5b10e0a336a0e1be607bf50a4a3fbfeea73551
Original file line number Diff line number Diff line change
@@ -1 +1 @@
f6e49edca1c47e1378cfbb91f16fd794ba4757c1
50f58360064b8e8fe02e76a2fa586453f0d9e8a5
Loading
Loading