根据组中的计算机名称运行ansible任务

Dor*_*lds 3 ansible

我只想在具有特定机器主机名的情况下使用ansible为文件创建符号链接。我知道inventory_hostname会给我主机名,但是when: inventory_hostname in group['machines']我可以执行以下操作: 这样我可以在该组中的所有计算机上运行它吗?然后,我想根据机器名称进行符号链接。所以:

file:
    src: {{ ansible_hostname }}.png
    dest: anything.png
Run Code Online (Sandbox Code Playgroud)

ili*_*-sp 5

when: inventory_hostname in group['machines']根本不需要条件。

您只需要在上执行此任务,hosts: machines就可以创建到machines组中所有主机的符号链接。

更新

如果您仍然想要这样做,并朝着a运行剧本,big_group但只有在host成为的一部分时才采取行动small_group,以下是可以做到的事情:

主机文件:

[big_group]
greenhat
localhost

[small_group]
localhost
Run Code Online (Sandbox Code Playgroud)

剧本:

---
- hosts: big_group
  # connection: local
  gather_facts: false
  vars:

  tasks:
  - name: print if machine is eligible for symbolic
    debug:
      msg: "machine: {{ inventory_hostname }} is eligible for symbolic link!"
    when: inventory_hostname in groups['small_group']
Run Code Online (Sandbox Code Playgroud)

结果:

PLAY [big_group] ****************************************************************************************************************************************************************************************************

TASK [print if machine is eligible for symbolic] ********************************************************************************************************************************************************************
skipping: [greenhat]
ok: [localhost] => {
    "msg": "machine: localhost is eligible for symbolic link!"
}

PLAY RECAP **********************************************************************************************************************************************************************************************************
greenhat                   : ok=0    changed=0    unreachable=0    failed=0   
localhost                  : ok=1    changed=0    unreachable=0    failed=0 
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你