Ansible インベントリでホストの接続方法を指定する方法

AnsibleBeginner
オンラインで実践に進む

はじめに

Ansible は、サーバーやアプリケーションを容易に管理できる強力なインフラストラクチャ自動化ツールです。このチュートリアルでは、Ansible インベントリでホストの接続方法を指定する方法を学び、インフラストラクチャの効率的で信頼性の高いリモート管理を実現します。

Ansible インベントリの理解

Ansible は、複数のホストを同時に管理および設定できる強力な自動化ツールです。Ansible の中心となるのがインベントリであり、管理対象のホストを定義するファイルまたはファイル群です。

Ansible インベントリは、INI、YAML、または JSON などのさまざまな形式で定義できます。最も一般的な形式は INI 形式で、シンプルな構文を使用してホストとその関連変数を定義します。

以下は、INI 形式の Ansible インベントリファイルの例です。

[webservers]
web1.example.com
web2.example.com

[databases]
db1.example.com
db2.example.com

[all:vars]
ansible_user=ubuntu
ansible_ssh_private_key_file=/path/to/your/ssh/key.pem

この例では、インベントリは webserversdatabases の 2 つのグループを定義しています。各グループには 2 つのホストが含まれています。[all:vars] セクションは、SSH ユーザーや秘密鍵ファイルなど、すべてのホストに適用されるグローバル変数を定義しています。

Ansible は、SSH、WinRM、ローカルなど、インベントリ内のホストと対話するためのさまざまな接続方法をサポートしています。接続方法は、インベントリとホストの設定によって決定されます。

接続方法の詳細については、次のセクションに進みましょう。

ホスト接続方法の設定

Ansible は、インベントリ内のホストと対話するためのさまざまな接続方法をサポートしています。最も一般的な接続方法は以下のとおりです。

  1. SSH (デフォルト): Ansible は SSH プロトコルを使用してホストに接続します。これはデフォルトの接続方法であり、ほとんどの Linux/Unix ベースのシステムに適しています。

  2. WinRM: Ansible は Windows Remote Management (WinRM) プロトコルを使用して Windows ホストに接続できます。

  3. ローカル: Ansible は、リモートホストに接続せずに、制御ノード (Ansible がインストールされているマシン) でタスクを実行できます。

Ansible インベントリでホストの接続方法を設定するには、ansible_connection 変数を使用できます。以下に例を示します。

[webservers]
web1.example.com ansible_connection=ssh
web2.example.com ansible_connection=winrm

[databases]
db1.example.com ansible_connection=local

この例では、webservers グループは SSH 接続方法を使用し、web2.example.com ホストは WinRM 接続方法を使用し、databases グループはローカル接続方法を使用しています。

インベントリ内のすべてのホストのデフォルト接続方法を設定するには、[all:vars] セクションで ansible_connection 変数を定義します。

[all:vars]
ansible_connection=ssh

これにより、特定のホストで上書きされない限り、インベントリ内のすべてのホストに SSH 接続方法が適用されます。

さらに、SSH ユーザー、秘密鍵ファイル、ポートなどの接続関連の変数を設定することもできます。以下に例を示します。

[webservers]
web1.example.com ansible_user=ubuntu ansible_ssh_private_key_file=/path/to/your/ssh/key.pem
web2.example.com ansible_user=administrator ansible_password=MyPassword123

[databases]
db1.example.com ansible_connection=local

この例では、webservers グループは特定のユーザーと秘密鍵ファイルを使用して SSH 接続方法を使用し、web2.example.com ホストはユーザー名とパスワードを使用して WinRM 接続方法を使用しています。

Ansible インベントリで接続方法を設定する方法を理解することで、Ansible が管理対象のホストと効果的に通信できるようになります。

接続方法の実践的な適用

Ansible で利用可能なさまざまな接続方法を理解したら、実際にそれらをどのように適用するかを見ていきましょう。

SSH 接続方法

SSH 接続方法は、Ansible で最も一般的かつ広く使用されている方法です。SSH 接続方法を使用するには、制御ノード (Ansible がインストールされているマシン) が、ターゲットホストに接続するための必要な SSH キーまたは認証情報を持っていることを確認する必要があります。

Ansible プレイブックで SSH 接続方法を使用する方法の例を次に示します。

- hosts: webservers
  tasks:
    - name: システム情報を収集する
      ansible.builtin.setup:

この例では、hosts ディレクティブで webservers グループを指定し、tasks セクションには、setup モジュールを使用してシステム情報を収集する単一のタスクが含まれています。

WinRM 接続方法

WinRM 接続方法を使用するには、ターゲットの Windows ホストが WinRM 接続を受け入れるように設定されている必要があります。これは通常、WinRM サービスを有効にし、必要なファイアウォール規則を設定することを含みます。

Ansible プレイブックで WinRM 接続方法を使用する方法の例を次に示します。

- hosts: windows
  tasks:
    - name: Windows コマンドを実行する
      ansible.windows.win_command:
        cmd: ipconfig

この例では、hosts ディレクティブで windows グループを指定し、tasks セクションには、ターゲットの Windows ホストで ipconfig コマンドを実行する単一のタスクが含まれています。

ローカル接続方法

ローカル接続方法は、リモートホストに接続せずに制御ノード上でタスクを実行する場合に便利です。これは、リモート実行を必要としないタスク、たとえばローカルファイルの管理やシステム設定など、に特に役立ちます。

Ansible プレイブックでローカル接続方法を使用する方法の例を次に示します。

- hosts: localhost
  connection: local
  tasks:
    - name: ローカルディレクトリを作成する
      ansible.builtin.file:
        path: /tmp/local_dir
        state: directory

この例では、hosts ディレクティブで localhost グループを指定し、connection ディレクティブで接続方法を明示的に local に設定しています。tasks セクションには、制御ノード上にローカルディレクトリを作成する単一のタスクが含まれています。

Ansible プレイブックでさまざまな接続方法を理解し適用することで、Ansible がインフラストラクチャ内のホストと効果的に通信および管理できるようになります。

まとめ

このチュートリアルを終了すると、Ansible インベントリ内のホストの接続方法を設定する方法を包括的に理解しているでしょう。この知識は、Ansible のデプロイを独自のインフラストラクチャ要件に合わせ、シームレスなリモート管理と自動化を実現するのに役立ちます。