gpt4 book ai didi

ansible 委托(delegate)给其他主机

转载 作者:行者123 更新时间:2023-12-04 17:59:23 26 4
gpt4 key购买 nike

我使用 ansible 2.1 并且我想使用 delegate_to 向一组主机运行命令。我使用 localhost 作为主机参数,并且我想将“touch”命令委托(delegate)给两个 cls 主机
我有以下

---
- hosts: ansible
# gather_facts: yes

tasks:
- debug: var=groups.cls

- name: touch a file to running host
shell: echo {{ item }} >> /tmp/{{ inventory_hostname }}
delegate_to: "{{ item }}"
with_items: "{{ groups.cls }}"

带输出:
[root@ansible control]# ansible-playbook -i inventory test.yml

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [ansible]

TASK [debug] *******************************************************************
ok: [ansible] => {
"groups.cls": [
"cls-host-1",
"cls-host-2"
]
}

TASK [touch a file to running host] ********************************************
changed: [ansible -> cls-host-1] => (item=cls-host-1)
changed: [ansible -> cls-host-2] => (item=cls-host-2)

PLAY RECAP *********************************************************************
ansible : ok=3 changed=1 unreachable=0 failed=0

但触摸仅在第一台主机上完成:
[root@cls-host-1 ~]# more /tmp/ansible
cls-host-1
cls-host-2

有什么问题吗?我可以用任何其他方式委派命令吗?

最佳答案

我已经使用 Ansible 2.4.0.0 测试了您的剧本的变体:

#!/usr/bin/env ansible-playbook

- hosts: stretch.fritz.box
tasks:
- name: touch
shell: echo {{item}} >>/tmp/{{inventory_hostname}}
delegate_to: "{{item}}"
with_items:
- jessie.fritz.box
- short.fritz.box

这工作正常:触摸是在 jessie 和 short 上进行的
jessie$ cat /tmp/stretch.fritz.box 
jessie.fritz.box

short$ cat /tmp/stretch.fritz.box
short.fritz.box

也许这个特性是在 Ansible 2.1 和 2.4 之间引入的。

关于ansible 委托(delegate)给其他主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37393428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com