Ansible:测试SSH登录是否可能没有FATAL错误?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible:测试SSH登录是否可能没有FATAL错误?相关的知识,希望对你有一定的参考价值。
我有一个设置手册,它采用新安装的Linux实例,以默认用户身份登录(我们将调用user1),创建另一个用户(我们将调用user2),然后禁用user1。因为user1只能在执行这组任务之前访问实例,所以任务都在一个特殊的playbook中,我们必须记住在新实例上运行。之后,所有常见任务都由user2运行,因为user1不再存在。
我想结合设置和普通的剧本,这样我们就不用再手动运行设置剧本了。我尝试创建一个任务,以查看实例上存在哪个用户,通过尝试通过SSH作为user1登录来使原始设置任务成为条件。问题是,如果我为任一用户尝试SSH登录,则ansible退出时会出现FATAL错误,因为它无法登录:user2在新实例上尚不存在,或者在执行安装程序手册后已禁用user1。
我相信通过SSH测试登录是确定实例所处的条件的唯一方法。有没有办法测试SSH登录而不会出现致命错误然后根据结果有条件地执行任务?
一种方法是通过local_action使用shell来向user1调用一个简单的ssh命令,看看它是否成功。这些方面的东西:
- name: Test for user1
local_action: shell ssh user1@{{ inventory_hostname }} "echo success"
register: user1_enabled
然后你可以在另一个任务中使用这样的东西来看它是否有效:
when: user1_enabled.stdout.find("success") != -1
使用Ansible> = 2.5,可以使用wait_for_connection_module
(https://docs.ansible.com/ansible/2.5/modules/wait_for_connection_module.html)。
- name: Wait 600 seconds for target connection to become reachable/usable
wait_for_connection:
以上是关于Ansible:测试SSH登录是否可能没有FATAL错误?的主要内容,如果未能解决你的问题,请参考以下文章