このチュートリアルでは、Ansibleと人気のあるコミュニティメンテナンスのAnsibleロールgeerlingguy.docker
を使用して、複数のホストにDockerをインストールする手順を説明します。
前提条件
始める前に、以下を確認してください:
- コントロールマシンにAnsibleがインストールされていること。 (インストールガイド)
- 対象ホストへのSSHアクセスが設定されていること。
- 対象ホストにsudo権限(またはrootアクセス)を持つユーザーがいること。
ステップ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
host1
とhost2
を実際のターゲットホスト名または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を一貫して信頼性高くインストールし、インフラ管理を簡素化できます。