我试图制作一个剧本,将更新一台机器/用户的known_hosts,但我得到了一个错误,我无法理解。
---
- name: Keys
hosts: adminslaves
gather_facts: false
no_log: false
remote_user: test
#pre_tasks:
# - setup:
# gather_subset:
# - '!all'
tasks:
- name: Scan for SSH host keys.
shell: ssh-keyscan myhost.mydomain.com 2>/dev/null
changed_when: False
register: ssh_scan
# - name: show vars
# debug:
# msg: "{{ ssh_scan.stdout_lines }}"
#
- name: Update known_hosts.
known_hosts:
key: "{{ item }}"
name: "{{ ansible_host }}"
state: present
with_items: "{{ ssh_scan.stdout_lines }}"
我的错误是"msg": "Host parameter does not match hashed host field in supplied key"}
我认为变量有正确的信息(至少在我调试它时是这样)。
我的最终目标是一个剧本,将添加主机列表的ssh键到Jenkins auth的主机列表中。
感谢任何帮助。
2条答案
按热度按时间9lowa7mx1#
问题是
ssh-keyscan myhost.mydomain.com 2>/dev/null
的输出通常包含多个键,因此您需要处理它。有一个人出现了同样的错误消息issue,但问题还是出在ssh-key格式上。我更好地理解了检查known_hosts
任务使用的code。这里我使用的代码是:用途:
50few1ms2#
此小剧本将主机密钥分配给指定目标主机/组(
TARGETS
)上的特定用户(SOME_USER
)的known_hosts
。所需的密钥类型可以通过keytype
变量指定。这将使用收集的
ansible_facts
和playbook运行的开始。回到这个问题,这并没有直接回答它。但我认为它可以增强。你可以例如。修改循环变量,将
myhost.mydomain.com
添加到目标中,等等。