Ansible 如何在单个或短列表的主机上运行Playbook,并从该主机不属于的资源清册组中获取内容?

Ansible 如何在单个或短列表的主机上运行Playbook,并从该主机不属于的资源清册组中获取内容?,ansible,ansible-inventory,Ansible,Ansible Inventory,我确实有一个剧本,它可以播放一个特定的组,并将该组的所有主机放到另一个主机上的命令中 更准确地说。 在一个或多个客户端上,我的清单文件中的主机组oldserver中的所有主机必须位于/etc/ssh.conf中 任务看起来像 --- - name: echo Old Servers debug: var: groups["oldservers"] - name: create ssh_conf_for_old_server blockinfile:

我确实有一个剧本,它可以播放一个特定的组,并将该组的所有主机放到另一个主机上的命令中

更准确地说。 在一个或多个客户端上,我的清单文件中的主机组oldserver中的所有主机必须位于/etc/ssh.conf中

任务看起来像

---

- name: echo Old Servers
  debug:
    var: groups["oldservers"]

- name: create ssh_conf_for_old_server 
  blockinfile:
    path: /etc/ssh/ssh_config
    backup: True
    block: |
      Host {{ groups["oldservers"]|join(' ') }}
        user admin
        KexAlgorithms +diffie-hellman-group1-sha1
        HostKeyAlgorithms +ssh-dss
        Ciphers +aes128-cbc
这应该在不是组服务器成员的客户端上执行

主机文件(资源清册):

我的执行行是ansible playbook-i 192.168.200.1,-u ansible./createServerList.yml

我想我应该做得有点不同。不是吗

结果应该是。。。首先输出所有旧服务器(调试)
除了将这些旧服务器的块写入/etc/ssh/ssh_config

命令
ansible playbook-i 192.168.200.1-u ansible./createServerList.yml
,您直接将ip地址作为库存传递。因此,Ansible不知道定义了主机组的清单文件。因此,您可以试着运行这个
ansible playbook-i-u ansible./createServerList.yml

然后,如果您必须限制playbook仅运行某些主机或组,请执行以下操作:

  • ansible剧本-i-u ansible./createServerList.yml--limit“192.168.200.1192.168.200.2”

  • ansible playbook-i-u ansible./createServerList.yml——限制客户端

我不确定我是否完全理解您的问题或是否正确,但您可能正在寻找和。希望编辑能让事情变得更清楚
[clients]
192.168.200.1
192.168.200.2

[oldservers]
192.168.201.1
192.168.201.2