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 的支持
  • 添加 dummytap CNI 二进制文件
  • 重命名 Molecule 的 kvm 场景为 default / 将 memorycpus 选项移动到 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 版

作者信息

http://www.tauceti.blog

安装
ansible-galaxy install githubixx.cni
许可证
Unknown
下载
216
拥有者
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)