]> gitweb.fluxo.info Git - kvmx.git/commitdiff
Full provisioning
authorSilvio Rhatto <rhatto@riseup.net>
Fri, 10 Mar 2017 03:03:58 +0000 (00:03 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Fri, 10 Mar 2017 03:03:58 +0000 (00:03 -0300)
kvmx
kvmxfile
provision/desktop-basic [new file with mode: 0755]
provision/desktop-full [new file with mode: 0755]
provision/files/etc/lightdm/lightdm.conf [new file with mode: 0644]
provision/webserver [new file with mode: 0755]

diff --git a/kvmx b/kvmx
index 9cec3622764bc0268806f1128592e2042239c02a..5d555dc0c79f054651655bd90f0eda02f90e506a 100755 (executable)
--- a/kvmx
+++ b/kvmx
@@ -10,6 +10,9 @@ ACTION="$1"
 VM="$2"
 GLOBAL_USER_CONFIG_FOLDER="$HOME/.config/kvmx"
 
+# Alias to be used in config files
+KVMX_BASE="$DIRNAME"
+
 # Run spice client
 function kvmx_spice {
   # https://lists.freedesktop.org/archives/spice-devel/2013-September/014643.html
@@ -162,7 +165,7 @@ function kvmx_rsync {
   ORIG="$3"
   DEST="$4"
   SSH="`cat $SSHFILE`"
-  rsync -av "$SSH_COMMAND -p $SSH" $ORIG/ $SSH_LOGIN@127.0.0.1:$DEST/
+  rsync -av -e "$SSH_COMMAND -o Port=$SSH" --rsync-path "sudo rsync" $ORIG/ $SSH_LOGIN@127.0.0.1:$DEST/
 }
 
 # List guests
@@ -347,12 +350,21 @@ function kvmx_provision {
     exit 1
   fi
 
-  if [ -z "$provision_script" ]; then
-    echo "$BASENAME: error: parameter provision_script is not configured for $VM."
+  if [ -z "$provision_command" ]; then
+    echo "$BASENAME: error: parameter provision_command is not configured for $VM."
     exit 1
   fi
 
-  echo "sudo $provision_script" | kvmx_ssh
+  if [ ! -z "$provision_rsync" ]; then
+    SSH="`cat $SSHFILE`"
+    ORIG="`echo $provision_rsync | cut -d ' ' -f 1`"
+    DEST="`echo $provision_rsync | cut -d ' ' -f 2`"
+
+    echo "sudo mkdir -p `dirname $DEST`" | kvmx_ssh
+    rsync -av -e "$SSH_COMMAND -o Port=$SSH" --rsync-path "sudo rsync" $ORIG/ $SSH_LOGIN@127.0.0.1:$DEST/
+  fi
+
+  echo "sudo $provision_command" | kvmx_ssh
 }
 
 # Print guest image file name
index d8394c82e1bbf1061a90d988aadb402f32357367..70d9f219206b633fcc479e9681ee2dfeeaed4ce7 100644 (file)
--- a/kvmxfile
+++ b/kvmxfile
@@ -7,10 +7,13 @@
 
 # Set this is you want to be able to share folders between host and guest.
 shared_folder="."
-shared_folder_mountpoint="/home/user/$VM"
+shared_folder_mountpoint="/home/user/code/$VM"
+
+# Folder to sync during provisioning in the format "/host/folder /guest/folder".
+#provision_rsync="$KVMX_BASE/provision/ /usr/local/share/kvmx/provision/"
 
 # Absolute path for a provision script located inside the guest.
-#provision_script="/home/user/$VM/provision"
+#provision_command="/usr/share/kvmx/provision/desktop-basic"
 
 # Set this if you want to automatically attach an spice client when the machine
 # boots.
diff --git a/provision/desktop-basic b/provision/desktop-basic
new file mode 100755 (executable)
index 0000000..e068cfb
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# Basic desktop provisioner.
+#
+
+# Parameters
+DIRNAME="`dirname $0`"
+
+# Dependencies
+sudo apt-get update
+sudo apt-get install -y git
+
+# Tools
+git clone --recursive https://git.fluxo.info/rhatto/apps
+apps/inception init
+apps/inception load
+
+# Environment
+sudo apt-get install -y lightdm ratpoison awesome
+sudo apt-get install -y firefox-esr chromium
+
+# Configuration
+sudo cp $DIRNAME/files/etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf
+
+mkdir -p .custom
+
+cat <<-EOF | tee .custom/xsession > /dev/null
+#
+# Custom X11 session config
+#
+WINDOW_MANAGER="ratpoison"
+PROGRAMS="$PROGRAMS terminal"
+
+#
+# Set screen size
+#
+
+# On stretch onwards Virtual-0 was renamed to Virtual-0
+# Modeline determined by running "cvt 1280 780"
+xrandr --newmode "1280x780_60.00"   81.50  1280 1352 1480 1680  780 783 793 810 -hsync +vsync
+xrandr --addmode Virtual-0 1280x780_60.00
+
+# Modeline determined by running "cvt 1368 748"
+xrandr --newmode "1368x748_60.00"   83.00  1368 1440 1576 1784  748 751 761 777 -hsync +vsync
+xrandr --addmode Virtual-0 1368x748_60.00
+
+# Set default modeline
+#xrandr --output Virtual-0 --mode 1368x748_60.00
+xrandr --output Virtual-0 --mode 1280x780_60.00
+EOF
diff --git a/provision/desktop-full b/provision/desktop-full
new file mode 100755 (executable)
index 0000000..7075b72
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+#
+# Full desktop
+#
+
+# Install cinnamon
+sudo apt-get install -y cinnamon
diff --git a/provision/files/etc/lightdm/lightdm.conf b/provision/files/etc/lightdm/lightdm.conf
new file mode 100644 (file)
index 0000000..1fcb471
--- /dev/null
@@ -0,0 +1,173 @@
+
+The programs included with the Debian GNU/Linux system are free software;
+the exact distribution terms for each program are described in the
+individual files in /usr/share/doc/*/copyright.
+
+Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
+permitted by applicable law.
+You have new mail.
+#
+# General configuration
+#
+# start-default-seat = True to always start one seat if none are defined in the configuration
+# greeter-user = User to run greeter as
+# minimum-display-number = Minimum display number to use for X servers
+# minimum-vt = First VT to run displays on
+# lock-memory = True to prevent memory from being paged to disk
+# user-authority-in-system-dir = True if session authority should be in the system location
+# guest-account-script = Script to be run to setup guest account
+# logind-check-graphical = True to on start seats that are marked as graphical by logind
+# log-directory = Directory to log information to
+# run-directory = Directory to put running state in
+# cache-directory = Directory to cache to
+# sessions-directory = Directory to find sessions
+# remote-sessions-directory = Directory to find remote sessions
+# greeters-directory = Directory to find greeters
+# backup-logs = True to move add a .old suffix to old log files when opening new ones
+#
+[LightDM]
+#start-default-seat=true
+#greeter-user=lightdm
+#minimum-display-number=0
+#minimum-vt=7
+#lock-memory=true
+#user-authority-in-system-dir=false
+#guest-account-script=guest-account
+#logind-check-graphical=false
+#log-directory=/var/log/lightdm
+#run-directory=/var/run/lightdm
+#cache-directory=/var/cache/lightdm
+#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
+#remote-sessions-directory=/usr/share/lightdm/remote-sessions
+#greeters-directory=/usr/share/lightdm/greeters:/usr/share/xgreeters
+#backup-logs=true
+
+#
+# Seat configuration
+#
+# Seat configuration is matched against the seat name glob in the section, for example:
+# [Seat:*] matches all seats and is applied first.
+# [Seat:seat0] matches the seat named "seat0".
+# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client".
+#
+# type = Seat type (xlocal, xremote, unity)
+# pam-service = PAM service to use for login
+# pam-autologin-service = PAM service to use for autologin
+# pam-greeter-service = PAM service to use for greeters
+# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
+# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
+# xserver-config = Config file to pass to X server
+# xserver-layout = Layout to pass to X server
+# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
+# xserver-share = True if the X server is shared for both greeter and session
+# xserver-hostname = Hostname of X server (only for type=xremote)
+# xserver-display-number = Display number of X server (only for type=xremote)
+# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
+# xdmcp-port = XDMCP UDP/IP port to communicate on
+# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
+# unity-compositor-command = Unity compositor command to run (can also contain arguments e.g. unity-system-compositor -special-option)
+# unity-compositor-timeout = Number of seconds to wait for compositor to start
+# greeter-session = Session to load for greeter
+# greeter-hide-users = True to hide the user list
+# greeter-allow-guest = True if the greeter should show a guest login option
+# greeter-show-manual-login = True if the greeter should offer a manual login option
+# greeter-show-remote-login = True if the greeter should offer a remote login option
+# user-session = Session to load for users
+# allow-user-switching = True if allowed to switch users
+# allow-guest = True if guest login is allowed
+# guest-session = Session to load for guests (overrides user-session)
+# session-wrapper = Wrapper script to run session with
+# greeter-wrapper = Wrapper script to run greeter with
+# guest-wrapper = Wrapper script to run guest sessions with
+# display-setup-script = Script to run when starting a greeter session (runs as root)
+# display-stopped-script = Script to run after stopping the display server (runs as root)
+# greeter-setup-script = Script to run when starting a greeter (runs as root)
+# session-setup-script = Script to run when starting a user session (runs as root)
+# session-cleanup-script = Script to run when quitting a user session (runs as root)
+# autologin-guest = True to log in as guest by default
+# autologin-user = User to log in with by default (overrides autologin-guest)
+# autologin-user-timeout = Number of seconds to wait before loading default user
+# autologin-session = Session to load for automatic login (overrides user-session)
+# autologin-in-background = True if autologin session should not be immediately activated
+# exit-on-failure = True if the daemon should exit if this seat fails
+#
+[Seat:*]
+#type=xlocal
+#pam-service=lightdm
+#pam-autologin-service=lightdm-autologin
+#pam-greeter-service=lightdm-greeter
+#xserver-command=X
+#xmir-command=Xmir
+#xserver-config=
+#xserver-layout=
+#xserver-allow-tcp=false
+#xserver-share=true
+#xserver-hostname=
+#xserver-display-number=
+#xdmcp-manager=
+#xdmcp-port=177
+#xdmcp-key=
+#unity-compositor-command=unity-system-compositor
+#unity-compositor-timeout=60
+#greeter-session=example-gtk-gnome
+#greeter-hide-users=false
+#greeter-allow-guest=true
+#greeter-show-manual-login=false
+#greeter-show-remote-login=true
+#user-session=default
+#allow-user-switching=true
+#allow-guest=true
+#guest-session=
+#session-wrapper=lightdm-session
+#greeter-wrapper=
+#guest-wrapper=
+#display-setup-script=
+#display-stopped-script=
+#greeter-setup-script=
+#session-setup-script=
+#session-cleanup-script=
+#autologin-guest=false
+autologin-user=user
+autologin-user-timeout=0
+#autologin-in-background=false
+#autologin-session=
+#exit-on-failure=false
+
+#
+# XDMCP Server configuration
+#
+# enabled = True if XDMCP connections should be allowed
+# port = UDP/IP port to listen for connections on
+# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)
+# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
+# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset)
+#
+# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn.  Alternatively
+# it can be a word and the first 7 characters are used as the key.
+#
+[XDMCPServer]
+#enabled=false
+#port=177
+#listen-address=
+#key=
+#hostname=
+
+#
+# VNC Server configuration
+#
+# enabled = True if VNC connections should be allowed
+# command = Command to run Xvnc server with
+# port = TCP/IP port to listen for connections on
+# listen-address = Host/address to listen for VNC connections (use all addresses if not present)
+# width = Width of display to use
+# height = Height of display to use
+# depth = Color depth of display to use
+#
+[VNCServer]
+#enabled=false
+#command=Xvnc
+#port=5900
+#listen-address=
+#width=1024
+#height=768
+#depth=8
diff --git a/provision/webserver b/provision/webserver
new file mode 100755 (executable)
index 0000000..1ef545e
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+#
+# Webserver example.
+#
+
+sudo apt-get install -y apache2