notmycloud.podman_systemd

Ansible Podman_systemd

説明

PodmanのSystemdユニットをシステムユーザーとルートレスユーザー向けに設定します。

インストール

以下のロールも必要です。依存関係として追加すると、実行時に失敗します。

  • linuxhq.sysctl
  • notmycloud.yaml2ini
  • notmycloud.systemd_unit

重要: tomlというPythonパッケージのインストールが必要です。pipを使ってインストールしてください。

使い方

このロールが正しく動作するために、以下の変数を提供してください。 PODMAN_SYSTEMD_INSTALL_COCKPITはCockpitをPodmanサポート付きでインストールします。 PODMAN_SYSTEMD_ALLOW_LOWEST_PORTは、特権のないユーザーがバインドできる最も低いポートを指定します。1024以下の低ポートは「安全」とされ、信頼されたユーザーに制限されるべきだという議論があります。このサーバーがマルチテナントの場合、この変数はスキップすることを推奨します。ただし、このサーバーを完全に管理し、サービスごとにユーザーを設定する場合は、このオプションが役立つことがあります。私の意見では、マルチテナントでないサーバーの場合、0に設定できます。 PODMAN_SYSTEMD_ALLOW_PINGは、特権のないユーザーがpingを実行できるようにします。 PODMAN_SYSTEMD_DEPLOYには、Podmanの構成の大部分が含まれています。Systemdユニットを設定する各ユーザーのキーを作成してください。

PODMAN_SYSTEMD_DEPLOY:
  root:
    etc...
  user1:
    etc...
  user2:
    etc...

ユーザー設定

ルートはデフォルトの /etc/systemd/system ディレクトリに設定され、ユーザーは ~/.config/system/user ディレクトリに設定されます。この例では、特権のないユーザーの設定を行います。

debug_log: bool # タスクとデバッグログを有効にするにはtrueに設定
PODMAN_SYSTEMD_DEPLOY:
  myuser:
    config:
      storage:
        storage:
          driver: "overlay"
        # storage.conf用のINI形式で書き込まれるkey:valueペア。ユーザーまたはルートの場合、適切なディレクトリに配置されます。
        # key:valueペアは、notmycloud.yaml2iniロールで指定された形式に従う必要があります。
      containers:
        engine:
          network_cmd_options:
            - "allow_host_loopback=true"
            - "enable_ipv6=true"
          env: 
            - "TMPDIR=$HOME/.cache/tmp/"
        # containers.conf用のTOML形式で書き込まれるkey:valueペア。ユーザーまたはルートの場合、適切なディレクトリに配置されます。
      registries:
        unqualified-search-registries:
          - "docker.io"
          # - "quay.io"
          # - "registry.access.redhat.com"
        registry:
          # - prefix: "docker.io"
          #   location: "127.0.0.1:5000"
          #   insecure: true
          # 2020年11月、Dockerはイメージプルに制限をかけました。これらの制限に達しないように、常にgoogleミラーを使用して、適格および不適格の `docker.io` イメージをテストしてください。
          # 参考: https://cloud.google.com/container-registry/docs/pulling-cached-images
        registry.mirror:
          - location: "https://mirror.gcr.io"
        # registries.conf用のTOML形式で書き込まれるkey:valueペア。ユーザーまたはルートの場合、適切なディレクトリに配置されます。
      login: # containers.podman.podman_loginモジュールのドキュメントを参照
        - registry: registry.mydomain.com
          username: registryuser
          password: super$3(r37Password
    systemd:
      enable_socket: # デフォルトはFalse、ユーザーまたはルートの場合、システム全体にPodman APIソケットを有効にします。
      containers:
        CONTAINERNAME: # このコンテナに希望する名前を置き換えてください。この名前はSystemdユニットファイルにも使用されます。
          podman_options:
            image:
            network: # ネットワーク文字列、デフォルトはslirp4netns:allow_host_loopback=true,enable_ipv6=true
            replace: # bool
            restart: # "always"|"no"|"on-failure"|"unless-stopped" デフォルトはno
            remove: # デフォルトはyes
            stop_timeout: # デフォルトは60秒
            log_driver: # デフォルトはPassthrough、これによりジャーナル内のログを表示できます。
            healthcheck:
              cmd:
              interval:
              retries:
              delay:
              timeout:
            environment: # キーと値のペアの配列
              key: "value"
            ports: # 0.0.0.0:hostport:containerport
            volumes: 
              - host:
                container:
                options:
                type: # file/directory
            labels: # キーと値のペアの配列
              key: "value"
            other_options: # podman runに渡す他のオプションの文字列または配列
          service_options: # notmycloud.systemd_unit変数を参照して、UNIT_NAMEと同等の深さ
      pods:
        PODNAME: # このポッドに希望する名前を置き換えてください。この名前は関連するコンテナの接頭辞にも使用されます。
          pod_service_options: # notmycloud.systemd_unit変数を参照して、UNIT_NAMEと同等の深さ
          CONTAINERNAME:
            # 上記のPODMAN_SYSTEMD_DEPLOY.USERNAME.systemd.containers.CONTAINERNAMEの構文に従ってください

その他の注意事項

Podmanソケット

ルートのソケットは /run/podman/podman.sock で有効になります。
ルートレスのソケットは /run/user/$UID/podman/podman.sock で有効になります。

コンテナ構成ディレクトリ

構成のルートには %E/%N/ を使用することをおすすめします。
これにより構成が ~/.config/{service_name}/ または /etc/{service_name}/ に保存されます。
複数の構成ディレクトリが必要なコンテナには、%E/%N/config1/%E/%N/config2/ などを使用します。

推奨その他のオプション

--init コンテナ内でinitを実行し、シグナルを転送しプロセスを回収します。詳細はcontainers/podman#1670を参照してください。
--cap-drop=all すべての機能をドロップします。コンテナが正常に動作するために機能を追加する必要があることが多いです。
--security-opt=no-new-privileges コンテナプロセスが追加の特権を得ないようにします。詳細はドキュメントを参照してください。
--userns=keep-id コンテナユーザーをホストユーザーIDにマッピングします。

サポート

サポートが必要な場合は、問題を報告し、以下の項目を提供してください。

  • 問題を再現するためのサンプルタスク/プレイブック
  • 作成された結果ファイル
プロジェクトについて

Configure Podman Systemd Units for system and rootless users.

インストール
ansible-galaxy install notmycloud.podman_systemd
ライセンス
mit
ダウンロード
234
所有者