Ansible在本地执行命令,然后在远程服务器上执行

时间:2015-08-02 16:51:06

标签: ansible ipmitool

我正在尝试使用带有 ipmitools 的ansible shell模块启动服务器,然后在该服务器上进行配置更改。

安装了ansible的服务器也有ipmitools。

在带有ansible的服务器上,我需要执行ipmitools来启动目标服务器,然后在其上执行playbooks。

有没有办法在运行ansible的服务器上执行本地ipmi命令,通过ansible启动目标服务器,然后在目标服务器上通过ssh执行所有playbooks。

1 个答案:

答案 0 :(得分:5)

您可以通过提供delegate_to参数在本地运行任何命令。

- shell: ipmitools ...
  delegate_to: localhost

如果ansible抱怨通过ssh连接到localhost,您需要在广告资源中添加一个条目,如下所示:

localhost              ansible_connection=local

host_vars/localhost

ansible_connection: local

请参阅behavioral parameters

接下来,您将需要等到服务器启动并通过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的答案。