Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

edns: implement %certificate kickstart feature #6045

Merged
merged 16 commits into from
Jan 15, 2025

Conversation

rvykydal
Copy link
Contributor

@rvykydal rvykydal commented Dec 10, 2024

This implementation should provide ground for follow-up/final modifications based on how the certificate location and import process/tooling will be specified (https://issues.redhat.com/browse/INSTALLER-4030).

Depends on pykickstart support: pykickstart/pykickstart#517

For the review it can be useful to follow the order of the commits to see (the reasoning behind) some decisions better.

At this point, there is only an implementation just dumping the certificate to the specified location (--filename and --dir options) at various stages:

  • initramfs
  • early after switchroot
  • early anaconda
  • early system (pre-install)
  • system

Regarding the use cases the initramfs will be used most often. (Kickstart fetched without network or via network using already available certs).

At the end there is a patch adapting to options renaming in pykickstart. (pykickstart/pykickstart#514 (review), --name -> --filename, --path->--dir).

Currently it seems that at this point only dump of certificate will be needed but considering the options and future, potential import via a tool (ca-certificates, trust), there is possible API extension with --category option: https://github.com/rvykydal/anaconda/commits/edns-certs-stage2-w-initramfs-category/ and pykickstart rvykydal/pykickstart@54b2592

TODO:

  • kickstart tests

@github-actions github-actions bot added the f42 Fedora 42 label Dec 10, 2024
@pep8speaks
Copy link

pep8speaks commented Dec 10, 2024

Hello @rvykydal! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

There are currently no PEP 8 issues detected in this Pull Request. Cheers! 🍻

Comment last updated at 2025-01-14 16:14:37 UTC

@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from 753748f to 97f8ddf Compare December 10, 2024 13:17
@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from 97f8ddf to e564a96 Compare December 10, 2024 13:17
@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from 61de0f5 to e564a96 Compare December 10, 2024 13:28
@rvykydal rvykydal changed the title Edns certs stage2 w initramfs edns: implement %certificate kickstart feature Dec 10, 2024
@rvykydal
Copy link
Contributor Author

/build-image --boot.iso

Copy link

Images built based on commit e564a96:

  • boot.iso: success

Download the images from the bottom of the job status page.

[Unit]
Description=Import of certificates added in initramfs stage of Anaconda via kickstart
Before=NetworkManager.service
Before=anaconda.target
Copy link
Contributor

Choose a reason for hiding this comment

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

Do I understand it correctly, that there is a period of time, where certificates are not available in the installation environment - right after initramfs switchroot and before this import service is executed?
Is there an option to import the certificates to the stage2 environment even before switchroot to stage2 to ensure the provided certificates are available throughout the whole boot process?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Interesting idea, I'll think about pushing from initramfs instead of pulling from root.
For just moving files I guess it should be fine, one possible problem is that for other potential actions, like running import tool as in rvykydal@51c67c5#diff-572b90e7fb275a5450a384189ddd4651c02f9ab6059576366cdc25e5cdbec5f9R9
this might be a bit more tricky (running in /sysroot chroot?).
But to be honest I don't know if it is usual / reasonable thing to do so I'll consult dracut people.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'll create a follow-up issue for this. I think it would be better to handle it separately.

Copy link
Contributor

Choose a reason for hiding this comment

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

OK

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy link
Member

@jkonecny12 jkonecny12 left a comment

Choose a reason for hiding this comment

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

Sharing my so far results.

@@ -37,6 +37,7 @@ if not os.path.exists(ksfile):
handler = makeVersion(VERSION)
ksparser = KickstartParser(handler, missingIncludeIsFatal=False)
ksparser.registerSection(NullSection(handler, sectionOpen="%addon"))
ksparser.registerSection(NullSection(handler, sectionOpen="%certificate"))
Copy link
Member

Choose a reason for hiding this comment

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

Why is this required?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is some leftover from my initial stage of implementation. It is actually not needed. I'll remove it.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated

Comment on lines 45 to 47
@Certificates.setter
@emits_properties_changed
def Certificates(self, certificates: List[Structure]):
Copy link
Member

Choose a reason for hiding this comment

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

If it is not a requirement for something I would rather avoid setter support for two main reasons:

  • UI is not expected to be able to set these
  • security (anyone can use the API to add another certificate to the system)

Copy link
Contributor Author

@rvykydal rvykydal Dec 13, 2024

Choose a reason for hiding this comment

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

Yes, I agree.
Initially I added it mostly for testing :).
I didn't think it would be fundamentally more insecure. Maybe anyone can use ReadKickstart(string) API on the security module instead to do the same thing, but yes there seem to be no valid reason to provide setter API.
I'll make it read-only property.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

Comment on lines 112 to 121
class SectionDataListString():
def __init__(self, data_list):
self._data_list = data_list

def __str__(self):
retval = []
for data_obj in self._data_list:
if isinstance(data_obj, data):
retval.append(data_obj.__str__())
return "".join(retval)
Copy link
Member

Choose a reason for hiding this comment

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

Is there a reason to hide this class like this? Usually we are creating classes as top level.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The reason is I don't feel the class is not ready / safe to be reused. It feels very single-purpose to me. I'll think more about it.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Maybe also better name would be SectionDataListStrWrapper. And put it at top level in the file?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated

Copy link
Member

@jkonecny12 jkonecny12 left a comment

Choose a reason for hiding this comment

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

Looks great to me overall. Great job! I found just a few notes on such a big change.

Also, I would recommend squashing a few commits together which don't have useful change. As fixups or switch to constants from strings.

Comment on lines +56 to +55
if not cert.dir:
raise SecurityInstallationError(
"Certificate destination is missing for {}".format(cert.filename)
)
Copy link
Member

Choose a reason for hiding this comment

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

Shouldn't there be a default path for certificate given by the pykickstart? I guess that most of the certificates will go to one place so we don't have to force this on users?

Copy link
Contributor Author

@rvykydal rvykydal Dec 12, 2024

Choose a reason for hiding this comment

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

What would be the default path?
At this point where we are just dumping a file to the path it does not make sense to me to have any.
I think even the tooling for certificate import is moving from

  1. put the certificate to the directory ( /etc/pki/ca-trust/source/anchors/)
  2. run a tool - update-ca-trust extract

to

  1. run trust anchor <filename>

(https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/securing_networks/using-shared-system-certificates_securing-networks#managing-trusted-system-certificates_using-shared-system-certificates)
So I think we don't want to own any default path.
It might be different if/when we offer support to define where we should import the cert (like --category global or --category edns) but still ideally we would just pass the category to the import tool (trust). Something I drafted here: rvykydal@51c67c5

Copy link
Member

@jkonecny12 jkonecny12 Dec 16, 2024

Choose a reason for hiding this comment

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

Sounds good, so we can follow their example. Do we want to support only this even now?

I mean do we want the path solution instead of using only the category?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jkonecny12 Hmm. It may be worth considering removing the --dir solution completely. Depends if we feel comfortable offering the API. I think the --dir --name API is not very big burden given it just dumps the file, no more commitments (any more complex actions/imports would be done via --category). And it can provide some flexibility for clients when the things (paths, solutions) are not settled completely. If we offer only --category, (implementing only --category dns with the path and name of the cert baked in anaconda) at this point, adaptations to any changes of paths etc would require rebuild of Anaconda. Also it wouldn't be probably possible to configure the destination via anaconda configuration as it is applied already in initramfs.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@abbra do you think it would be feasible to provide only --category dns API by anaconda kickstart or should we rather offer also simple --dir and --filename? (Please see above).

Copy link

Choose a reason for hiding this comment

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

Given that we don't yet have a category support in trust anchor, having simple --dir and --filename is handy.

def process_certificates(handler):
"""Import certificates defined in %certificate sections."""
for cert in handler.certificates:

Copy link
Member

Choose a reason for hiding this comment

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

I guess an excessive blank line?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

On purpose, feeling more readable to me, but I'll remove it for consistency.

Copy link
Member

Choose a reason for hiding this comment

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

OK.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Fixed.

# to anaconda environment after switchroot.

# certificates dumped to the specified file are copied to root
cp -rv /run/install/certificates/path/* /
Copy link
Member

Choose a reason for hiding this comment

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

Is the path at the end really expected. It just feels like a leftover.

Also are we sure that this directory will exist in all the cases? I mean the service will fail if the path is missing, isn't it?

Copy link
Contributor Author

@rvykydal rvykydal Dec 12, 2024

Choose a reason for hiding this comment

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

Is the path at the end really expected. It just feels like a leftover.

It is on purpose, this subdirectory of /run/install/certificates/path should contain certificates that should be transported to switched root just by copying to the place, ie certificates only specified by --dir in kickstart. Other subdirectories can potentially contain certificates of other types, for example /run/install/certificates/category/global would contain certificates with option --category global as in rvykydal@51c67c5#diff-572b90e7fb275a5450a384189ddd4651c02f9ab6059576366cdc25e5cdbec5f9R9. It is not so clear without the --category patch.
In other words, to be future-proof I don't want to use the root of the transport directory (/run/install/certificates just for copying everything in it to root.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Also are we sure that this directory will exist in all the cases? I mean the service will fail if the path is missing, isn't it?

No it will not, good point, I'll perhaps modify copy to:

cp -rv /run/install/certificates/path/* / || true

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated

@rvykydal
Copy link
Contributor Author

I am going to clean up the structure a bit, squash, rename to --dir and --filename from the beginning, etc.

@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from e564a96 to ae12329 Compare December 17, 2024 12:46
@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from ae12329 to 3c054f2 Compare December 17, 2024 14:11
@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from 3c054f2 to 01f977f Compare December 17, 2024 14:13
@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from c3f1356 to ad50f7f Compare January 3, 2025 15:09
@rvykydal
Copy link
Contributor Author

rvykydal commented Jan 6, 2025

I'll do the final review when the tests are fixed.

@jkonecny12 Now all the 3 failing tests are due to the pykickstart update not being there (tested locally to work with updated pykickstart). I'd prefer reviewing before the pykickkstart is available so that I can procede with rhel10 ports of PRs.

Copy link
Member

@jkonecny12 jkonecny12 left a comment

Choose a reason for hiding this comment

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

Looks great to me.
Great experience to do a review on such commit split. Thanks!

@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from ad50f7f to a10649c Compare January 13, 2025 16:17
@rvykydal
Copy link
Contributor Author

/kicksart-test --testtype smoke

@rvykydal
Copy link
Contributor Author

/kickstart-test --testtype smoke

@rvykydal
Copy link
Contributor Author

/build-image --boot.iso

Copy link

Images built based on commit a10649c:

  • boot.iso: success

Download the images from the bottom of the job status page.

@rvykydal
Copy link
Contributor Author

/build-image --boot.iso --webui

Copy link

Images built based on commit a10649c:

  • boot.iso: success

Download the images from the bottom of the job status page.

@rvykydal
Copy link
Contributor Author

/kickstart-test --skip-testtypes none

@rvykydal
Copy link
Contributor Author

rvykydal commented Jan 14, 2025

Regarding the anaconda-webui test, it is most probably failing due to missing pykickstart.
I was able to run interactive webui installation successfully to the end on a boot.iso with webui generated in this PR above (it contains the updated pykicstart).

@KKoukiou
Copy link
Contributor

Regarding the anaconda-webui test, it is most probably failing due to missing pykickstart. I was able to run interactive webui installation successfully to the end on a boot.iso with webui generated in this PR above (it contains the updated pykicstart).

The Web UI test issue was addressed in rhinstaller/anaconda-webui#589
Feel free to ignore.

@rvykydal
Copy link
Contributor Author

/kickstart-test --skip-testtypes none

All tests have passed except for rpm-ostree-conatiner-leavebootorder which seems unrelated.

09:02:14,964 WARNING org.fedoraproject.Anaconda.Modules.Payloads:INFO:program:#033[31mERROR#033[0m Performing deployment: Importing: Unencapsulating base: failed to invoke method GetBlob: failed to invoke method GetBlob: fetching blob: received unexpected HTTP status: 502 Bad Gateway
09:02:14,964 WARNING org.fedoraproject.Anaconda.Modules.Payloads:DEBUG:program:Return code of ostree: 1
09:02:14,964 WARNING org.fedoraproject.Anaconda.Modules.Payloads:INFO:anaconda.core.threads:Thread Failed: AnaTaskThread-DeployOSTreeTask-1 (140104070223552)
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:ERROR:anaconda.modules.common.task.task:Thread AnaTaskThread-DeployOSTreeTask-1 has failed: Traceback (most recent call last):
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/core/threads.py", line 281, in run
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    threading.Thread.run(self)
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~^^^^^^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/threading.py", line 992, in run
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    self._target(*self._args, **self._kwargs)
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task.py", line 97, in _thread_run_callback
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    self._task_run_callback()
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~~~~^^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task.py", line 110, in _task_run_callback
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    self._set_result(self.run())
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:                     ~~~~~~~~^^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py", line 633, in run
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    safe_exec_with_redirect(
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~~~~^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        "ostree",
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        ^^^^^^^^^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        args
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        ^^^^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    )
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ^
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py", line 56, in safe_exec_with_redirect
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    raise PayloadInstallationError(
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        "The command '{}' exited with the code {}.".format(" ".join([cmd] + argv), rc)
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    )
09:02:14,975 WARNING org.fedoraproject.Anaconda.Modules.Payloads:pyanaconda.modules.common.errors.installation.PayloadInstallationError: The command 'ostree container image deploy --sysroot=/mnt/sysimage --image=quay.io/fedora/fedora-bootc:rawhide --stateroot=test-stateroot --no-signature-verification' exited with the code 1.
09:02:14,978 WARNING org.fedoraproject.Anaconda.Modules.Payloads:INFO:anaconda.core.threads:Thread Done: AnaTaskThread-DeployOSTreeTask-1 (140104070223552)
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:WARNING:dasbus.server.handler:The call org.fedoraproject.Anaconda.Task.Finish has failed with an exception:
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:Traceback (most recent call last):
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib/python3.13/site-packages/dasbus/server/handler.py", line 455, in _method_callback
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    result = self._handle_call(
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        interface_name,
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ...<2 lines>...
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        **additional_args
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    )
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib/python3.13/site-packages/dasbus/server/handler.py", line 265, in _handle_call
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    return handler(*parameters, **additional_args)
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task_interface.py", line 115, in Finish
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    self.implementation.finish()
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~~~~~~~^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task.py", line 176, in finish
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    thread_manager.raise_if_error(self._thread_name)
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/core/threads.py", line 172, in raise_if_error
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    raise exc_info[1]
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/core/threads.py", line 281, in run
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    threading.Thread.run(self)
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~^^^^^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/threading.py", line 992, in run
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    self._target(*self._args, **self._kwargs)
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task.py", line 97, in _thread_run_callback
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    self._task_run_callback()
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~~~~^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/common/task/task.py", line 110, in _task_run_callback
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    self._set_result(self.run())
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:                     ~~~~~~~~^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py", line 633, in run
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    safe_exec_with_redirect(
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ~~~~~~~~~~~~~~~~~~~~~~~^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        "ostree",
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        ^^^^^^^^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        args
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        ^^^^
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    )
09:02:15,055 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    ^
09:02:15,056 WARNING org.fedoraproject.Anaconda.Modules.Payloads:  File "/usr/lib64/python3.13/site-packages/pyanaconda/modules/payloads/payload/rpm_ostree/installation.py", line 56, in safe_exec_with_redirect
09:02:15,056 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    raise PayloadInstallationError(
09:02:15,056 WARNING org.fedoraproject.Anaconda.Modules.Payloads:        "The command '{}' exited with the code {}.".format(" ".join([cmd] + argv), rc)
09:02:15,056 WARNING org.fedoraproject.Anaconda.Modules.Payloads:    )
09:02:15,056 WARNING org.fedoraproject.Anaconda.Modules.Payloads:pyanaconda.modules.common.errors.installation.PayloadInstallationError: The command 'ostree container image deploy --sysroot=/mnt/sysimage --image=quay.io/fedora/fedora-bootc:rawhide --stateroot=test-stateroot --no-signature-verification' exited with the code 1.

virt-install.log

@rvykydal rvykydal force-pushed the edns-certs-stage2-w-initramfs branch from 6a146fd to 844c561 Compare January 14, 2025 15:26
@rvykydal
Copy link
Contributor Author

/kickstart-test --testtype smoke

@KKoukiou
Copy link
Contributor

/kickstart-test --testtype smoke

@KKoukiou KKoukiou merged commit 816346f into rhinstaller:main Jan 15, 2025
17 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
f42 Fedora 42
Development

Successfully merging this pull request may close these issues.

7 participants