--- # 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 krd variables include_vars: file: krd-vars.yml roles: - { role: andrewrothstein.go, 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_v{{ multus_version }}_linux_amd64/multus-cni /opt/cni/bin/multus" 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", "kubeconfig": "/etc/kubernetes/admin.conf", "delegates": [ { "type": "flannel", "masterplugin": true, "delegate": { "isDefaultGateway": true } } ] } - hosts: localhost roles: - andrewrothstein.kubectl 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 must match the spec fields below, and be in the form: . name: networks.kubernetes.cni.cncf.io spec: # group name to use for REST API: /apis// group: kubernetes.cni.cncf.io # version name to use for REST API: /apis// version: v1 # either Namespaced or Cluster scope: Namespaced names: # plural name to be used in the URL: /apis/// plural: networks # singular name to be used as an alias on the CLI and for display singular: network # kind is normally the CamelCased singular type. Your resource manifests use this. kind: Network # shortNames allow shorter string to match your resource on the CLI shortNames: - net - name: create network objects shell: "/usr/local/bin/kubectl apply -f /tmp/crdnetwork.yml" ignore_errors: True