代码之家  ›  专栏  ›  技术社区  ›  CGFoX

Ansible:创建新用户并从本地系统复制ssh密钥

  •  1
  • CGFoX  · 技术社区  · 7 年前

    我是Ansible的新手,我正在努力在远程机器上创建一个新用户,并将ssh密钥(用于git)从本地机器复制到远程机器的新用户。 基本上,从 localmachine/somepath/keys/ remotemachine/newuser/home/.ssh/ .

    - name: Create user
      hosts: remote_host
      remote_user: root
      tasks:
        - name: Create new user
          user: name=newuser ssh_key_file=../keys/newuser
    

    虽然这会在远程机器上创建新用户,但不会复制任何密钥(ssh仍然为空)。我也试过了 authorized_key

    有没有可能在我已经运行了它并且 newuser 已存在。也就是说,我可以再次运行它,还是必须先删除新用户?

    1 回复  |  直到 7 年前
        1
  •  6
  •   zigarn    7 年前

    这个 ssh_key_file 是选项使用的路径 generate_ssh_key user module 。它不是要上载到创建的远程用户的本地SSH密钥的路径。

    copy module

    - name: Create user
      hosts: remote_host
      remote_user: root
      tasks:
        - name: Create new user
          user:
            name: newuser
        - name: Create .ssh folder
          file:
            path: ~newuser/.ssh
            state: directory
            owner: newuser
            group: newuser
            mode: 0700
         - name: Upload SSH key
           copy:
            src: ../keys/newuser
            dest: ~newuser/.ssh/id_rsa
            owner: newuser
            group: newuser
            mode: 0700
    

    顺便说一句,建议使用YAML语法而不是args语法。