SSHでリモートサーバーにアクセスし、サーバーのホスト名をデバッグ出力するだけのプレイブック
以下に、Ansibleのプレイブックを作成しました。このプレイブックは、SSHでリモートサーバーにアクセスし、サーバーのホスト名をデバッグ出力するものです。
まず、インベントリファイル hosts
を作成します。ここにリモートサーバーの情報を記載します。
[webservers]
your_remote_server ansible_host=your_remote_server_ip ansible_user=your_username ansible_ssh_private_key_file=path_to_your_private_key
次に、Ansibleプレイブック hostname_debug.yml
を作成します。
---
- name: Retrieve and debug hostname
hosts: webservers
gather_facts: no
tasks:
- name: Retrieve hostname
command: hostname
register: hostname_output
- name: Debug hostname
debug:
msg: "The hostname of the server is: {{ hostname_output.stdout }}"
このプレイブックを実行するには、以下のコマンドを使用します。
ansible-playbook -i hosts hostname_debug.yml
これにより、指定されたリモートサーバーにSSHで接続し、そのサーバーのホスト名を取得してデバッグ出力します。
説明
- インベントリファイル (
hosts
):your_remote_server
: サーバーの名前(任意の名前を使用できます)。ansible_host
: リモートサーバーのIPアドレスまたはホスト名。ansible_user
: SSH接続に使用するユーザー名。ansible_ssh_private_key_file
: SSH接続に使用する秘密鍵ファイルへのパス。
- プレイブック (
hostname_debug.yml
):hosts: webservers
: インベントリファイルで定義されたグループに対して実行。gather_facts: no
: ホストに関する事前のファクト収集をスキップ。- タスク:
Retrieve hostname
:hostname
コマンドを実行し、ホスト名を取得。Debug hostname
: 取得したホスト名をデバッグ出力。
これでAnsibleを使用してリモートサーバーのホスト名をデバッグ出力するプレイブックが完成しました。
はい、ansible_ssh_user
という引数はAnsibleが用意しているものです。Ansibleのドキュメントにも記載されている通り、これはリモートホストに接続するためのSSHユーザー名を指定するための標準的な変数です。
Ansibleのインベントリファイルで使用されるSSH関連の一般的な引数には以下のものがあります:
ansible_host
: 接続先のホスト名またはIPアドレス。ansible_port
: SSH接続に使用するポート番号(デフォルトは22)。ansible_ssh_user
またはansible_user
: SSH接続に使用するユーザー名。ansible_ssh_pass
またはansible_password
: SSH接続に使用するパスワード。ansible_ssh_private_key_file
: SSH接続に使用する秘密鍵ファイルへのパス。ansible_become
:yes
に設定すると、タスク実行時に特権昇格(例:sudo)を使用。ansible_become_user
: 特権昇格時に使用するユーザー名。
これらの引数をインベントリファイルで使用することで、Ansibleがリモートホストに対して適切に接続し、タスクを実行できるようになります。
例えば、以下のようにインベントリファイルに記述します:
インベントリファイル (hosts
)
[webservers]
your_remote_server ansible_host=your_remote_server_ip ansible_ssh_user=your_username ansible_ssh_private_key_file=path_to_your_private_key
プレイブック (hostname_debug.yml
)
---
- name: Retrieve and debug hostname
hosts: webservers
gather_facts: no
tasks:
- name: Retrieve hostname
command: hostname
register: hostname_output
- name: Debug hostname
debug:
msg: "The hostname of the server is: {{ hostname_output.stdout }}"
実行コマンド
ansible-playbook -i hosts hostname_debug.yml
この設定で、Ansibleは ansible_ssh_user
変数を使用してリモートホストにSSH接続を行い、プレイブックのタスクを実行します。