GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ansible:ファイルが存在するかどうかを確認します

はじめに

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という新しいファイルが作成されます。


Ubuntu
  1. sudoers構文を確認する方法

  2. LinuxMint20にAnsibleをインストールする方法

  3. Cpの実行の進行状況を確認する方法は?

  1. 特定のファイルが存在する場合に任意のメッセージを表示するコマンド?

  2. 特定のファイルの種類/拡張子がディレクトリに存在するかどうかを確認します

  3. sshを使用してリモートホストにファイルが存在するかどうかを確認します

  1. Ansibleプレイブックでの秘密の処理

  2. ファイルをチェックするための1つのライナーが存在しますか?

  3. sudo を使用してファイルが存在するかどうかを確認するにはどうすればよいですか?