tinkerbell / crocodile Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Images are signed in a registry perhaps with cosign.
Images come with no signature
https://github.com/sigstore/cosign is an option
Operating System and version (e.g. Linux, Windows, MacOS):
How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:
Link to your project or a code example to reproduce issue:
Ubuntu 21.04 (Hirsute Hippo) reaches End of Life on January 20 2022
https://fridge.ubuntu.com/2022/01/21/ubuntu-21-04-hirsute-hippo-end-of-life-reached-on-january-20-2022/
The base image in the Dockerfile
needs to be updated.
croc:latest
can be built successfully.
❯ docker build -t croc .
Sending build context to Docker daemon 384.5kB
Step 1/10 : FROM ubuntu:hirsute-20210723
---> bf70ebd2c444
Step 2/10 : RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends ansible=2.10.7-1 git=1:2.30.2-1ubuntu1 qemu-kvm qemu-utils unzip=6.0-26ubuntu1 xorriso=1.5.2-1 curl jq=1.6-2.1ubuntu1 && apt-get clean && rm -rf /var/lib/apt/lists/*
---> Running in 5d8c9e07d2fd
Ign:1 http://archive.ubuntu.com/ubuntu hirsute InRelease
Ign:2 http://security.ubuntu.com/ubuntu hirsute-security InRelease
Ign:3 http://archive.ubuntu.com/ubuntu hirsute-updates InRelease
Err:4 http://security.ubuntu.com/ubuntu hirsute-security Release
404 Not Found [IP: 185.125.190.36 80]
Ign:5 http://archive.ubuntu.com/ubuntu hirsute-backports InRelease
Err:6 http://archive.ubuntu.com/ubuntu hirsute Release
404 Not Found [IP: 91.189.91.38 80]
Err:7 http://archive.ubuntu.com/ubuntu hirsute-updates Release
404 Not Found [IP: 91.189.91.38 80]
Err:8 http://archive.ubuntu.com/ubuntu hirsute-backports Release
404 Not Found [IP: 91.189.91.38 80]
Reading package lists...
E: The repository 'http://security.ubuntu.com/ubuntu hirsute-security Release' does not have a Release file.
E: The repository 'http://archive.ubuntu.com/ubuntu hirsute Release' does not have a Release file.
E: The repository 'http://archive.ubuntu.com/ubuntu hirsute-updates Release' does not have a Release file.
E: The repository 'http://archive.ubuntu.com/ubuntu hirsute-backports Release' does not have a Release file.
The command '/bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends ansible=2.10.7-1 git=1:2.30.2-1ubuntu1 qemu-kvm qemu-utils unzip=6.0-26ubuntu1 xorriso=1.5.2-1 curl jq=1.6-2.1ubuntu1 && apt-get clean && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100
docker build -t croc .
Operating System and version (e.g. Linux, Windows, MacOS):
Linux
How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:
Link to your project or a code example to reproduce issue:
user@box$ docker build -t croc .
Sending build context to Docker daemon 364kB
Step 1/10 : FROM ubuntu:hirsute-20210723
hirsute-20210723: Pulling from library/ubuntu
4451f5c7eb7a: Pull complete
Digest: sha256:0d6c1371da7b3f53eab63fa060b375339d883eb6e67ab413ebf77f9eadd6700e
Status: Downloaded newer image for ubuntu:hirsute-20210723
---> bf70ebd2c444
Step 2/10 : RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends ansible=2.10.7-1 git=1:2.30.2-1ubuntu1 qemu-kvm unzip=6.0-26ubuntu1 xorriso=1.5.2-1 curl=7.74.0-1ubuntu2.1 jq=1.6-2.1ubuntu1 && apt-get clean && rm -rf /var/lib/apt/lists/*
---> Running in 3aa9f91217bb
Get:1 http://archive.ubuntu.com/ubuntu hirsute InRelease [269 kB]
Get:2 http://security.ubuntu.com/ubuntu hirsute-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu hirsute-updates InRelease [115 kB]
Get:4 http://archive.ubuntu.com/ubuntu hirsute-backports InRelease [101 kB]
Get:5 http://archive.ubuntu.com/ubuntu hirsute/main amd64 Packages [1791 kB]
Get:6 http://security.ubuntu.com/ubuntu hirsute-security/main amd64 Packages [319 kB]
Get:7 http://archive.ubuntu.com/ubuntu hirsute/universe amd64 Packages [16.8 MB]
Get:8 http://security.ubuntu.com/ubuntu hirsute-security/multiverse amd64 Packages [3640 B]
Get:9 http://security.ubuntu.com/ubuntu hirsute-security/universe amd64 Packages [265 kB]
Get:10 http://security.ubuntu.com/ubuntu hirsute-security/restricted amd64 Packages [255 kB]
Get:11 http://archive.ubuntu.com/ubuntu hirsute/multiverse amd64 Packages [252 kB]
Get:12 http://archive.ubuntu.com/ubuntu hirsute/restricted amd64 Packages [111 kB]
Get:13 http://archive.ubuntu.com/ubuntu hirsute-updates/main amd64 Packages [486 kB]
Get:14 http://archive.ubuntu.com/ubuntu hirsute-updates/restricted amd64 Packages [258 kB]
Get:15 http://archive.ubuntu.com/ubuntu hirsute-updates/universe amd64 Packages [401 kB]
Get:16 http://archive.ubuntu.com/ubuntu hirsute-updates/multiverse amd64 Packages [8165 B]
Get:17 http://archive.ubuntu.com/ubuntu hirsute-backports/universe amd64 Packages [3950 B]
Fetched 21.6 MB in 4s (4962 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Version '7.74.0-1ubuntu2.1' for 'curl' was not found
The command '/bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends ansible=2.10.7-1 git=1:2.30.2-1ubuntu1 qemu-kvm unzip=6.0-26ubuntu1 xorriso=1.5.2-1 curl=7.74.0-1ubuntu2.1 jq=1.6-2.1ubuntu1 && apt-get clean && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 100
user@box$
Debian 11
Docker 20.10.9
Run crocodile per the readme, attempt to build ESXi image, and an image is built.
packer errors out with
==> qemu: Error getting the bridge virbr0 interface: route ip+net: no such network interface
This is due to a lack of a virbr0
bridge interface that libvirt-daemon creates. Installing libvirt on the host resolved that issue for me.
However, then it failed with (after adding -e PACKER_LOG=1
to the docker command line):
2021/04/21 14:10:17 packer-builder-qemu plugin: Qemu stderr: failed to open /dev/net/tun: No such file or directory
2021/04/21 14:10:17 packer-builder-qemu plugin: Qemu stderr: qemu-system-x86_64: bridge helper failed
The only solution I came up with for that issue was to add --privileged
to the docker command.
Per the comments below, what is needed is to add --device=/dev/net/tun --cap-add=NET_ADMIN
So, with libvirt installed, ifconfig virbr0
returns expected output, and running:
docker run -it --rm -v $PWD/packer_cache:/packer/packer_cache -v $PWD/images:/var/tmp/images --net=host --device=/dev/kvm --device=/dev/net/tun --cap-add=NET_ADMIN croc:latest
finally worked for me for building ESXi images.
Install image generation process for Windows gets stuck on WinRM waiting on the host. This goes on until 30 minute timeout limit exceeds.
2021/04/06 10:05:16 packer-builder-qemu plugin: Connected to VNC desktop: QEMU (tink-windows-2019) ==> qemu: Typing the boot command over VNC... qemu: Not using a NetBridge -- skipping StepWaitGuestAddress ==> qemu: Using winrm communicator to connect: 127.0.0.1 2021/04/06 10:05:16 packer-builder-qemu plugin: Waiting for WinRM, up to timeout: 30m0s ==> qemu: Waiting for WinRM to become available... 2021/04/06 10:05:16 packer-builder-qemu plugin: [INFO] Attempting WinRM connection... 2021/04/06 10:05:16 packer-builder-qemu plugin: [DEBUG] connecting to remote shell using WinRM 2021/04/06 10:06:31 packer-builder-qemu plugin: [ERROR] connection error: unknown error Post "https://127.0.0.1:3903/wsman": read tcp 127.0.0.1:38990->127.0.0.1:3903: read: connection reset by peer 2021/04/06 10:06:31 packer-builder-qemu plugin: [ERROR] WinRM connection err: unknown error Post "https://127.0.0.1:3903/wsman": read tcp 127.0.0.1:38990->127.0.0.1:3903: read: connection reset by peer
This goes on until 30 minute timeout limit exceeds.
Select any Windows version.
Operating System and version (e.g. Linux, Windows, MacOS):
Ubuntu 20.04.2 LTS
How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:
Running Tinkerbell on a dedicated bare-metal server with CentOS 7
My worker PC is a most recent model and only has UEFI. It would be great if there is an option to select whether to use UEFI or BIOS in building Windows images.
Windows image built by crocodile
can be used on PC with UEFI.
No bootable device can be found using the Windows example
croc
image, bundle a UEFI firmwareOperating System and version (e.g. Linux, Windows, MacOS):
How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:
Link to your project or a code example to reproduce issue:
Add support for Fedora Linux.
Fedora 33 and 34 have ISO (for x86) and raw (for arm64) images
available here: https://getfedora.org/en/workstation/download/
Fedora is known for its quick product lifecycles (every 6 months,
no LTS) and for its latest-and-greatest kernel support. Having
an easy way to provision Fedora would help the testing process
for the newest in Linux tools.
Operating System and version (e.g. Linux, Windows, MacOS):
How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:
Link to your project or a code example to reproduce issue:
Windows 2019 image builds successfully
Build fails after 8 minutes with ansible error
==> qemu: Running local shell script: /tmp/packer-shell2452460422
qemu:
qemu: PLAY [all] *********************************************************************
qemu:
qemu: TASK [Gathering Facts] *********************************************************
qemu: Monday 11 September 2023 20:33:21 +0000 (0:00:00.008) 0:00:00.008 ******
qemu: fatal: [127.0.0.1]: FAILED! => {"msg": "winrm or requests is not installed: No module named 'winrm'"}
qemu:
qemu: PLAY RECAP *********************************************************************
qemu: 127.0.0.1 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
qemu:
qemu: Monday 11 September 2023 20:33:21 +0000 (0:00:00.025) 0:00:00.033 ******
qemu: ===============================================================================
qemu: Gathering Facts --------------------------------------------------------- 0.03s
==> qemu: Provisioning step had errors: Running the cleanup provisioner, if present...
==> qemu: Deleting output directory...
Build 'qemu' errored after 8 minutes 43 seconds: Script exited with non-zero exit status: 2. Allowed exit codes are: [0]```
## Possible Solution
<!--- Not obligatory, but suggest a fix/reason for the bug, -->
<!--- or ideas how to implement the addition or change -->
## Steps to Reproduce (for bugs)
Build Windows 2019
## Context
<!--- How has this issue affected you? What are you trying to accomplish? -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Your Environment
Ubuntu 22.04 bare metal host
Add support for Alma Linux, which is a drop-in replacement for CentOS that's under development.
PR #7 has some changes, including building a raw file from the distributed ISO,
and putting together a kickstarter script.
Test against the patches in #7 .
CentOS (classic) is EOL at end of year, so this effort is designed to support
testing and development of an alternative. There may emerge several alternatives
to CentOS and we want to make testing and validation of each of them as
easy as possible.
Alma Linux
How are you running Tinkerbell? Using Vagrant & VirtualBox, Vagrant & Libvirt, on Packet using Terraform, or give details:
Link to your project or a code example to reproduce issue:
The main Alma Linux repo is at https://github.com/AlmaLinux/cloud-images and the corresponding issue there is AlmaLinux/cloud-images#7
Are the following ESXI ISO URLs intended to be here? Does the license allow for them be used like this?
Lines 15 to 17 in 1bce370
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.