如何在 Ubuntu Server Autoinstall 中将用户添加到组?

如何在 Ubuntu Server Autoinstall 中将用户添加到组?

我正在尝试在我的 Ubuntu 服务器自动安装程序中配置 docker。

大多数情况下,一切都按预期进行,但我无法弄清楚如何将我的用户作为此自动安装的一部分添加到 docker 组。

如果我使用这些identity:字段,可以很好地创建用户,但我无法将用户添加到 docker 组。

因此我尝试了users:“用户数据”文件中的功能,但这导致安装程序挂起并且无法完成:

#cloud-config
autoinstall:
  version: 1
  users:
    - name: dev
      passwd: "$y$j9T$XepKXdMTA7iJf8iCSNxpq.$0rSTu6/CrWNDM/wZvfSY0otUBUP5GjAKTvWiZ2puxS2"
      primary_group: dev
      groups: docker
  locale: en_US
  keyboard:
    layout: us
  ssh:
    install-server: true

  apt:
    sources:
      docker:
        # https://download.docker.com/linux/ubuntu/dists/
        source: deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable
        # 
        key: |
          -----BEGIN PGP PUBLIC KEY BLOCK-----
          <pgp text is here but figured that didn't need to make the post longer>
          -----END PGP PUBLIC KEY BLOCK-----
  
  packages:
    - tree
    - wget
    - curl
    - gnupg
    - ca-certificates
    - lsb-release
    - docker-ce
    - docker-ce-cli
    - containerd.io
  
  late-commands:
    - cp /cdrom/data_files/setup.sh /target/root/
    - curtin in-target --target=/target -- chmod +x /root/setup.sh
    - curtin in-target --target=/target -- bash /root/setup.sh
    - shutdown -h now

于是我回到田野identity:,尝试其他的事情。

正如您在我最近的命令中看到的,我调用了一个脚本。我尝试usermod -aG docker dev向该脚本添加内容,但脚本失败并显示错误代码 -1。我没有收集到其他信息。

此外,我尝试在 中添加相同的 usermod 命令late-commands,但失败了。然后我尝试添加 usermod 命令,但runcmd同样失败了。我无法确定失败的原因,因为日志只是说失败了或返回了 6 个错误代码。我尝试查找,但没有成功。

显然我做错了什么,但我不确定那是什么。作为自动安装程序的一部分,将用户添加到 docker 组或任何组的正确方法是什么?

编辑:

根据建议,我尝试了此格式users:。安装完成后,我无法登录。

  user-data:
    users:
      - default
      - name: dev
        passwd: "$y$j9T$XepKXdMTA7iJf8iCSNxpq.$0rSTu6/CrWNDM/wZvfSY0otUBUP5GjAKTvWiZ2puxS2"
        primary_group: dev
        groups: users, admin, docker
        sudo: ALL=(ALL)
    hostname: FixMe

答案1

我认为您需要将“用户”部分包含在“用户数据”部分中。如下所示:

#cloud-config
autoinstall:
  version: 1

  locale: en_US

  keyboard:
    layout: us

  ssh:
    install-server: true

  apt:
    sources:
      docker:
        # https://download.docker.com/linux/ubuntu/dists/
        source: deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable
        # 
        key: |
          -----BEGIN PGP PUBLIC KEY BLOCK-----
          <pgp text is here but figured that didn't need to make the post longer>
          -----END PGP PUBLIC KEY BLOCK-----
  
  packages:
    - tree
    - wget
    - curl
    - gnupg
    - ca-certificates
    - lsb-release
    - docker-ce
    - docker-ce-cli
    - containerd.io
  
  late-commands:
    - cp /cdrom/data_files/setup.sh /target/root/
    - curtin in-target --target=/target -- chmod +x /root/setup.sh
    - curtin in-target --target=/target -- bash /root/setup.sh
    - shutdown -h now

  user-data:
    users:
      - name: dev
        passwd: "$y$j9T$XepKXdMTA7iJf8iCSNxpq.$0rSTu6/CrWNDM/wZvfSY0otUBUP5GjAKTvWiZ2puxS2"
        primary_group: dev
        groups: docker

    hostname: computername
    fqdn: copmutername.something.something

在我的工作自动安装中,我在用户下列出了以下内容:

    - name: localuser
      gecos: Local Ubuntu User
      sudo: ALL=(ALL) (ALL)
      passwd: <hashed password>
      shell: /bin/bash
      groups: [adm, cdrom, dip, lxd, sudo]
      lock_passwd: false

我使用以下命令生成密码:

mkpasswd --method=SHA-512

注意:您必须在单独的系统上执行此操作。mkpasswd 是 whois 包的一部分。

相关内容