Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 正在尝试获取一个任务,该任务要在playbook的输出中显示资源清册别名而不是主机名_Ansible_Ansible Inventory - Fatal编程技术网

Ansible 正在尝试获取一个任务,该任务要在playbook的输出中显示资源清册别名而不是主机名

Ansible 正在尝试获取一个任务,该任务要在playbook的输出中显示资源清册别名而不是主机名,ansible,ansible-inventory,Ansible,Ansible Inventory,我的playbook中有一项任务,即备份每个远程主机上的目录,如下所示: - name: Copy files to backup synchronize: src: /opt/myDir/ dest: /opt/myBackupDir/ archive: yes ignore_errors: no delegate_to: "{{ inventory_hostname }}" register: sync_out 我的清单是这样的:

我的playbook中有一项任务,即备份每个远程主机上的目录,如下所示:

- name: Copy files to backup
  synchronize:
    src: /opt/myDir/
    dest: /opt/myBackupDir/
    archive: yes
  ignore_errors: no
  delegate_to: "{{ inventory_hostname }}"
  register: sync_out
我的清单是这样的:

myWeb1   ansible_host=prodvm1  ansible_user=testuser
myApp1   ansible_host=prodvm2  ansible_user=testuser
myApp2   ansible_host=prodvm3  ansible_user=testuser
问题是显示的输出如下所示:

TASK [Copy files to backup] **********************************************************************************************************************************************************
ok: [myWeb1 -> prodvm1]
ok: [myApp1 -> prodvm2]
ok: [myApp2 -> prodvm3]
由于我正在委派任务,因此输出中显示了两个字段,用箭头标记分隔,但我希望它显示清单中指定的名称/别名,即myApp1/myWeb1,而不是箭头后面的实际主机名(prodvm*)(以避免显示主机名/IPs)

我试图使用debug模块来查看ansible将inventory_主机名计算为什么,但它给出了预期的结果,即myWeb1


在使用“委派到”模块时,我如何才能获得类似的行为?

对于Ansible来说,这真是令人讨厌的行为。授权总是“切中要害”

如果它真的让你恼火,你可以尝试禁用委派并使用
ansible\u host
技巧,但在我看来,委派更好(即使输出中有垃圾)

这是ansible_主机的技巧:

- name: Copy files to backup
  synchronize:
    src: /opt/myDir/
    dest: /opt/myBackupDir/
    archive: true
  var:
    ansible_host: '{{ hostvars[name_where_its_delegated].ansible_host }}'
  register: sync_out

我再次警告你,授权比这更好。

对于Ansible来说,这真是令人讨厌的行为。授权总是“切中要害”

如果它真的让你恼火,你可以尝试禁用委派并使用
ansible\u host
技巧,但在我看来,委派更好(即使输出中有垃圾)

这是ansible_主机的技巧:

- name: Copy files to backup
  synchronize:
    src: /opt/myDir/
    dest: /opt/myBackupDir/
    archive: true
  var:
    ansible_host: '{{ hostvars[name_where_its_delegated].ansible_host }}'
  register: sync_out
我再次警告你,授权比这更好