使用 ubuntu autoinstall 的 late-commands 不会安装 tailscale 应用程序

使用 ubuntu autoinstall 的 late-commands 不会安装 tailscale 应用程序

我正在尝试创建自动安装配置,用于自动安装 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已安装系统中可见。

相关内容