5 files changed, 52 insertions(+), 131 deletions(-)
M Makefile
M README.md
A ronin.sh
D ronin2.sh
D wsl_vagrantfile/Vagrantfile
M Makefile => Makefile +3 -3
@@ 1,10 1,10 @@
all: ronin
-ronin: ronin2.sh
- ./ronin2.sh
+ronin: ronin.sh
+ ./ronin.sh
lint:
- shellcheck ronin2.sh
+ shellcheck ronin.sh
clean:
$(RM) -r ~/.ronin/
M README.md => README.md +2 -3
@@ 1,6 1,5 @@
# ronin
-`vagrant` wrapper with defaults to make it easy to run a debian box.
+qemu-based command line virtualization manager. Like vagrant but requires fewer commands and buggier.
-Not meant to replace vagrant, but rather to make getting up
-and running take less mental effort.
+Alpha-quality software.
A ronin.sh => ronin.sh +47 -0
@@ 0,0 1,47 @@
+#!/bin/sh
+# Create a virtual machine and log in
+
+set -ex
+
+mkdir -p ~/.cache/ronin && \
+ mkdir -p ~/.ronin
+
+DEBIAN_VERSION=12
+
+DEBIAN_CLOUD_IMAGE="debian-$DEBIAN_VERSION-nocloud-amd64.qcow2"
+DEBIAN_IMAGE_URL="https://cloud.debian.org/images/cloud/bookworm/latest/$DEBIAN_CLOUD_IMAGE"
+
+CACHED_DEBIAN_IMAGE="$HOME/.cache/ronin/$DEBIAN_CLOUD_IMAGE"
+
+test ! -f "$CACHED_DEBIAN_IMAGE" && \
+ wget "$DEBIAN_IMAGE_URL" --output-document "$CACHED_DEBIAN_IMAGE"
+
+RONIN_DEBIAN_IMAGE="$HOME/.ronin/$DEBIAN_CLOUD_IMAGE"
+test ! -f "$RONIN_DEBIAN_IMAGE" &&
+ cp "$CACHED_DEBIAN_IMAGE" "$RONIN_DEBIAN_IMAGE"
+
+RONIN_DISK="$HOME/.ronin/ronin-disk.qcow2"
+
+test ! -f "$RONIN_DISK" && \
+ cp "$RONIN_DEBIAN_IMAGE" "$RONIN_DISK" && \
+ qemu-img resize "$RONIN_DEBIAN_IMAGE" 20G \
+
+RONIN_PRIVATE_KEY="$HOME/.ronin/ronin_key.priv"
+
+# could be encapsulated
+ssh-keygen -t ed25519 -f "$RONIN_PRIVATE_KEY" -N ''
+mv "$HOME/.ronin/ronin_key.priv.pub" "$HOME/.ronin/ronin_key.pub"
+
+# TODO could leave known_hosts in weird state
+GUEST_SSHD_KEY="$HOME/.ronin/guest_ssh_host_ed25519_key.pub"
+test ! -f "$GUEST_SSHD_KEY" && ./setup-ssh.sh
+
+# Launch the VM for prime time
+qemu-system-x86_64 \
+ -hda "$RONIN_DEBIAN_IMAGE" \
+ -m 4096 \
+ -nic hostfwd=tcp::2022-:22 \
+ -display none \
+ -daemonize
+
+ssh ronin@localhost -p 2022 -i "$HOME/.ronin/ronin_key.priv"
D ronin2.sh => ronin2.sh +0 -48
@@ 1,48 0,0 @@
-#!/bin/sh
-# ronin2: this time using qemu
-
-set -ex
-
-mkdir -p ~/.cache/ronin && \
- mkdir -p ~/.ronin # && \
- # cd ~/.ronin || return
-
-DEBIAN_VERSION=12
-
-DEBIAN_CLOUD_IMAGE=debian-$DEBIAN_VERSION-nocloud-amd64.qcow2
-DEBIAN_IMAGE_URL=https://cloud.debian.org/images/cloud/bookworm/latest/$DEBIAN_CLOUD_IMAGE
-
-CACHED_DEBIAN_IMAGE=$HOME/.cache/ronin/$DEBIAN_CLOUD_IMAGE
-
-test ! -f $CACHED_DEBIAN_IMAGE && \
- wget $DEBIAN_IMAGE_URL --output-document $CACHED_DEBIAN_IMAGE
-
-RONIN_DEBIAN_IMAGE=$HOME/.ronin/$DEBIAN_CLOUD_IMAGE
-test ! -f $RONIN_DEBIAN_IMAGE &&
- cp $CACHED_DEBIAN_IMAGE $RONIN_DEBIAN_IMAGE
-
-RONIN_DISK=$HOME/.ronin/ronin-disk.qcow2
-
-test ! -f $RONIN_DISK && \
- cp $RONIN_DEBIAN_IMAGE $RONIN_DISK && \
- qemu-img resize $RONIN_DEBIAN_IMAGE 20G \
-
-RONIN_PRIVATE_KEY=$HOME/.ronin/ronin_key.priv
-
-# could be encapsulated
-ssh-keygen -t ed25519 -f $RONIN_PRIVATE_KEY -N ''
-mv $HOME/.ronin/ronin_key.priv.pub $HOME/.ronin/ronin_key.pub
-
-# TODO could leave known_hosts in weird state
-GUEST_SSHD_KEY=$HOME/.ronin/guest_ssh_host_ed25519_key.pub
-test ! -f $GUEST_SSHD_KEY && ./setup-ssh.sh
-
-# Launch the VM for prime time
-qemu-system-x86_64 \
- -hda $RONIN_DEBIAN_IMAGE \
- -m 4096 \
- -nic hostfwd=tcp::2022-:22 \
- -display none
- -daemonize
-
-ssh ronin@localhost -p 2022 -i $HOME/.ronin/ronin_key.priv
D wsl_vagrantfile/Vagrantfile => wsl_vagrantfile/Vagrantfile +0 -77
@@ 1,77 0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-# All Vagrant configuration is done below. The "2" in Vagrant.configure
-# configures the configuration version (we support older styles for
-# backwards compatibility). Please don't change it unless you know what
-# you're doing.
-Vagrant.configure("2") do |config|
- # The most common configuration options are documented and commented below.
- # For a complete reference, please see the online documentation at
- # https://docs.vagrantup.com.
-
- # Every Vagrant development environment requires a box. You can search for
- # boxes at https://vagrantcloud.com/search.
- config.vm.box = "ronin/ronin"
-
- # Disable automatic box update checking. If you disable this, then
- # boxes will only be checked for updates when the user runs
- # `vagrant box outdated`. This is not recommended.
- # config.vm.box_check_update = false
-
- # Create a forwarded port mapping which allows access to a specific port
- # within the machine from a port on the host machine. In the example below,
- # accessing "localhost:8080" will access port 80 on the guest machine.
- # NOTE: This will enable public access to the opened port
- # config.vm.network "forwarded_port", guest: 80, host: 8080
-
- # Create a forwarded port mapping which allows access to a specific port
- # within the machine from a port on the host machine and only allow access
- # via 127.0.0.1 to disable public access
- # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
-
- # Create a private network, which allows host-only access to the machine
- # using a specific IP.
- # config.vm.network "private_network", ip: "192.168.33.10"
-
- # Create a public network, which generally matched to bridged network.
- # Bridged networks make the machine appear as another physical device on
- # your network.
- # config.vm.network "public_network"
-
- # Share an additional folder to the guest VM. The first argument is
- # the path on the host to the actual folder. The second argument is
- # the path on the guest to mount the folder. And the optional third
- # argument is a set of non-required options.
- # config.vm.synced_folder "../data", "/vagrant_data"
-
- # Disable the default share of the current code directory. Doing this
- # provides improved isolation between the vagrant box and your host
- # by making sure your Vagrantfile isn't accessable to the vagrant box.
- # If you use this you may want to enable additional shared subfolders as
- # shown above.
- config.vm.synced_folder ".", "/vagrant", disabled: true
-
- # Provider-specific configuration so you can fine-tune various
- # backing providers for Vagrant. These expose provider-specific options.
- # Example for VirtualBox:
- #
- # config.vm.provider "virtualbox" do |vb|
- # # Display the VirtualBox GUI when booting the machine
- # vb.gui = true
- #
- # # Customize the amount of memory on the VM:
- # vb.memory = "1024"
- # end
- #
- # View the documentation for the provider you are using for more
- # information on available options.
-
- # Enable provisioning with a shell script. Additional provisioners such as
- # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
- # documentation for more information about their specific syntax and use.
- # config.vm.provision "shell", inline: <<-SHELL
- # apt-get update
- # apt-get install -y apache2
- # SHELL
-end