githubixx.cni
ansible-role-cni
这是一个用于安装 CNI - 容器网络接口 的 Ansible 角色。CNI(容器网络接口)是云原生计算基金会的一个项目,它包含了一份规范和库,用于编写插件以在 Linux 容器中配置网络接口,并支持多种插件。CNI 仅关注容器的网络连接以及在删除容器时释放已分配的资源。正因如此,CNI 具有广泛的支持,其规范也易于实现。
更新日志
变更历史:
查看完整 更新日志
近期变更:
0.7.0+1.4.0
- 添加对 Ubuntu
24.04
的支持
0.6.0+1.4.0
- 将
cni_version
更新为1.4.0
0.5.1+1.3.0
- 调整解压目录权限
- 为
cni_tmp_directory
添加子路径,以避免父目录权限的变化。如果cni_tmp_directory
设置为/tmp
,则解压操作会改变该目录的模式。添加静态子路径到cni_tmp_directory
可以避免此问题。
0.5.0+1.3.0
- 将
cni_version
更新为1.3.0
- 添加 Molecule 验证步骤
- 移除对 Ubuntu
18.04
的支持(已达到支持结束) - 添加对 Ubuntu
22.04
的支持 - 添加
dummy
和tap
CNI 二进制文件 - 重命名 Molecule 的
kvm
场景为default
/ 将memory
和cpus
选项移动到 boxes
角色变量
# CNI 插件版本
cni_version: "1.4.0"
# CNI 二进制文件目录
cni_bin_directory: "/opt/cni/bin"
# CNI 配置目录
cni_conf_directory: "/etc/cni/net.d"
# 存储压缩文件的目录
cni_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"
# "CNI" 文件/目录的所有者/组。如果变量未设置,
# 生成的二进制文件将归当前用户所有。
cni_owner: "root"
cni_group: "root"
# 指定 "CNI" 二进制文件的权限
cni_binary_mode: "0755"
# 操作系统
# 可选项: "linux", "windows"
cni_os: "linux"
# "CNI" 运行的处理器架构。
# 其他可能的值: "arm", "arm64", "mips64le", "ppc64le", "s390x"
cni_arch: "amd64"
# 压缩文件的名称
cni_archive: "cni-plugins-{{ cni_os }}-{{ cni_arch }}-v{{ cni_version }}.tgz"
# CNI 下载 URL(通常不需要更改)
cni_url: "https://github.com/containernetworking/plugins/releases/download/v{{ cni_version }}/{{ cni_archive }}"
# 在 "CNI" 二进制文件或配置更改后重启 "kubelet" 服务。
# 此处理程序期望有一个名为 "kubelet.service" 的 systemd 服务。
cni_restart_kubelet: false
待办事项
- 分发 CNI 网络配置文件(对于 Cilium 这不是必要的,因为 Cilium 会生成 CNI 文件)
示例剧本
- hosts: your-host
roles:
- githubixx.cni
测试
该角色具有一个小型测试环境,使用 Molecule、libvirt (vagrant-libvirt) 和 QEMU/KVM 创建。请参见我的博客文章 使用 Molecule、libvirt (vagrant-libvirt) 和 QEMU/KVM 测试 Ansible 角色 来了解如何设置。测试配置在 这里。
然后可以执行 molecule:
molecule converge
这将设置几个运行不同受支持的 Linux 操作系统的虚拟机 (VM),并安装 CNI
。
运行一些测试:
molecule verify
清理运行:
molecule destroy
许可证
GNU 通用公共许可证 第 3 版
作者信息
关于项目
Ansible role to install CNI (Container Network Interface)
安装
ansible-galaxy install githubixx.cni
许可证
Unknown
下载
216
拥有者
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)