lfreleng-actions/OpenStack Bastion with Tailscale

Setup and manage an OpenStack bastion host with Tailscale VPN for secure remote access

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 10, 2026
License
Apache 2.0

Pinned Snippet

workflow.ymlSHA-pinned
uses: lfreleng-actions/tailscale-openstack-bastion-action@eb920e9c30bbe25e908c317af504f8321367bc39 # v0.1.1

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
operationOperation: 'setup' to create bastion, 'teardown' to destroy bastionyes
openstack_auth_urlOpenStack auth URLyes
openstack_project_idOpenStack project/tenant IDyes
openstack_usernameOpenStack usernameyes
openstack_passwordOpenStack password (will be base64 decoded if needed)yes
openstack_regionOpenStack regionnoca-ymq-1
openstack_network_idOpenStack network UUIDno""
bastion_flavorOpenStack flavor for bastion instancenov3-standard-2
bastion_imageBase image for bastion hostnoUbuntu 22.04.5 LTS (x86_64) [2025-03-27]
bastion_networkNetwork name for bastion hostnoodlci
bastion_ssh_keySSH key name for bastion (optional, Tailscale SSH used by default)no""
bastion_wait_timeoutTimeout in seconds to wait for bastion to be readyno600
bastion_nameName for the bastion instance (defaults to bastion-gh-{run_id})no""
tailscale_oauth_client_idTailscale OAuth client ID (recommended - requires oauth_secret)no""
tailscale_oauth_secretTailscale OAuth secret (recommended - requires oauth_client_id)no""
tailscale_use_ephemeral_keysGenerate ephemeral auth keys from OAuth (recommended: true, legacy: false)notrue
tailscale_auth_keyTailscale auth key (legacy - OAuth is recommended)no""
tailscale_tagsComma-separated list of Tailscale tags for the GitHub runner (e.g., 'tag:ci')notag:ci
bastion_tailscale_tagsComma-separated list of Tailscale tags for the bastion VM (e.g., 'tag:bastion')notag:bastion
tailscale_versionTailscale versionnolatest
debug_modeEnable debug loggingnofalse
namedescription
bastion_ipTailscale IP of the bastion host
bastion_nameName of the bastion instance
statusStatus of the operation (success/failure)