はじめに
Ansibleは、単一の制御ノードを使用して多数のリモートサーバーを管理および監視できるInfrastructureasCodeツールです。
Ansibleを使用すると、プレイブックを使用してリモートサーバーを管理できます。これらのプレイブックは、命令をリモートサーバーに中継し、事前定義されたタスクを実行できるようにします。
このチュートリアルでは、Ansibleプレイブックとは何か、それらがどのように機能するか、およびそれらを作成および実行する方法について説明します。
前提条件
- Linuxシステム(Ubuntu 20.04を使用しています)
- コマンドライン/ターミナルウィンドウへのアクセス
- Ansibleのインストールと構成
Ansible Playbookとは何ですか?
Ansibleプレイブックは、Ansibleネットワーク内のリモートコンピューターによって自動的に実行されるジョブの手順のリストです。
Ansibleプレイブックは演劇で構成されています。演劇は、演劇が実行されると完了する、組織化された一連のタスクです。 1つのプレイブックに複数のプレイを追加できます。
Playsはモジュールを使用して、タスクを完了するために行う必要のある変更を定義します。各モジュールは、特定のカテゴリのジョブのフレームワークを提供し、引数を使用してカスタマイズできます。 および変数 。
Ansible Playbookは.yamlファイルとして保存されるため、柔軟で使いやすくなっています。
プレイブックは主に次の目的で使用されます:
- 構成の宣言。
- 手動で行うには時間がかかりすぎる特定の反復可能なタスクを自動化する。
- タスクを同期的または非同期的に起動します。
AnsiblePlaybook変数
Ansible Playbookは変数を使用して、柔軟性と使いやすさを提供します。変数は組み込みにすることができます (システム情報など)またはユーザー定義 。
Ansibleプレイブックでは、変数は vars
を使用して定義されます キーワード:
上記の例では、greeting
を定義しています。 Hello World!
の値が割り当てられた変数 。
値にアクセスするには、変数名をgreeting
に入力します 二重中括弧内:
実行されると、プレイブックはメッセージ Hello World!
を出力します。
単一の値を持つ変数の他に、Ansible変数には他にもいくつかの種類があります。 配列での変数の使用 、次の構文で1つの変数に複数の値を割り当てます。
vars:
array_name:
- value1
- value2
…
- valueN
{{ array_name[value number] }}
を使用して特定の値にアクセスします 、例:
辞書付きの変数 複数の値の配列を1つの変数に結合します:
vars:
array_name:
dictionary_name1:
item1: value1
item2: value2
dictionary_name2:
item1: value1
item2: value2
最後に、特別な変数 Ansibleによって事前定義されており、ユーザーが設定することはできません。次のコマンドを使用して、特別な変数のリストを取得します。
ansible -m setup hostname
Ansible Playbookの書き方?
システムで使用可能なテキストエディタを使用して、Ansibleプレイブックを作成します。たとえば、Nanoでプレイブックを作成します:
sudo nano /path/to/playbook/directory/playbook_name.yaml
Ansibleプレイブックは基本的なYAML構文ルールに従います。
プレイブックは3つのnダッシュで始まります( ---
)の後に、プレイブック名、プレイブックを実行するリモートホストグループの名前、およびbecome
などの追加パラメーターが続きます。 (管理者としてプレイブックを実行します。)
次のセクションには、すべてのユーザー定義変数が含まれています。 vars
で始まります 前のセクションと同じインデントレベルでタグを付け、その後に次のインデントで変数のリストを続けます。
最後に、タスクリストはtasks
で始まります タグ、タスクのタイプと使用されるパラメーターに応じたインデントレベル。
YAML構文では、3つのピリオド(…
)を使用できます )プレイブックを終了します。ほとんどのプレイブックはこのように終了しますが、プレイブックが正しく機能する必要はありません。
AnsiblePlaybook構文
Ansibleプレイブックを作成するときに覚えておくべきYAML構文のいくつかの重要な要素:
- リストを作成するときは、ダッシュの間にスペースを使用してください(
-
)とリストエントリ。 -
key: value
を使用する場合 フォームの場合、コロンの後にスペースを続ける必要があります。 - ブール値は両方の
yes
を使用できます およびno
、およびtrue
およびfalse
。 - スペースの後に
#
を使用します コメントを示すため。
AnsiblePlaybookの例
この例では、Ansibleインストールフォルダーにプレイブックを作成します:
sudo nano /etc/ansible/example_playbook.yaml
このプレイブックには、次の要素が含まれています。
-
---
:プレイブックの開始を通知します。 name
:Ansibleプレイブックの名前を定義します。hosts
:どのホストがプレイブックを実行するかを定義します。上記の例では、プレイブックはインベントリファイルに含まれるすべてのホストで実行されます。become
:プレイブックを管理者として実行するようにリモートホストに指示します。このタグを使用するには、プレイブックを実行するときにリモートホストの管理者パスワードを入力する必要があります。-
vars
:変数を定義します–この場合、greeting
という名前の変数 値はHello World!
。 tasks
:プレイブックが実行するタスクのリスト。上記の例では、最初のタスクで example_playbookというディレクトリが作成されます。 リモートホスト上。 2番目のタスクは、そのディレクトリに新しいテキストファイルを作成し、greeting
の値を配置します コンテンツとしての変数。-
...
:プレイブックの終了を通知します。
プレイブックはどのように実行されますか?
Ansible Playbookは、上から下に順番に実行されます。これは、個々の演劇とそれらの演劇にリストされているタスクの両方に当てはまります。
上記の例では、プレイブックは次のアクションを順番に実行します。
- 変数のリストを定義します。
- リモートホストに新しいフォルダを作成します。
- 新しいフォルダにテキストファイルを作成します。
- 変数の値をファイルコンテンツとして追加します。
AnsiblePlaybookを実行する方法
Ansibleプレイブックを実行するには、次を使用します:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml
この記事では、 example_playbook.yaml
を使用します -K
を使用 引数。これにより、リモートホストのrootユーザーのパスワードを入力し、管理者としてプレイブックを実行できます。
ansible-playbook /etc/ansible/example_playbook.yaml -K
プレイブックを確認する方法
--check
を使用して、プレイブックをチェックモードで実行します フラグを立てて確認します。これにより、実際に変更を加えることなく、プレイブックが行う変更を確認できます。
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check
変更の可能性の詳細については、 --check
の組み合わせを使用してください および--diff
フラグ:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check --diff
便利なAnsiblePlaybookのヒント
Ansible Playbookを読みやすく、使いやすくする方法はいくつかあります。
常にプレイとタスクに名前を付ける
name
を使用する 演劇とタスクの名前を定義するキーワード。短くてわかりやすい名前を追加すると、各プレイやタスクが何をするのかが一目でわかりやすくなります。
コメントを使用
特に変数やタスクを定義するときは、コメントをたくさん追加してください。
詳細なコメントは、プレイブックをさらに明確で理解しやすくするのに役立ちます。また、プレイブックを使用している他の人にも役立ちます。
使いやすさのためにプレイブックをフォーマットする
プレイブックを機能させるにはインデントの規則に従う必要がありますが、空白(タスク間の空白行など)を使用して、プレイブックを読みやすくすることができます。