我正在尝试创建自动安装配置,用于自动安装 ubuntu 服务器和远程访问。对于远程访问,我想使用 Tailscale VPN。这是我的用户数据文件的示例:
#cloud-config
autoinstall:
version: 1
identity:
hostname: ubuntu-server
password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
username: ubuntu
late-commands:
- curl -fsSL https://tailscale.com/install.sh | sh
- tailscale up --auth-key=${OAUTH_CLIENT_SECRET}?ephemeral=true --advertise-tags=tag:ci
此用户数据配置有效。在 Tailscale 机柜中,我能够看到已建立的新节点。因此,late-commands 有效。但重启后,我无法在 ubuntu 上找到 Tailscale 程序,并且机器不再连接到 VPN。
为什么 Tailscale 不再可用以及如何修复它?在使用自动安装和通过互联网进行远程 ssh 连接安装 ubuntu-server 时,除了 tailscale 之外,还有其他方法吗?
答案1
您的命令在安装程序环境中运行,而不是在已安装/目标系统中运行。从late-commands
文档
在安装成功完成并安装所有更新和软件包后,在系统重新启动之前运行的 Shell 命令。它们在安装程序环境中运行
您可以使用cloud-init 安装您在评论中链接的方法具有如下的自动安装配置。
#cloud-config
autoinstall:
user-data:
runcmd:
# One-command install, from https://tailscale.com/download/
- ['sh', '-c', 'curl -fsSL https://tailscale.com/install.sh | sh']
# Set sysctl settings for IP forwarding (useful when configuring an exit node)
- ['sh', '-c', "echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf && echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf && sudo sysctl -p /etc/sysctl.d/99-tailscale.conf" ]
# Generate an auth key from your Admin console
# https://login.tailscale.com/admin/settings/keys
# and replace the placeholder below
- ['tailscale', 'up', '--authkey=tskey-abcdef1432341818']
# Optional: Include this line to make this node available over Tailscale SSH
- ['tailscale', 'set', '--ssh']
# Optional: Include this line to configure this machine as an exit node
- ['tailscale', 'set', '--advertise-exit-node']
安装程序将添加user-data
内容云初始化已安装系统上的配置。它将在/etc/cloud/cloud.cfg.d/99-installer.cfg
已安装系统中可见。