我需要检查主机是否可以使用SSH成功登录到其他服务器。
有办法做到这一点吗?
答案 0 :(得分:2)
没有这样的事情。如果你考虑一下,用内置事实或其他机制就不可能做到这一点。 Ansible应该如何知道其他主机,使用什么用户名,身份验证方法等...如果Ansible试图让每个主机连接到它所知道的每个其他主机,那将是一种浪费。
您需要编写一个任务并保存输出以供进一步使用。但这实际上应该很容易。
final Class<?> myClass = new ByteBuddy().subclass(Object.class).name("test.MyClass")
.defineField("myValue", String.class, Visibility.PUBLIC)
.value("Hello World !")
.make()
.load(getClass().getClassLoader(), ClassLoadingStrategy.Default.INJECTION).getLoaded();
Object myObject = myClass.newInstance();
然后您可以在任何其他任务中将该输出用作条件:
- shell: ssh other.host echo awesome that works
failed_when: false
register: ssh_test
答案 1 :(得分:0)
没有事实,但您可以使用ping模块。 http://docs.ansible.com/ansible/ping_module.html
答案 2 :(得分:0)
为了扩展@ smiller171提供的答案,这是一个将测试来自target1的SSH(或其他库存配置通信)连接的游戏 - &gt; TARGET2。状态变量将包含可用于确定连接是否失败的信息
- hosts: target2
tasks:
- ping:
delegate_to: target1
register: status
ignore_errors: yes
- debug: msg="target1 failed to communicated with target2"
when: status | failed