{"id":19096581,"url":"https://github.com/sapcc/fedipa","last_synced_at":"2025-09-15T14:35:19.733Z","repository":{"id":49871835,"uuid":"279816371","full_name":"sapcc/fedIPA","owner":"sapcc","description":"minimal build of ironic-python-agent created with systemd/mkosi and dracut (fedora based)","archived":false,"fork":false,"pushed_at":"2024-06-05T07:52:21.000Z","size":361,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-06-05T17:00:45.378Z","etag":null,"topics":["fedora","ironic","ironic-python-agent","openstack","python3"],"latest_commit_sha":null,"homepage":"","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sapcc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-15T08:51:03.000Z","updated_at":"2024-06-05T07:51:14.000Z","dependencies_parsed_at":"2023-12-03T09:39:21.292Z","dependency_job_id":"a98cb220-58e4-4b99-8621-b3652cd59691","html_url":"https://github.com/sapcc/fedIPA","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2FfedIPA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2FfedIPA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2FfedIPA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2FfedIPA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sapcc","download_url":"https://codeload.github.com/sapcc/fedIPA/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223783446,"owners_count":17201900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fedora","ironic","ironic-python-agent","openstack","python3"],"created_at":"2024-11-09T03:37:09.370Z","updated_at":"2024-11-09T03:37:09.937Z","avatar_url":"https://github.com/sapcc.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fedIPA\n\n## Description\n\nBased upon Fedora this tooling creates with mkosi\n- a standard kernel of the OS\n- a ramdisk which is enabled to download and boot a rootdisk via HTTPS\n- and a squashfs file, which contains the ironic-python-agent\n\nSee [mkosi](https://github.com/systemd/mkosi/blob/main/mkosi.md) for\nmore details on the build-process.\n\n`mkosi.build` takes the (python) sources (ironic-python-agent and extensions,\nwhich are referenced as submodules as input and generates wheels\ninto the destination image.\n\nThe submodules under sources as well `mkosi` and the `requirements`\nshould capture the exact versions in each commit used.\n\n`mkosi` then generates the output under `mkosi.output/*/` \n(`*` depends on the distribution and version chosen)\nMore specifically:\n- `image/`: the directory containing the final image file-system, including the ironic-python-agent + extensions\n- `image.vmlinuz`: the (unmodified) kernel of the operating system\n- `image.initrd`: the ramdisk as generated by dracut\n\nOn top of that, we use `mksquashfs` to generate a `image.squashfs` file\nfrom the `image/` directory.\n\n## Requirements\n\n* git\n* python3 \u003e= 3.5\n* systemd-nspawn\n* dnf\n* make\n* squashfs-tools\n* ovmf\n* lighttpd (for testing)\n* qemu-kvm (for testing)\n* xorriso (for iso creation)\n\n## HowTo\n\nYou can simply run the following commands to create the desired output:\n```shell\nif [ -f /etc/debian_version ]; then\n    sudo apt install dnf git python3 make systemd-container qemu-kvm lighttpd lighttpd-modules-lua squashfs-tools ovmf\nelse\n    sudo dnf install git python3 make systemd-container qemu-kvm lighttpd squashfs-tools xorriso edk2-ovmf\nfi\nmake\n```\n\n### How to modify the contents of the image\n\n#### Packages\nIf packages need to be available during the build they need to be added to the list of `BuildPackages` in [mkosi.files/mkosi.fedora](https://github.com/sapcc/fedIPA/blob/master/mkosi.files/mkosi.fedora),\nif they should be in the final image, they need to be under `Packages`.\n\n#### Files\n\nAny file placed under `mkosi.extra` will be placed in the image.\nFiles/Directories can be removed by adding a glob-expression to `squashfs.exclude`\n\n### How to configure the ramdisk\n\nThe whole configuration for the ramdisk is within `mkosi.extra/etc/dracut.conf.d/99-ipa.conf`.\nAs all files under `mosi.extra` also are added to the build image before the ramdisk\nis being created, it serves as the configuration for the build-process.\n\nIn particular, you can add/remove kernel-modules / filesystems etc...\n\n### How to develop/debug\n\nIf you run `make test`, it will generate all the files mentioned before,\nand start a virtual machine with qemu which will boot the generated\nkernel and ramdisk, which in turn will load via http the `image.squashfs`.\nA http server will serve the generated files, and a mock api server\nwill be answering the `lookup` and `heartbeat` api calls.\n\nThe virtual machine exposes the ironic-python-agent api over port 9999 \non the local host.\n\nThe api discovery is returning an api-version, which is not secured\nby either certificate or token, so you should be able to issue http request /\ncommand with the tool of your choice.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsapcc%2Ffedipa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsapcc%2Ffedipa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsapcc%2Ffedipa/lists"}