bodsch.docker

Ansible Role: docker

このロールは、dockerdを完全に設定し、インストールします。


このロールは独自のコレクションに移行しました。
今後は、ここでのプルリクエストや問題は受け付けないのでご了承ください。

今後は、リンクされたコレクションを使用してください!


要件と依存関係

Ansibleコレクション

ansible-galaxy collection install bodsch.core

または

ansible-galaxy collection install --requirements-file collections.yml

対応OS

テスト済み:

  • ArchLinux
  • ArtixLinux
  • Debian 基盤
    • Debian 10 / 11
    • Ubuntu 20.04 / 22.04

RedHat系システムは公式にはサポートされていません!動作する可能性はありますが、必ずしも動作するとは限りません。

ロール変数

以下の変数を使用して、dockerのインストールをカスタマイズできます:

## centosのdockerリポジトリチャンネルの有効状態を選択
docker_repo:
  channel:
    stable_enabled: true
    test_enabled: false
    nightly_enabled: false

## パッケージの状態(存在、非存在など)
docker_state: present

## dockerデーモンは起動時に開始すべきか?
docker_service:
  enable: true
  ## dockerサービスの名前
  name: docker

## docker-composeをインストールするバージョン
docker_compose: {}
# 例:
# docker_compose:
#   install: true
#   version: 1.29.2

docker_users: []

docker_plugins: []

docker_client_config: []

docker_config: {}

docker_config_diff: true

docker_python_packages: []

プロキシ関連

dockerデーモンは、外部接続にプロキシを使用するべきか?

docker_proxy:
  enabled: false
  ## 設定すべき環境変数のリスト(不要なものはコメントアウト)
  env:
    - "HTTP_PROXY=http://proxy.example.com:80/"
    - "HTTP_PROXY=https://proxy.example.com:443/"
    - "NO_PROXY=localhost,127.0.0.1,internalhub.example.com"

dockerクライアント設定

Docker Registryの認証を有効にします。
ここでは、異なるユーザーのための設定を作成することが可能です。
ここに保存されたパスワードはbase64エンコードされていますが、暗号化はされていません!
対応する文字列を作成する方法は以下の通りです。

echo "jenkins$robot:rubbel-die-katz-du-dummschwätzer1" | base64
amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
docker_client_config:
  ## クライアント設定を保存する場所
  - location: "/root/.docker/config.json"
    enabled: false
    auths:
      registry.gitfoo.tld:
        auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==

別の方法として、あなたの usernamepassword を入力することも可能です。
Ansibleモジュールはそれを有効なBase64エンコードされた文字列に変換します。

docker_client_config:
    ## クライアント設定を保存する場所
  - location: "/var/tmp/foo/config.json"
    enabled: false
    auths:
      "test.tld":
        username: "FOO-was-sonst"
        password: "ja-toll-schon-wieder-alles-scheisse!"

バージョン3.1.0以降、docker psまたはdocker imageの出力フォーマットを設定することも可能です。
ここでは、受け取るパラメータをリストとして定義する必要があります:

docker_client_config:
  ## クライアント設定を保存する場所
  - location: "/root/.docker/config.json"
    enabled: false
    auths:
      registry.gitfoo.tld:
        auth: amVua2luczpydWJiZWwtZGllLWthdHotZHUtZHVtbXNjaHfDpHR6ZXIxCg==
    formats:
      ps:
        - ".ID"
        - ".Names"
        - ".Status"
        - ".Labels"
        - ".RunningFor"
        - ".Ports"
      images:
        - ".ID"
        - ".Size"
        - ".Repository"
        - ".Tag"
        - ".CreatedAt"

dockerdのデフォルト設定オプション

設定参照

現在サポートされているオプション:

オプション 種類 デフォルト 説明
authorization_plugins list []
bip string - ネットワークブリッジのIPを指定
bridge string - コンテナをネットワークブリッジに接続
data_root string /var/lib/docker 永続Docker状態のルートディレクトリ
debug bool false デバッグモードを有効にする
... (その他のオプションは省略)

docker_config:
  log_driver: ""
  log_opts: {}
  max_concurrent_downloads: 3
  max_concurrent_uploads: 5
  debug: false
  log_level: ""
  bridge: ""
  bip: "172.16.0.1/24"
  # それ以降の設定

設定を作成する際、元のバージョンとの差分を作成および出力することも可能です。

そのためには、変数docker_config_difftrueに設定する必要があります。

他にも例はmoleculeテストにあります:

docker_usersオプション

既存のユーザーdockerグループに追加します。

さらに、setfaclを使ってdockerソケットへのアクセス権を設定しようとします。

docker_users:
  - jenkins

docker_pluginsオプション

カスタムプラグインをインストールして有効化します。

(現在はLokiのみテスト済み!)

docker_plugins:
  - alias: loki
    source: grafana/loki-docker-driver
    version: 2.7.0
    state: present

Pythonサポート

このロールのいくつかのモジュールは、適切なPython拡張を必要とします。
最近ではいくつかの互換性の問題があり、これによりこのポイントは設定可能です。

デフォルト設定は次のようになります:

docker_python_packages:
  - name: docker
  - name: requests
  - name: urllib3

こちらが他のpipモジュールのバージョンを指定した場合、これらのデフォルトを上書きすることが可能です。
各モジュールにバージョンを追加できます:

docker_python_packages:
  - name: docker
    version: 6.1.1

バージョンが指定された場合、正確にそのバージョンをインストールしようとします。
ただし、compare_directionを使用してこの動作に影響を与えることも可能です。

docker_python_packages:
  - name: docker
    compare_direction: ">"
    version: 6.0.0

または、versionsを使用して関連する範囲を定義することも可能です:

docker_python_packages:
  - name: docker
  - name: requests
    versions:
      - ">= 2.27.0"
      - "< 2.29.0"
  - name: urllib3
    versions:
      - ">= 1.26.0"
      - "< 2.0.0"

ローカルのcentosサーバーに最新のstableリリースをインストール

- hosts: localhost
  roles:
     - role: docker

ローカルのcentosサーバーに最新のedgeリリースをインストール

- hosts: localhost
  vars:
    docker_repo:
      channel:
        nightly_enabled: true
  roles:
     - role: docker

さまざまな変数を適用した高度なプレイブック

- hosts: localhost
  vars:
    docker_config:
      data_root: /opt/docker
      bip: 172.16.77.77/24
      log_driver: journald
      experimental: true
      hosts:
        - unix:///var/run/docker.sock
        - tcp://0.0.0.0:2376
      dns_search:
        - lab1.linuxctl.com
        - lab2.linuxctl.com
      log_opts:
        "max-size": 10m
        "max-file": "3"
        labels: molecule
        env: "os,customer"

  roles:
    - role: docker

作者とライセンス

  • 元のdockerロール作成者:

  • 修正:

    • Bodo Schulz

ライセンス

MIT

無料ソフトウェア、最高!

プロジェクトについて

install and configure docker on various linux systems

インストール
ansible-galaxy install bodsch.docker
ライセンス
mit
ダウンロード
11.8k
所有者
ex-developer (c, c++, php), ex-system administrator / engineer, keep-it-simple, monitoring, automation, system architect