--- - name: Multus | Copy manifest files copy: src: "{{ item.file }}" dest: "{{ kube_config_dir }}" mode: 0644 with_items: - {name: multus-crd, file: multus-crd.yml, type: customresourcedefinition} - {name: multus-serviceaccount, file: multus-serviceaccount.yml, type: serviceaccount} - {name: multus-clusterrole, file: multus-clusterrole.yml, type: clusterrole} - {name: multus-clusterrolebinding, file: multus-clusterrolebinding.yml, type: clusterrolebinding} register: multus_manifest_1 when: inventory_hostname == groups['kube_control_plane'][0] - name: Multus | Check container engine type set_fact: container_manager_types: "{{ ansible_play_hosts_all|map('extract', hostvars, ['container_manager'])|list|unique }}" - name: Multus | Copy manifest templates template: src: multus-daemonset.yml.j2 dest: "{{ kube_config_dir }}/{{ item.file }}" with_items: - {name: multus-daemonset-containerd, file: multus-daemonset-containerd.yml, type: daemonset, engine: containerd } - {name: multus-daemonset-docker, file: multus-daemonset-docker.yml, type: daemonset, engine: docker } - {name: multus-daemonset-crio, file: multus-daemonset-crio.yml, type: daemonset, engine: crio } register: multus_manifest_2 vars: query: "*|[?container_manager=='{{ container_manager }}']|[0].inventory_hostname" vars_from_node: "{{ hostvars|json_query(query) }}" delegate_to: "{{ groups['kube_control_plane'][0] }}" when: - item.engine in container_manager_types - hostvars[inventory_hostname].container_manager == item.engine - inventory_hostname == vars_from_node