はじめに

インストールガイド を読み、コントロールノードに Ansible をインストールしたら、Ansible の仕組みを学ぶ準備ができました。基本的な Ansible コマンドまたはプレイブックは以下のようになります。
  • インベントリーから実行するマシンを選択する
  • 通常は SSH 経由で、このマシン (もしくはネットワークデバイスまたはその他の管理対象ノード) に接続する
  • 1 つ以上のモジュールをリモートマシンにコピーし、そこで実行を開始する

Ansible はさらに多くのことができますが、Ansible の強力な設定、デプロイメント、オーケストレーションの機能をすべて試す前に最も一般的なユースケースを理解しておく必要があります。このページでは、簡単なインベントリーとアドホックコマンドを使用した基本的なプロセスを説明します。Ansible の仕組みを理解したら、アドホックコマンド の詳細を読み、インベントリー でインフラストラクチャーを整理し、Playbook で Ansible の全機能を活用できます。

インベントリーからのマシンの選択

Ansible は、インベントリーから管理するマシンの情報を読み取ります。IP アドレスをアドホックコマンドに渡すことはできますが、Ansible の柔軟性と再現性を完全に活用するにはインベントリーが必要です。

アクション: 基本的なインベントリーの作成

この基本的なインベントリーでは、/etc/ansible/hosts を編集 (または作成) し、リモートシステムをいくつか追加します。この例では、IP アドレスまたは FQDN を使用します。

192.0.2.50
aserver.example.org
bserver.example.org

中級編

インベントリーは IP や FQDN よりも多くのものを保存できます。エイリアス を作成し、host 変数 で 1 台のホストに変数値を設定し、group 変数 で複数のホストに変数値を設定できます。

リモートノードへの接続

Ansible は、SSH プロトコル でリモートマシンと通信します。デフォルトでは、Ansible はネイティブの OpenSSH を使用し、SSH のように、現在のユーザー名を使用してリモートマシンに接続します。

アクション: SSH 接続の確認

同じユーザー名で、SSH を使用してインベントリー内のすべてのノードに接続できることを確認します。必要に応じて、公開 SSH キーを、システムの authorized_keys ファイルに追加します。

中級編

次のようないくつかの方法で、デフォルトのリモートユーザー名を上書きできます。 * コマンドラインで -u パラメーターを渡します。 * インベントリーファイルにユーザー情報を設定します。 * 設定ファイルにユーザー情報を設定します。 * 追加の環境変数を設定します。

ユーザー情報を渡す各方法の優先順位 (意図しない場合もあります) の詳細は、Ansible の動作の制御: 優先順位のルール を参照してください。接続の詳細は、接続方法および詳細 を参照してください。

モジュールのコピーおよび実行

接続後、Ansible はコマンドまたは Playbook が必要とするモジュールを、リモートマシンに転送して実行します。

アクション: 最初の Ansible コマンドの実行

ping モジュールを使用して、インベントリー内のすべてのノードに対して ping を実行します。

$ ansible all -m ping

全ノードでライブコマンドを実行します。

$ ansible all -a "/bin/echo hello"

次のようなインベントリー内の各ホストの出力が表示されます。

aserver.example.org | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

中級編

デフォルトでは、Ansible は SFTP を使用してファイルを転送します。管理するマシンまたはデバイスが SFTP に対応していない場合は、Ansible の設定 で SCP モードに切り替えることができます。ファイルは一時ディレクトリーに置かれ、そこから実行されます。

コマンドを実行する権限昇格 (sudo など) が必要な場合は、become フラグを渡します。

# as bruce
$ ansible all -m ping -u bruce
# as bruce, sudoing to root (sudo is default method)
$ ansible all -m ping -u bruce --become
# as bruce, sudoing to batman
$ ansible all -m ping -u bruce --become --become-user batman

権限の昇格の詳細は、権限昇格の理解: become を参照してください。

おめでとうございます。Ansible を使用してノードに接続しました。基本的なインベントリーファイルとアドホックコマンドを使用して、Ansible が特定のリモートノードに接続し、そこでモジュールファイルをコピーして実行し、出力を返すように指定しました。完全に機能するインフラストラクチャーがあります。

次のステップ

次に、アドホックコマンドの概要 で実際のケースについて読むか、 さまざまなモジュールで実行できることを調べるか、 Ansible の Playbook の使用 言語に関する情報を確認できます。 Ansible は、コマンドの実行だけでなく、 強力な設定管理およびデプロイメント機能があります。

See also

インベントリーの構築方法
インベントリーの詳細情報
アドホックコマンドの概要
基本コマンドの例
Playbook の使用
Ansible の設定管理言語について
メーリングリスト
ご質問はございますか。サポートが必要ですか。ご提案はございますか。 Google グループの一覧をご覧ください。
irc.freenode.net
IRC チャットチャンネル #ansible