如何使用 Ansible 和用户模块将现有公钥添加到authorized_keys 文件中?

Ale*_*oux 8 ssh ssh-keys ansible

我正在使用 Ansible 编写一个简单的任务来创建用户并添加现有的 RSA 公钥。这是我写的代码:

- name: SYSTEM - Create test user
  tags: system-user
  user: 
        name: "{{ test_user }}"
        state: present
        createhome: yes

- name: SYSTEM - Add existing pub key for test user
  tags: system-user
  copy: 
       content: "{{ test_user_pubkey }}"
       dest: "/tmp/test_user_id_rsa.pub"
       force: no
       owner: "{{ test_user }}"
       group: "{{ test_user }}"
       mode: 0600

- name: SYSTEM - Set authorized key for test_user took from file
  tags: system-user
  authorized_key:
        user: "{{ test_user }}"
        state: present
        key: "{{ lookup('file', '/tmp/test_user_id_rsa.pub') }}"
Run Code Online (Sandbox Code Playgroud)

我编写的代码并不优雅,我认为最好的选择是将现有的 RSA 公钥与用户创建块一起添加,以便创建和填充文件authorized_keys

我已阅读Ansible 用户模块,但 ssh_key_file 方法不包括将现有 pub 密钥的值回显到文件的可能性authorized_keys(最终目的是能够使用用户和私钥通过 ssh 进行远程连接)。

ssh_key_file = (可选)指定 SSH 密钥文件名。如果这是相对文件名,那么它将相对于用户的主目录。

Ansible 是否可以在用户模块内管理此过程?

tec*_*raf 8

您的问题的答案是:

- name: SYSTEM - Create test user
  tags: system-user
  user: 
    name: "{{ test_user }}"
    state: present
    createhome: yes

- name: SYSTEM - Set authorized key for test_user took from file
  tags: system-user
  authorized_key:
    user: "{{ test_user }}"
    state: present
    key: "{{ test_user_pubkey }}"
Run Code Online (Sandbox Code Playgroud)

这就是所需要的一切。


关于您阅读的文档,ssh_key_file涉及生成 SSH 密钥对,这不是您想要的。