Shaken Fist supports three types of instance consoles. This page describes each of those consoles and their functionality.
Read only serial console
Similarly to OpenStack, we support requesting a read only copy of the content of the serial console via our REST API. This console is based off a log of console activity, so can return events which have already occurred. You can access the console information from the command line like this:
sf-client instance consoledata ca8b3e3b-f681-47a2-99c5-6ddea00cc49f 1000 : | Self-hosted runner registration | [ 74.594732] cloud-init: | | [ 74.596442] cloud-init: -------------------------------------------------------------------------------- [ 74.602452] cloud-init: # Authentication [ 79.099457] cloud-init: √ Connected to GitHub [ 79.184807] cloud-init: # Runner Registration [ 80.283666] cloud-init: √ Runner successfully added [ 83.608069] cloud-init: √ Runner connection is good [ 83.609389] cloud-init: # Runner settings [ 83.615351] cloud-init: √ Settings Saved. [ 86.194598] cloud-init: √ Connected to GitHub [ 87.331467] cloud-init: Current runner version: '2.299.1' [ 87.333703] cloud-init: 2023-01-21 06:54:11Z: Listening for Jobs [ 91.102179] cloud-init: 2023-01-21 06:54:15Z: Running job: ubuntu-2004-slim-primary
The final argument is optional. In this example we are requesting the final 1,000 bytes of console output.
Interactive serial console
There is also interactive access to that same serial console, although it requires direct network access to the hypervisor node at the moment. If you lookup the instance with a show command, you'll see a "console port" listed:
sf-client instance show c301ad4a-1ad4-49d7-b1e7-cb08ad3bf23d uuid : c301ad4a-1ad4-49d7-b1e7-cb08ad3bf23d name : sfcbr-s2SXNcZGKaJMywSd ... node : sf-2 console port : 30049 vdi port : 37804 ...
If you telnet to the console port on the hypervisor node's IP, you'll land in an interactive console for the instance. So in this example:
telnet sf-2 30049
Archival of the serial console
Optionally, the content of the serial console can be archived when an instance is deleted. This is useful for debugging ephemeral instances which might have been deleted by the time you notice a problem -- for example instances used for Continuous Integration environments.
The time the serial console is kept for is configured with the ARCHIVE_INSTANCE_CONSOLE_DURATION configuration variable, which specifies how many days to keep the console for. On instance deletion, the console log is converted to an artifact and stored as any other. These artifacts have type 'other', and will have a source URL in the form of sf://instance/...uuid.../console within the same namespace as the instance. Set ARCHIVE_INSTANCE_CONSOLE_DURATION to 0 to disable this behavior.
Interactive VDI console
There is also a graphical console. Similarly to the telnet console, it requires direct network access to the hypervisor node, and is accessed at the "vdi port" TCP port. By default this console is SPICE since v0.7, although VNC is also available.
You can select from 'vnc' or 'spice' by setting the
vdi argument in your video
specification for the instance. If you set
experimental support for multiple users accessing the same SPICE console at the
same time is enabled. For more details about the experimental nature of concurrent
SPICE consoles, see https://www.spice-space.org/multiple-clients.html.
And example video specification would be: