|
| 1 | +- block: |
| 2 | + - name: 在deploy 节点创建相关目录 |
| 3 | + file: name=/opt/kube/kube-ovn state=directory |
| 4 | + |
| 5 | + - name: 配置 kube-ovn.yaml 文件 |
| 6 | + template: src=kube-ovn.yaml.j2 dest=/opt/kube/kube-ovn/kube-ovn.yaml |
| 7 | + |
| 8 | + - name: 配置 ovn.yaml 文件 |
| 9 | + template: src=ovn.yaml.j2 dest=/opt/kube/kube-ovn/ovn.yaml |
| 10 | + |
| 11 | + delegate_to: "{{ groups.deploy[0] }}" |
| 12 | + run_once: true |
| 13 | + |
| 14 | +- name: 创建相关目录 |
| 15 | + file: name={{ item }} state=directory |
| 16 | + with_items: |
| 17 | + - /etc/cni/net.d |
| 18 | + - /opt/kube/images |
| 19 | + |
| 20 | +# 【可选】推送离线镜像,可以忽略执行错误 |
| 21 | +- block: |
| 22 | + - name: 检查是否已下载离线kube_ovn镜像 |
| 23 | + command: "ls {{ base_dir }}/down" |
| 24 | + register: download_info |
| 25 | + connection: local |
| 26 | + run_once: true |
| 27 | + |
| 28 | + - name: 尝试推送离线docker 镜像(若执行失败,可忽略) |
| 29 | + copy: src={{ base_dir }}/down/{{ item }} dest=/opt/kube/images/{{ item }} |
| 30 | + when: 'item in download_info.stdout' |
| 31 | + with_items: |
| 32 | + - "pause_3.1.tar" |
| 33 | + - "{{ kube_ovn_offline }}" |
| 34 | + ignore_errors: true |
| 35 | + |
| 36 | + - name: 获取kube_ovn离线镜像推送情况 |
| 37 | + command: "ls /opt/kube/images" |
| 38 | + register: image_info |
| 39 | + |
| 40 | + # 如果目录下有离线镜像,就把它导入到node节点上 |
| 41 | + - name: 导入 kube_ovn的离线镜像(若执行失败,可忽略) |
| 42 | + shell: "{{ bin_dir }}/docker load -i /opt/kube/images/{{ item }}" |
| 43 | + with_items: |
| 44 | + - "pause_3.1.tar" |
| 45 | + - "{{ kube_ovn_offline }}" |
| 46 | + ignore_errors: true |
| 47 | + when: "item in image_info.stdout and CONTAINER_RUNTIME == 'docker'" |
| 48 | + |
| 49 | + - name: 导入 kube_ovn的离线镜像(若执行失败,可忽略) |
| 50 | + shell: "{{ bin_dir }}/ctr -n=k8s.io images import /opt/kube/images/{{ item }}" |
| 51 | + with_items: |
| 52 | + - "pause_3.1.tar" |
| 53 | + - "{{ kube_ovn_offline }}" |
| 54 | + ignore_errors: true |
| 55 | + when: "item in image_info.stdout and CONTAINER_RUNTIME == 'containerd'" |
| 56 | + |
| 57 | +# 只需单节点执行一次 |
| 58 | +- name: 运行 kube-ovn网络 |
| 59 | + shell: "{{ bin_dir }}/kubectl label node {{ OVN_DB_NODE }} kube-ovn/role=master --overwrite && \ |
| 60 | + {{ bin_dir }}/kubectl apply -f /opt/kube/kube-ovn/ovn.yaml && sleep 5 && \ |
| 61 | + {{ bin_dir }}/kubectl apply -f /opt/kube/kube-ovn/kube-ovn.yaml" |
| 62 | + delegate_to: "{{ groups.deploy[0] }}" |
| 63 | + run_once: true |
| 64 | + |
| 65 | +# 删除原有cni配置 |
| 66 | +- name: 删除默认cni配置 |
| 67 | + file: path=/etc/cni/net.d/10-default.conf state=absent |
| 68 | + |
| 69 | +# 等待网络插件部署成功,视下载镜像速度而定 |
| 70 | +- name: 轮询等待kube-ovn 运行,视下载镜像速度而定 |
| 71 | + shell: "{{ bin_dir }}/kubectl get pod -n kube-ovn -o wide|grep 'kube-ovn-cni'|grep ' {{ inventory_hostname }} '|awk '{print $3}'" |
| 72 | + register: pod_status |
| 73 | + until: pod_status.stdout == "Running" |
| 74 | + delegate_to: "{{ groups.deploy[0] }}" |
| 75 | + retries: 15 |
| 76 | + delay: 8 |
| 77 | + ignore_errors: true |
| 78 | + |
0 commit comments