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 FILE FORMAT”部分)。

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

应采用 <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

支持: 完整

在 diff 模式下,将返回有关已更改内容(或可能在 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)