Skip to content

Commit

Permalink
Add working cloud-init config
Browse files Browse the repository at this point in the history
  • Loading branch information
novafacing committed Jan 10, 2024
1 parent bb8c683 commit 576aead
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 14 deletions.
38 changes: 38 additions & 0 deletions .github/rsrc/id_rsa
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
1 change: 1 addition & 0 deletions .github/rsrc/id_rsa.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZtbTUmb26NZjRWgO4vcPheZDT0PVOTKD3wxChc2Dudnogk/YXw9Y3g4dHCt3r9+VwOPlzxh+CTCoKvK7x/+qr6eWBpDx2yQkhSdotrdi1VrHYqtC7/bMcfpK0hpuJBgoz7ovQ49nHCttf65J+z9AQAXQoLFxdUOO9eOm86Vr4xa6eb0H6zXXKP6p6xJz4xamBkq9lgfwWYgjL4/vtyeeMOBfHnW8cd07ysji4u6g2loxCOpu2kY/ekVhuoAh3WWtBIHNUnjJuuFnD/6l/OGhescMJ3iVN3p+KGPQgdCQ+a7GB3T0Rk41+yIMZfuJShOtG8a31aMJUKXO+M+AIjL/SGlQbj/7UYC1fhXes3ziBPV76pOEUvwaKaI/NRcvVptPlhCJYJs394n3SR39ON+GwCEPXE44rxOUeL/bwI4X5zOFJ6S2dybRaueDnBZilmQkbvJfgYTkwpaKSAJcHhK8JbzXT4h6+CTWDucvZzyjKdiLEbYl8TireBwWY5/1TCLE= fedora@localhost
Binary file modified .github/rsrc/seed.img
Binary file not shown.
19 changes: 14 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ jobs:
- name: Build and Test Tiny
run: |
cd plugins/tiny
cargo build -r || exit 0
cargo build -r
qemu-x86_64 -plugin ../../target/release/libtiny.so /bin/ls -lah
cd ../..
Expand All @@ -49,7 +48,7 @@ jobs:
# QEMU 8.1.0
QEMU_URL: "https://qemu.weilnetz.de/w64/2023/qemu-w64-setup-20230822.exe"
RUSTUP_URL: "https://win.rustup.rs/x86_64"
UBUNTU_CLOUDIMG_URL: "https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64.img"
FEDORA_CLOUDIMG_URL: "https://download.fedoraproject.org/pub/fedora/linux/releases/39/Cloud/x86_64/images/Fedora-Cloud-Base-39-1.5.x86_64.qcow2"

steps:
- uses: msys2/setup-msys2@v2
Expand All @@ -75,12 +74,22 @@ jobs:
- name: Download Ubuntu Cloud Image
run: |
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri ${{ env.UBUNTU_CLOUDIMG_URL }} -OutFile ubuntu.img
Invoke-WebRequest -Uri ${{ env.FEDORA_CLOUDIMG_URL }} -OutFile Fedora-Cloud-Base-39-1.5.x86_64.qcow2
- name: Build and Test Tiny
shell: msys2 {0}
run: |
cd plugins/tiny
cargo build -r || exit 0
cargo build -r
cd ../..
qemu-system-x86_64.exe -machine type=q35 -m 2G -nographic -drive if=virtio,format=qcow2,file=ubuntu.img -drive if=virtio,format=raw,file=.github/rsrc/seed.img -plugin target/release/libtiny.so
$job = Start-Job -ScriptBlock { qemu-system-x86_64 -machine type=q35 -m 2G -nographic -serial stdio -device virtio-net-pci,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2222-:22 -drive if=virtio,format=qcow2,file=../Fedora-Cloud-Base-39-1.5.x86_64.qcow2 -drive if=virtio,format=raw,file=.github/rsrc/seed.img }
Start-Sleep -Seconds 45.0
$jobEvent = Register-ObjectEvent $job StateChanged -Action {
$jobEvent | Unregister-Event
Write-Host "Unregistered and succeeded!"
Set-Content -Path success ""
}
ssh -p 2222 -i .github/rsrc/id_rsa fedora@localhost sudo shutdown now
Start-Sleep -Seconds 15.0
$status = Test-Path -Path success
exit $status
4 changes: 2 additions & 2 deletions qemu-plugin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,11 @@ extern "C" {
}

#[cfg(windows)]
unsafe fn g_free(_mem: *mut c_void) {
unsafe fn g_free(mem: *mut c_void) {
//TODO: We would really like to call g_free in the qemu binary here
//but we can't, because windows doesn't export symbols unless you explicitly export them
//and g_free isn't so exported.

// NOTE: glib 2.46 g_malloc always uses system malloc implementation:
// https://docs.gtk.org/glib/func.mem_is_system_malloc.html
// So it is safe to call libc free to free a `g_malloc`-ed object
Expand Down
22 changes: 15 additions & 7 deletions scripts/mk-cloudinit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,25 @@ set -e
# sudo -E dnf install -y cloud-utils

mkdir -p .github/rsrc/
rm .github/rsrc/id_* || true
if [ ! -f .github/rsrc/id_rsa ]; then
ssh-keygen -C fedora@localhost -t rsa -q -f .github/rsrc/id_rsa -N ""
fi

KEY="$(cat .github/rsrc/id_rsa.pub)"
# password is "password"
# mkpasswd --method=SHA-512 --rounds=4096
PASSWD="$6$rounds=4096$EhaOFVl.Hr626Zg2$mIqOEWTXg0U4cfIDDsYYLtqNMoCLRMVQfX4iZnlQTt.dnBoXetHdMzyGdY2MVOWGV18UowbFNSJowTHmBDb4z1"
PASSWORD='$6$rounds=4096$At.ZMrhUfvsFwTiG$VJ8aQCC3nr8SpUL99OHcWsR6BvlVur5qvKQHni8n5v1HxB0E3.2eLX0tbxq8nHv.JJb2cU5mXr8bAgogCd5Ke1'
cat <<EOF > .github/rsrc/user-data.yml
#cloud-config
users:
- name: user
passwd: ${PASSWD}
lock_passwd: false
groups: [sudo]
shell: /bin/bash
bootcmd:
- useradd -m -p ${PASSWORD} -s /bin/bash fedora
- mkdir -p /home/fedora/.ssh
- echo "${KEY}" >> /home/fedora/.ssh/authorized_keys
- chown -R fedora:fedora /home/fedora/.ssh
- chmod 700 /home/fedora/.ssh
- chmod 600 /home/fedora/.ssh/authorized_keys
- echo "fedora ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
EOF

cloud-localds .github/rsrc/seed.img .github/rsrc/user-data.yml

0 comments on commit 576aead

Please sign in to comment.