Skip to content

Instantly share code, notes, and snippets.

@spaced
Last active August 22, 2020 14:02
Show Gist options
  • Save spaced/81b4a22f323e93839a76982aa585c76a to your computer and use it in GitHub Desktop.
Save spaced/81b4a22f323e93839a76982aa585c76a to your computer and use it in GitHub Desktop.
fedora core os on kvm

prepare

~/bin/fcos/coreos.ignition:

{
  "ignition": {
     "version": "3.0.0"
  },

  "passwd": {
    "users": [
      {
        "name": "adi",
        "passwordHash": "blaaaaa",
        "sshAuthorizedKeys": [
          "ssh-rsa bla"
        ],
        "groups": [ "wheel" ]
      }
    ]
  }
}

create script /bin/fcos/setup_fcos.sh:

#!/bin/bash
set -eu
function install {
  machine_name=$1	
  fcos_version=31.20200223.3.0
  wget -nc https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/${fcos_version}/x86_64/fedora-coreos-${fcos_version}-live-kernel-x86_64
  wget -nc https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/${fcos_version}/x86_64/fedora-coreos-${fcos_version}-live-initramfs.x86_64.img
  wget -nc https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/${fcos_version}/x86_64/fedora-coreos-${fcos_version}-metal.x86_64.raw.xz
  wget -nc https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/${fcos_version}/x86_64/fedora-coreos-${fcos_version}-metal.x86_64.raw.xz.sig
  kernel=http://localhost:8000/fedora-coreos-${fcos_version}-live-kernel-x86_64
  initrd=http://localhost:8000/fedora-coreos-${fcos_version}-live-initramfs.x86_64.img
  public_srv=http://$(hostname -I|awk '{print $1}'):8000
  kernel_args="ip=dhcp rd.neednet=1 console=tty0 coreos.liveiso=/ console=ttyS0 coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=${public_srv}/coreos.ign coreos.inst.image_url=${public_srv}/fedora-coreos-${fcos_version}-metal.x86_64.raw.xz"
  sudo virt-install --name ${machine_name} --ram 4048 --graphics=none --vcpus 2 --disk size=20 \
                    --network bridge=virbr0 \
                    --install kernel=${kernel},initrd=${initrd},kernel_args_overwrite=yes,kernel_args="${kernel_args}"
}

function destroy {
  machine_name=$1	
  sudo virsh destroy --domain ${machine_name} && \
  sudo virsh undefine --domain ${machine_name} && \
  sudo rm -f /data/fastdisk/kvm/${machine_name}.qcow2
}


if [ -z "$*" ]; then echo "No args, please add machine name"; fi
case "$1" in
  install) install $2 ;;
  destroy) destroy $2 ;;
    *) echo 'you gave something else' ;;
esac

check firewall:

firewall-cmd --state
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones 
firewall-cmd --zone=libvirt --add-port=8000/tcp

start a simple http server via

python3 -m http.server 8000

create guest

fcos_setup.sh install fcos

connect to machine

virtssh console fcos

delete machine

fcos_setup.sh destroy fcos
@spaced
Copy link
Author

spaced commented Apr 2, 2020

was not able to connect
needed --network default (with nat)
and virto interface

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment