我正在尝试使用带有 ipmitools 的ansible shell模块启动服务器,然后在该服务器上进行配置更改。
安装了ansible的服务器也有ipmitools。
在带有ansible的服务器上,我需要执行ipmitools来启动目标服务器,然后在其上执行playbooks。
有没有办法在运行ansible的服务器上执行本地ipmi命令,通过ansible启动目标服务器,然后在目标服务器上通过ssh执行所有playbooks。
答案 0 :(得分:5)
您可以通过提供delegate_to
参数在本地运行任何命令。
- shell: ipmitools ...
delegate_to: localhost
如果ansible抱怨通过ssh连接到localhost
,您需要在广告资源中添加一个条目,如下所示:
localhost ansible_connection=local
或host_vars/localhost
:
ansible_connection: local
接下来,您将需要等到服务器启动并通过ssh访问。 Here是来自Ansible的一篇文章,涵盖了这个主题,这是他们列出的任务:
- name: Wait for Server to Restart
local_action:
wait_for
host={{ inventory_hostname }}
port=22
delay=15
timeout=300
sudo: false
如果这不起作用(因为它是一篇较旧的文章而且我认为我以前遇到过此解决方案的问题),您可以查看this SO question的答案。