githubixx.containerd

ansible-role-containerd

Ansible ロールで containerd をインストールします。containerd は、シンプルさ、堅牢性、ポータビリティに重点を置いた業界標準のコンテナランタイムです。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" が "false" ではなく "true" に設定されています。これは
#   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 を使用して作成された小さなテストセットアップがあります。セットアップ方法は私のブログ記事 Testing Ansible roles with Molecule, libvirt (vagrant-libvirt) and QEMU/KVM をご覧ください。テスト構成は こちら にあります。

その後、molecule を実行することができます:

molecule converge

これにより、異なるサポートされている Linux オペレーティングシステムを持ついくつかの仮想マシン(VM)がセットアップされ、containerdrunc、および Kubernetes などに必要な CNI プラグインがインストールされます。

小さな検証ステップも含まれています。nginx コンテナをプルして実行し、containerd が正しくセットアップされており、コンテナイメージを実行できることを確認します:

molecule verify

クリーンアップするには、次のコマンドを実行します:

molecule destroy

ライセンス

GNU 一般公有ライセンスバージョン 3

著者情報

http://www.tauceti.blog

プロジェクトについて

Ansible role to install containerd

インストール
ansible-galaxy install githubixx.containerd
ライセンス
Unknown
ダウンロード
2.3k
所有者
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)