githubixx.containerd

ansible-role-containerd

Ansible角色用于安装containerdcontainerd 是一个行业标准的容器运行时,强调简单性、稳健性和可移植性。它作为Linux和Windows的守护进程可用,能够管理主机系统的完整容器生命周期:图像传输和存储、容器执行与监控、低级存储和网络连接等。

更改日志

更改历史:

查看完整的CHANGELOG

最近的更改:

0.13.1+1.7.20

  • 更新
    • 更新containerdv1.7.20

0.13.0+1.7.19

  • 特性

    • 增加对Ubuntu 24.04的支持
  • 更新

    • 更新containerdv1.7.19

安装

  • 直接从Github下载(克隆之前切换到Ansible角色目录): git clone https://github.com/githubixx/ansible-role-containerd.git githubixx.containerd

  • 通过ansible-galaxy命令直接从Ansible Galaxy下载: ansible-galaxy install role githubixx.containerd

  • 创建一个requirements.yml文件,内容如下(这将从Github下载该角色),然后使用 ansible-galaxy role install -r requirements.yml进行安装:

---
roles:
  - name: githubixx.containerd
    src: https://github.com/githubixx/ansible-role-containerd.git
    version: 0.13.1+1.7.20

角色变量

# 目前只支持"base"值
containerd_flavor: "base"

# 要安装的containerd版本
containerd_version: "1.7.19"

# 存储"containerd"二进制文件的目录
containerd_binary_directory: "/usr/local/bin"

# containerd配置文件的位置
containerd_config_directory: "/etc/containerd"

# 存储归档文件的目录
containerd_tmp_directory: "{{ lookup('env', 'TMPDIR') | default('/tmp', true) }}"

# "containerd"二进制文件的所有者/组。如果未设置变量,
# 结果二进制文件将属于当前用户。
containerd_owner: "root"
containerd_group: "root"

# 指定"containerd"二进制文件的权限
containerd_binary_mode: "0755"

# 操作系统
# 可能的选项:"linux","windows"
containerd_os: "linux"

# "containerd"应该运行的处理器架构。
# 其他可能的值:"arm64"、"arm"
containerd_arch: "amd64"

# 归档文件名
containerd_archive_base: "containerd-{{ containerd_version }}-{{ containerd_os }}-{{ containerd_arch }}.tar.gz"

# containerd下载URL(通常不需要更改)
containerd_url: "https://github.com/containerd/containerd/releases/download/v{{ containerd_version }}/{{ containerd_archive_base }}"

# containerd systemd服务设置
containerd_service_settings:
  "ExecStartPre": "{{ modprobe_location }} overlay"
  "ExecStart": "{{ containerd_binary_directory }}/containerd"
  "Restart": "always"
  "RestartSec": "5"
  "Type": "notify"
  "Delegate": "yes"
  "KillMode": "process"
  "OOMScoreAdjust": "-999"
  "LimitNOFILE": "1048576"
  "LimitNPROC": "infinity"
  "LimitCORE": "infinity"

# "containerd"配置文件的内容。以下设置与默认"containerd"设置不同。
#
# 可以使用此命令生成默认的"containerd"配置:
#
# containerd config default
#
# 与默认配置的区别:
#
# - 配置文件包含一些角色变量,将在处理配置模板时替换。
# - 在'plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options'中,
#   设置"SystemdCgroup"为"true"而不是"false"。这对于
#   Kubernetes等是相关的。另请参阅:
#   https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd)
#
containerd_config: |
  version = 2
  [plugins]
    [plugins."io.containerd.grpc.v1.cri"]
      sandbox_image = "registry.k8s.io/pause:3.8"
      [plugins."io.containerd.grpc.v1.cri".cni]
        bin_dir = "/opt/cni/bin"
        conf_dir = "/etc/cni/net.d"
      [plugins."io.containerd.grpc.v1.cri".containerd]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
            runtime_type = "io.containerd.runc.v2"
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
              BinaryName = "/usr/local/sbin/runc"
              SystemdCgroup = true
  [stream_processors]
    [stream_processors."io.containerd.ocicrypt.decoder.v1.tar"]
      args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
      env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]
    [stream_processors."io.containerd.ocicrypt.decoder.v1.tar.gzip"]
      args = ["--decryption-keys-path", "{{ containerd_config_directory }}/ocicrypt/keys"]
      env = ["OCICRYPT_KEYPROVIDER_CONFIG={{ containerd_config_directory }}/ocicrypt/ocicrypt_keyprovider.conf"]

依赖关系

可选依赖项(例如,Kubernetes所需):

当然,你也可以使用其他任何runcCNI角色。

示例剧本

- hosts: your-host
  roles:
    - githubixx.containerd

更多示例请参考Molecule测试

测试

此角色具有使用Molecule、libvirt(vagrant-libvirt)和QEMU/KVM创建的小型测试设置。请查看我的博客文章使用Molecule、libvirt(vagrant-libvirt)和QEMU/KVM测试Ansible角色了解如何设置。测试配置在这里

之后可以执行molecule:

molecule converge

这将设置一些运行不同支持的Linux操作系统的虚拟机(VM),并安装containerdrunc和Kubernetes所需的CNI插件。

还包括了一个小的验证步骤。它会拉取一个nginx容器并运行,以确保containerd正确设置并能够运行容器映像:

molecule verify

要清理,请运行

molecule destroy

许可证

GNU通用公共许可证第3版

作者信息

http://www.tauceti.blog

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