このチュートリアルでは、Ansibleと人気のあるコミュニティメンテナンスのAnsibleロールgeerlingguy.dockerを使用して、複数のホストにDockerをインストールする手順を説明します。


前提条件

始める前に、以下を確認してください:


ステップ1: Ansibleプレイブックの作成

docker-playbook.ymlという名前のファイルを作成します:

- name: Install Docker using geerlingguy.docker role
  hosts: all
  become: yes  # 権限を昇格させるためにsudoを使用
  gather_facts: yes

  roles:
    - geerlingguy.docker

このシンプルなプレイブックは、指定されたすべてのホストにDockerインストールロールを適用します。


ステップ2: ロールとコレクションの依存関係を定義

外部のAnsibleロールとコレクションの依存関係を明確に定義するために、requirements.ymlという名前のファイルを作成します:

roles:
  - name: geerlingguy.docker
    version: 7.4.1  # 一貫性のためにバージョンを指定

collections:
  - name: community.docker
    version: ">=3.0.0"

バージョンを指定することで、再現可能で一貫したデプロイメントを保証します。


ステップ3: 必要なロールとコレクションのインストール

requirements.ymlに指定された依存関係をインストールするために、以下のコマンドを実行します:

ansible-galaxy install -r requirements.yml

このコマンドは、ロールとコレクションの両方を取得してインストールします。


ステップ4: プレイブックの実行

Ansibleのコマンドラインインターフェースを使用してプレイブックを実行します。簡単のためにインベントリをインラインで指定できます:

ansible-playbook docker-playbook.yml -i "host1,host2," -u root

host1host2を実際のターゲットホスト名またはIPアドレスに置き換えてください。

注意:

  • インラインインベントリの末尾のカンマは必須です。
  • オプション-u rootは、Ansibleがホストに接続するために使用するユーザーを設定します。SSH設定に基づいて変更してください。

Dockerインストールの確認

プレイブックを実行した後、各ホストでDockerのインストールを確認するには、以下のコマンドを実行します:

ssh root@host1 docker --version
ssh root@host2 docker --version

次のような出力が表示されるはずです:

Docker version 26.1.3, build XXXXXXX

結論

この構造化された方法に従うことで、Ansibleを効率的に活用して、複数のサーバーにわたってDockerを一貫して信頼性高くインストールし、インフラ管理を簡素化できます。