我知道可以添加具有以下任务的主机:
- name: Add new instance to host group
add_host:
hostname: '{{ item.public_ip }}'
groupname: "tag_Name_api_production"
with_items: ec2.instances
但我似乎无法找到从库存中删除主机的方法。有没有办法做到这一点?
答案 0 :(得分:4)
不幸的是,您似乎无法使用Ansible 2执行此操作。没有名为android.app.Fragment
或其他模块的模块。
但是,使用Ansible 2可以在游戏中刷新您的广告资源:
remove_host
另一个想法可能是预先过滤主机。尝试将它们添加到组中,然后最近在游戏中排除此组,例如:
- meta: refresh_inventory
答案 1 :(得分:0)
我们通常在剧本中使用多个hosts:
部分来做到这一点。
- hosts: auth:!ocp
roles:
- ntp-server
- hosts: all:!auth:!ocp
roles:
- ntp-client
这将通过!group
机制将主机组从考虑中删除。具体来说,在第一个程序段中,我们将删除!ocp
组,在第二个程序段中,我们将同时删除!auth
和!ocp
组。
答案 2 :(得分:0)
无法删除主机,但可以选择在新创建的组上运行。
- name: kubectl
hosts: localhost
gather_facts: false
tasks:
- add_host:
name: nextcloud
ansible_connection: kubectl
ansible_kubectl_context: cluster
ansible_kubectl_namespace: default
ansible_kubectl_pod: nextcloud-75fc7f5c6f-hxrq6
groupname: "pods"
# only run on pods
- hosts: pods
gather_facts: false
tasks:
- raw: pwd
register: raw_result
- debug:
msg: "{{raw_result.stdout_lines[0]}}"
答案 3 :(得分:0)
我刚刚遇到了同样的问题。我有针对给定剧本(我无法修改)运行 converge
的测试,然后我需要使用组中较小的一组主机运行相同的剧本。
我的解决方案是:
假设您想要缩小群组 target
。
target
组。target_addon
组。- hosts: target_addon
tasks:
- add_host:
name: '{{ inventory_hostname }}'
groups: [target]
- import_playbook: converge.yaml # uses group `target` with added hosts
# Removing hosts added from target_addon group from group target by reloading inventory
- hosts: localhost
tasks:
- meta: refresh_inventory
- import_playbook: converge.yaml # uses group `target` without added hosts