はじめに
Ansibleは、単一の制御ノードが多数のリモートホスト(サーバー)を監視および管理できるようにするInfrastructureasCodeツールです。
Ansibleはプレイブックを使用して、ファイルやフォルダーが存在するかどうかの確認など、リモートホストが実行するさまざまなタスクを定義します。
このチュートリアルでは、statの使用方法について説明します。 Ansibleのモジュールで、ファイルとフォルダがリモートホストに存在するかどうかを確認します。
前提条件
- コマンドライン/ターミナルウィンドウへのアクセス
- Ansibleのインストールと構成(WindowsへのAnsibleのインストールとUbuntuへのAnsibleのインストールに関するガイドを参照)
ファイルがAnsibleに存在するかどうかの確認
Ansibleを使用してファイルが存在するかどうかを確認する最も簡単な方法は、 statを使用することです。 モジュール。
statの目的 モジュールは、ファイルとフォルダーに関する事実を取得し、それらをレジスターに記録することです。 statモジュールは次の構文を使用します:
---
- name: Playbook name
hosts: all
tasks:
- name: Task name
stat:
path: [path to the file or directory you want to check]
register: register_name
... 場所:
-
stat:statモジュールを使用していることを宣言します。 -
path:チェックするファイルまたはフォルダへのパスを宣言します。 -
register:statモジュールがファイルとフォルダーの詳細を保存するレジスターの名前を提供します。
レジスタに記録されている値の1つは、existsです。 。この値をdebugと組み合わせる モジュールを使用すると、ファイルまたはフォルダが存在するかどうかを詳細に示すメッセージを表示できます。
- name: Task name
debug:
msg: "The file or directory exists"
when: register_name.stat.exists
1.プレイブックの例では、最初のタスク(ファイルが存在するかどうかの確認 ) statを使用します test.txtに関する事実を取得するモジュール / home / example_folderにあるファイル リモートホスト上。これらの事実をfile_dataというレジスタに記録します 。
2. 2番目のタスク(ファイルが存在するかどうかを報告する )debugを使用します メッセージを表示するモジュール。 file_dataをチェックします existsを登録して使用します メッセージを表示するための条件としての値。 exists 値はtrue 、モジュールはメッセージ「ファイルまたはディレクトリが存在します」を表示します 。
3. 3番目のタスク(不足しているファイルを報告する )同じことを行いますが、「ファイルまたはディレクトリが存在しません」というメッセージが表示される点が異なります。 exists 値はfalse 。
プレイブックを実行すると、次の出力が得られます。
出力は、ファイルが実際には存在しないことを示しています。
問題のファイルがフォルダではなく通常のファイルであることも確認する場合は、 isregを追加します。 debugの値 モジュールの状態:
- name: Task name
debug:
msg: "The file or directory exists"
when: register_name.stat.exists and register_name.stat.isreg ディレクトリがAnsibleに存在するかどうかの確認
Ansibleを使用してディレクトリが存在するかどうかを確認することは、ファイルが存在するかどうかを確認することとまったく同じです。唯一の違いは、 isdirを使用することです 指定されたディレクトリへのパスを確認するための値:
- name: Task name
debug:
msg: "The file or directory exists"
when: register_name.stat.exists and register_name.stat.isdir ファイルとフォルダが存在するかどうかに応じてAnsibleタスクを実行する
特定のファイルまたはフォルダが存在するかどうかに応じて、プレイブックでタスクを実行またはスキップしたい場合があります。
たとえば、すべてのリモートホストでファイルを作成するように設計されたプレイブックがある場合、重複が作成されないように、ファイルがすでに存在するホストをスキップする必要があります。
これを行うには、 statによって取得されたファイルの詳細を使用します whenを含むモジュール タスクを実行するための条件を作成するための引数:
---
- name: Playbook name
hosts: all
tasks:
- name: Task name
stat:
path: [path to the file or directory you want to check]
register: register_name
- name: Task name 2
file:
path: [path to the file you want to create]
state: touch
when: not register_name.stat.exists
...
1.上記のプレイブックでは、最初のタスク(ファイルが存在するかどうかの確認 ) statを使用します test.txtの詳細を取得するモジュール example_folderにあるファイル リモートホスト上。
2. 2番目のタスク(ファイルがまだ存在しない場合はファイルを作成する )existsを確認することから始めます レジスタの値。値がtrueの場合 、タスクはスキップされ、プレイブックは終了します。値がfalseの場合 、タスクが実行され、 test.txtという新しいファイルが作成されます。 。