aboutsummaryrefslogtreecommitdiffstats
path: root/kud/deployment_infra/playbooks/configure-ovn4nfv.yml
blob: 2084c95d74c938919a8be8ba285216425f89831b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
---
# 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
##############################################################################
- import_playbook: configure-ovn.yml
- import_playbook: configure-multus.yml

- hosts: kube-master:kube-node
  environment:
    PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin/"
  pre_tasks:
    - name: Load kud variables
      include_vars:
        file: kud-vars.yml
  roles:
    - role: andrewrothstein.go
      go_ver: "{{ go_version }}"
  tasks:
    - name: clone ovn4nfv-k8s-plugin repo
      git:
        repo: "{{ ovn4nfv_url }}"
        dest: "{{ ovn4nfv_dest }}"
        version: "{{ ovn4nfv_version }}"
        force: yes
      when: ovn4nfv_source_type == "source"
    - name: clean ovn4nfvk8s left over files
      make:
        chdir: "{{ ovn4nfv_dest }}"
        target: clean
    - name: build ovn4nfvk8s-cni
      make:
        chdir: "{{ ovn4nfv_dest }}"
        target: ovn4nfvk8s-cni
      become: yes
      environment:
        GOPATH: "{{ go_path }}"
    - name: copy ovn4nfvk8s-cni to cni folder
      command: "mv {{ ovn4nfv_dest }}/ovn4nfvk8s-cni /opt/cni/bin/ovn4nfvk8s-cni"
      become: yes
    - name: create ovn4k8s config file
      become: yes
      blockinfile:
        path: /etc/openvswitch/ovn4nfv_k8s.conf
        create: yes
        block: |
          [logging]
          loglevel=5
          logfile=/var/log/openvswitch/ovn4k8s.log

          [cni]
          conf-dir=/etc/cni/net.d
          plugin=ovn4nfvk8s-cni

          [kubernetes]
          kubeconfig=/etc/kubernetes/admin.conf
    - name: create ovnkube logging directory
      file:
        path: /var/log/openvswitch
        state: directory

- hosts: kube-master
  environment:
    PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin/"
  become: yes
  tasks:
    - name: Load kud variables
      include_vars:
        file: kud-vars.yml
    - name: build ovn4nfvk8s
      make:
        chdir: "{{ ovn4nfv_dest }}"
        target: ovn4nfvk8s
      environment:
        GOPATH: "{{ go_path }}"
    - name: copy ovn4nfvk8s to /usr/bin folder
      command: "mv {{ ovn4nfv_dest }}/ovn4nfvk8s /usr/bin/ovn4nfvk8s"
    - name: create ovn4nfvk8s systemd service
      blockinfile:
        path: /etc/systemd/system/ovn4nfvk8s.service
        create: yes
        block: |
          [Unit]
          Description=OVN4NFV Kubernetes Daemon

          [Service]
          ExecStart=/usr/bin/ovn4nfvk8s \
                -k8s-kubeconfig=/etc/kubernetes/admin.conf

          [Install]
          WantedBy=multi-user.target
    - name: start ovn4nfvk8s systemd service
      service:
        name: ovn4nfvk8s
        state: started
        enabled: yes

- hosts: localhost
  pre_tasks:
    - name: Load kud variables
      include_vars:
        file: kud-vars.yml
  tasks:
    - name: define a CRD network object specification
      blockinfile:
        path: /tmp/ovn4nfvnetwork.yml
        create: yes
        block: |
          apiVersion: k8s.cni.cncf.io/v1
          kind: NetworkAttachmentDefinition
          metadata:
            name: ovn-networkobj
          spec:
            config: '{
               "cniVersion": "0.3.1",
               "name": "ovn4nfv-k8s-plugin",
               "type": "ovn4nfvk8s-cni"
            }'

    - name: create network objects
      shell: "/usr/local/bin/kubectl apply -f /tmp/ovn4nfvnetwork.yml"
      ignore_errors: True