--- # SPDX-license-identifier: Apache-2.0 ############################################################################## # Copyright (c) 2018 # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## - hosts: kube-node become: yes pre_tasks: - name: Load kud variables include_vars: file: kud-vars.yml roles: - role: andrewrothstein.go go_ver: "{{ go_version }}" when: multus_source_type == "source" environment: PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin/" tasks: - name: create multus binary folder file: state: directory path: "{{ item }}" with_items: - /opt/cni/bin - "{{ multus_dest }}" - name: getting source code block: - name: clone Multus repo git: repo: "{{ multus_url }}" dest: "{{ multus_dest }}" version: "{{ multus_version }}" force: yes - name: build multus source code command: ./build args: chdir: "{{ multus_dest }}" - name: copy multus binary to opt folder command: "mv {{ multus_dest }}/bin/multus /opt/cni/bin/multus" when: multus_source_type == "source" - name: getting binary block: - name: download Multus tarball get_url: url: "{{ multus_url }}" dest: "/tmp/multus.tar.gz" - name: extract multus source code unarchive: src: "/tmp/multus.tar.gz" dest: "{{ multus_dest }}" remote_src: yes - name: copy multus binary to opt folder command: "mv {{ multus_dest }}/multus-cni_{{ multus_version }}_linux_amd64/multus-cni /opt/cni/bin/multus" - file: path: /opt/cni/bin/multus owner: root group: root mode: 0755 when: multus_source_type == "tarball" - name: create multus configuration file blockinfile: marker: "" path: /etc/cni/net.d/00-multus.conf create: yes block: | { "type": "multus", "name": "multus-cni", "cniVersion": "0.3.1", "kubeconfig": "/etc/kubernetes/admin.conf", "delegates": [ { "type": "flannel", "cniVersion": "0.3.1", "masterplugin": true, "delegate": { "isDefaultGateway": true } } ] } - hosts: localhost pre_tasks: - name: Load kud variables include_vars: file: kud-vars.yml roles: - role: andrewrothstein.kubectl kubectl_ver: "v{{ kubectl_version }}" tasks: - name: define a CRD network object specification blockinfile: path: /tmp/crdnetwork.yml create: yes block: | apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: network-attachment-definitions.k8s.cni.cncf.io spec: group: k8s.cni.cncf.io version: v1 scope: Namespaced names: plural: network-attachment-definitions singular: network-attachment-definition kind: NetworkAttachmentDefinition shortNames: - net-attach-def validation: openAPIV3Schema: properties: spec: properties: config: type: string - name: create network objects shell: "/usr/local/bin/kubectl apply -f /tmp/crdnetwork.yml" ignore_errors: True