ansible.builtin.known_hosts 模块 – 从 known_hosts 文件中添加或删除主机

注意

此模块是 ansible-core 的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,您也可以使用简短的模块名称 known_hosts。但是,我们建议您使用 完全限定集合名称 (FQCN) ansible.builtin.known_hosts,以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合冲突。

摘要

  • ansible.builtin.known_hosts 模块允许您从 known_hosts 文件中添加或删除主机密钥。

  • 从 Ansible 2.2 开始,每个主机允许多个条目,但每个 ssh 支持的密钥类型只有一个。例如,如果您要通过 ssh 使用 ansible.builtin.git 模块,这将非常有用。

  • 如果您需要管理大量主机密钥,您会发现 ansible.builtin.template 模块更有用。

参数

参数

注释

hash_host

布尔值

对 known_hosts 文件中的主机名进行哈希。

选项

  • false ← (默认)

  • true

key

字符串

SSH 公钥,以字符串形式表示。

如果 state=present 则为必需,如果 state=absent 则为可选,在这种情况下,将删除主机的所有密钥。

密钥必须采用 SSH 正确的格式(请参阅 sshd(8),“SSH_KNOWN_HOSTS 文件格式”部分)。

具体来说,密钥不应与 SSH 公钥文件中找到的格式匹配,而应在包含公钥的行前加上主机名,这与它在 known_hosts 文件中显示的方式相同。添加到行前面的值也必须与 name 参数的值匹配。

应采用 <hostname[,IP]> ssh-rsa <pubkey> 格式。

对于自定义 SSH 端口,key 也需要指定端口。请参阅示例部分。

name

别名:host

字符串 / 必需

要添加或删除的主机(必须与 key 中指定的主机匹配)。它将转换为小写,以便 ssh-keygen 可以找到它。

必须与 key 属性中存在的 <hostname> 或 <ip> 匹配。

对于自定义 SSH 端口,name 也需要指定端口。请参阅示例部分。

path

path

要编辑的 known_hosts 文件。

如果需要,将创建 known_hosts 文件。在运行模块之前,必须存在路径的其余部分。

默认值: "~/.ssh/known_hosts"

state

字符串

present 用于添加主机密钥。

absent 用于删除主机密钥。

选项

  • "absent"

  • "present" ← (默认)

属性

属性

支持

描述

check_mode

支持: 完全支持

可以在 check_mode 中运行并返回更改状态预测,而无需修改目标,如果不支持,则操作将被跳过。

diff_mode

支持: 完全支持

在差异模式下,将返回有关已更改内容(或在 check_mode 中可能需要更改的内容)的详细信息

platform

平台: posix

可以对其进行操作的目标操作系统/系列

示例

- name: Tell the host about our servers it might want to ssh to
  ansible.builtin.known_hosts:
    path: /etc/ssh/ssh_known_hosts
    name: foo.com.invalid
    key: "{{ lookup('ansible.builtin.file', 'pubkeys/foo.com.invalid') }}"

- name: Another way to call known_hosts
  ansible.builtin.known_hosts:
    name: host1.example.com   # or 10.9.8.77
    key: host1.example.com,10.9.8.77 ssh-rsa ASDeararAIUHI324324  # some key gibberish
    path: /etc/ssh/ssh_known_hosts
    state: present

- name: Add host with custom SSH port
  ansible.builtin.known_hosts:
    name: '[host1.example.com]:2222'
    key: '[host1.example.com]:2222 ssh-rsa ASDeararAIUHI324324' # some key gibberish
    path: /etc/ssh/ssh_known_hosts
    state: present

作者

  • Matthew Vernon (@mcv21)