最初のAnsiblePlaybookの作成と実行
プレイブックはYAML形式を使用して、1つ以上のプレイを定義します。 プレイとは、Webサーバーのセットアップやアプリケーションの本番環境へのデプロイなど、プロセスを自動化する方法で配置された一連の順序付けられたタスクです。
プレイブックファイルでは、プレイはYAMLリストとして定義されます。 典型的な遊びは、どのホストがその特定のセットアップのターゲットであるかを決定することから始まります。 これは、hosts
ディレクティブを使用して実行されます。
hosts
ディレクティブをall
に設定するのが一般的な選択です。これは、-l
でansible-playbook
コマンドを実行することにより、実行時にプレイのターゲットを制限できるためです。パラメータ。 これにより、プレイブックファイルを毎回変更することなく、異なるサーバーまたはグループで同じプレイブックを実行できます。
練習用プレイブックを保存できる新しいディレクトリをホームフォルダに作成することから始めます。 まず、Ubuntuユーザーのホームディレクトリにいることを確認します。 そこから、ansible-practice
という名前のディレクトリを作成し、cd
コマンドを使用してそのディレクトリに移動します。
cd ~ mkdir ansible-practice cd ansible-practice
すべての前提条件を満たしている場合は、作業中のインベントリファイルがすでにあるはずです。 これで、そのファイルを新しいansible-practice
ディレクトリにコピーできます。 たとえば、ホームフォルダのansible
ディレクトリにテストインベントリファイルを作成した場合、次のコマンドを使用してファイルを新しいディレクトリにコピーできます。
cp ~/ansible/inventory ~/ansible-practice/inventory
次に、新しいプレイブックファイルを作成します。
nano playbook-01.yml
次のプレイブックは、特定のインベントリからall
ホストをターゲットとするプレイを定義しています。 これには、デバッグメッセージを出力するための単一のタスクが含まれています。
注:このシリーズの次のセクションでタスクについて詳しく学習します。
次のコンテンツをplaybook-01.yml
ファイルに追加します。
〜/ ansible-practice / playbook-01.yml
--- - hosts: all tasks: - name: Print message debug: msg: Hello Ansible World
完了したら、ファイルを保存して閉じます。 nano
を使用している場合は、CTRL+X
、Y
、ENTER
の順に入力して確認できます。
インベントリファイルで設定したサーバーでこのプレイブックを試すには、このシリーズの紹介で接続テストを実行したときに使用したのと同じ接続引数を使用してansible-playbook
を実行します。 ここでは、inventory
という名前のインベントリファイルとsammy ユーザーを使用してリモートサーバーに接続しますが、これらの詳細を変更して、独自のインベントリファイルと管理者に合わせてください。ユーザー:
ansible-playbook -i inventory playbook-01.yml -u sammy
次のような出力が表示されます。
OutputPLAY [all] *********************************************************************************** TASK [Gathering Facts] *********************************************************************** ok: [203.0.113.10] TASK [Update apt cache] ********************************************************************** ok: [203.0.113.10] => { "msg": "Hello Ansible World" } PLAY RECAP *********************************************************************************** 203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
プレイブック内で1つのタスクのみを定義したにもかかわらず、2つのタスクが再生出力にリストされていることに気付いたかもしれません。 各プレイの開始時に、Ansibleはデフォルトで、リモートノードに関する情報( facts と呼ばれる)を収集する追加のタスクを実行します。 ファクトはプレイブックで使用してタスクの動作をより適切にカスタマイズできるため、ファクト収集タスクは他のタスクを実行する前に実行する必要があります。
Ansibleの事実については、このシリーズの後半のセクションで詳しく説明します。