プレイブックはYAML形式を使用して、1つ以上のプレイを定義します。 プレイとは、Webサーバーのセットアップやアプリケーションの本番環境へのデプロイなど、プロセスを自動化する方法で配置された一連の順序付けられたタスクです。

プレイブックファイルでは、プレイはYAMLリストとして定義されます。 典型的な遊びは、どのホストがその特定のセットアップのターゲットであるかを決定することから始まります。 これは、hostsディレクティブを使用して実行されます。

hostsディレクティブをallに設定するのが一般的な選択です。これは、-lansible-playbookコマンドを実行することにより、実行時にプレイのターゲットを制限できるためです。パラメータ。 これにより、プレイブックファイルを毎回変更することなく、異なるサーバーまたはグループで同じプレイブックを実行できます。

練習用プレイブックを保存できる新しいディレクトリをホームフォルダに作成することから始めます。 まず、Ubuntuユーザーのホームディレクトリにいることを確認します。 そこから、ansible-practiceという名前のディレクトリを作成し、cdコマンドを使用してそのディレクトリに移動します。

  1. cd ~
  2. mkdir ansible-practice
  3. cd ansible-practice

すべての前提条件を満たしている場合は、作業中のインベントリファイルがすでにあるはずです。 これで、そのファイルを新しいansible-practiceディレクトリにコピーできます。 たとえば、ホームフォルダのansibleディレクトリにテストインベントリファイルを作成した場合、次のコマンドを使用してファイルを新しいディレクトリにコピーできます。

  1. cp ~/ansible/inventory ~/ansible-practice/inventory

次に、新しいプレイブックファイルを作成します。

  1. 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+XYENTERの順に入力して確認できます。

インベントリファイルに設定したサーバーでこのプレイブックを試すには、このシリーズの紹介で接続テストを実行したときに使用したのと同じ接続引数を使用してansible-playbookを実行します。 ここでは、inventoryという名前のインベントリファイルとsammy ユーザーを使用してリモートサーバーに接続しますが、これらの詳細を変更して、独自のインベントリファイルと管理者に合わせてください。ユーザー:

  1. ansible-playbook -i inventory playbook-01.yml -u sammy

次のような出力が表示されます。

Output
PLAY [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の事実については、このシリーズの後半のセクションで詳しく説明します。