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

Kev*_*ker 4 ansible ipmitool

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

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

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

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

udo*_*dan 5

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

- shell: ipmitools ...
  delegate_to: localhost
Run Code Online (Sandbox Code Playgroud)

如果ansible抱怨连接到localhostvia ssh,你需要在你的库存中添加一个条目,如下所示:

localhost              ansible_connection=local
Run Code Online (Sandbox Code Playgroud)

或者在host_vars/localhost:

ansible_connection: local
Run Code Online (Sandbox Code Playgroud)

请参阅行为参数.

接下来,您将需要等到服务器启动并通过ssh访问.以下是来自Ansible的文章,涵盖了这个主题,这是他们列出的任务:

- name: Wait for Server to Restart
  local_action:
    wait_for
    host={{ inventory_hostname }}
    port=22
    delay=15
    timeout=300
  sudo: false
Run Code Online (Sandbox Code Playgroud)

如果这不起作用(因为它是一篇较旧的文章,我认为我以前遇到过这个问题的问题),你可以查看这个SO问题的答案.