如何在 Ansible 中在目标主机旁边的另一台主机上执行任务?

如何在 Ansible 中在目标主机旁边的另一台主机上执行任务?

我想在目标主机“A”上运行一个包含多个任务的剧本。此外,我想在 DNS 服务器主机“B”上为主机“A”设置 DNS 记录。最好只使用一个剧本。剧本的主机将设置为“全部”,设置 DNS 记录的剧本将仅限于主机“B”。主机“B”也将被修复并可以进行硬编码,它应该使用主机“A”的 ansible_hostname 作为参数。有什么想法可以实现吗?

答案1

您可以使用delegate_to

- name: set dns record
  win_dns_record:
    name: "{{ inventory_hostname_short }}"
    type: A
    value: "{{ item }}"
    zone: "{{ ansible_domain }}"
  delegate_to: 'b'
  loop: "{{ ansible_all_ipv4_addresses }}"

该任务将循环遍历机器的所有 IP 地址并针对“B”运行以创建 DNS 条目。可能不是最佳配置,但它显示了您需要的一切。

相关内容