アンシブル無視エラー

Anshiburu Wu Shiera



別のホスト デバイスでタスクを構成しているときに、Ansible エラーがよく発生します。これらは、固有の、場合によっては重要なシステム状態を表します。それにもかかわらず、タスクが正常に実行された場合にタスクも実行され、出力が表示されるように、回避したいエラーがいくつかある場合があります。この記事では、Ansible エラーとそれらを無視する方法について説明します。 Ansible で障害を抑制して無視する手法を具体的に示します。

エラー修正とは対照的に、失敗を回避するには、Ansible Playbook のアクティビティが影響を受けない限り、タスクを続行する必要があります。 ansible ツールは、タスクのデバッグ中にタスクまたは Playbook を完了できない場合、警告メッセージを発行します。原因はいくつかありますが、それらを特定して解決策を見つけるのは私たち次第です。残念ながら、すべてのエラーを修正できるわけではありません。エラーを無視したくない場合、または問題を解決できない場合は、エラーを無視することを選択できます。







Ansible でマネージャーを制御する大部分は、現実世界のシナリオでターゲット ホストに接続しながら、この戦略を使用します。 Ansible はデフォルトで、ステートメントから返された結果またはパッケージからのエラーからゼロ以外の結果が返されるたびに、ターゲット デバイスでのアクティビティを停止し、他のサーバーでのアクティビティを継続します。ただし、別の方法で行動したい場合もあります。ゼロ以外の返され​​た結果は、進行状況を示す場合があります。多くの場合、1 つのサーバーで処理を停止して、すべてのホストで処理を停止したい場合があります。



Ansible でエラーを無視する方法

Ansible では、タスクの失敗が示されている場合、Playbook タスクを実行するためにさまざまな方法が使用されます。 Ansible がエラーを表示している場合でも、タスクの実行に役立つさまざまな方法を以下に示します。



1. Ignore_Errors=True コマンドの利用





タスクが引き続き失敗しても、アクティビティの下部で ignore_errors=true コマンドを指定すると、Playbook は引き続き実行されます。タスクの完了または失敗を気にしているにもかかわらず、それは引き続き後続のアクティビティを実行します。何らかの理由でアクティビティが失敗した場合、次のアクティビティに進みます。アクティビティが成功すると、その後のプロセスが完了します。

2. Ansible でのチェック モードの利用



ブール型の特殊変数である Ansible チェック モードを利用します。これは、Ansible がチェック メソッドに入ると True に定義され、タスクをバイパスするか、Ansible のチェック メソッド バージョンが使用されるたびにタスクの失敗を無視します。

3. Ansible Playbook で Failed=When コマンドを使用する

Ansible では、failed_when 条件を使用して、各アクティビティで暗示される「失敗」を指定することもできます。すべての Ansible 条件ステートメントと同様に、多数の failed_when 基準のリストが暗黙的に結合されます。したがって、すべての条件が満たされた場合にのみ、タスクは失敗します。

Ansible でエラーを無視するための前提条件

Ansible 構成ツールは、具体的な例を含めるために必要な基準に準拠する必要があります。

  • ターゲット デバイスでコマンドを設定するには、Ansible メイン サーバーまたは制御サーバーが必要であると言えます。
  • Ansible ソフトウェアのエラーを無視するさまざまな方法を使用するために、それぞれに連絡できるように、ローカル ホストが必要です。このインスタンスのローカル ホストは、アクティビティの間、ターゲット リモート サーバーとして使用されます。
  • Playbook を作成し、Ansible ignore error コマンドを実行し、ansible-controller デバイスを使用して離れたホストでの結果を追跡します。

学習者が Ansible Playbook で無視エラーを利用する原則を理解できるように、次の例を実装してみましょう。

例: Ignore_Errors=True コマンドの使用

これは実装に Ansible を使用する最も単純な例で、プレイブックにいくつかのタスクを含め、ignore error コマンドを使用してタスクを実行します。これを行うには、まず Ansible ターミナルで次のコードを記述します。

[ @ マスターアンシブル ] # nano ignore_errors.yml

ignore_errors.yml プレイブックを作成して起動したら、プレイブックにコマンドを入力し始めます。まず、「hosts」オプションを使用して、提供されたホストを「localhost」として渡します。 Playbook の実行時にローカル ホストに関する追加情報を取得できないように、「事実を集める」引数に「偽」の値を入力します。

その後、「タスク」オプションの下に、完了したい各タスクのリストを開始します。最初のタスクでは、Ansible ディレクトリに存在しないドキュメントを表示します。まず、実装したいタスクのタイトルを渡します。次に、コマンド オプションを使用して、存在しないテキスト ドキュメントを保存し、「ls」を使用して、最初のタスクでコマンドを実行できるようにします。最初のタスクの後、ignore_errors=true コマンドを使用して、ignore ステートメントの上のタスクが失敗した場合、そのタスクを無視して次のタスクに移動して実行します。

使用される別のタスクをリストします。最初のタスクが失敗した場合、Ansible ツールは次のタスクを実行する必要があります。次に、debug パラメーターを使用して Playbook でタスクを実行します。

- ホスト: ローカルホスト
収集_事実: 間違い
タスク:
- name: 存在しないリスト ファイル
指図: ls 存在しない.txt
ignore_errors: 真実

- 名前: 続く 失敗後の作業
デバッグ:
メッセージ: 「失敗してもタスクを続行する」

ここで、実行するのに十分なタスクをリストし、ignore error コマンドを確認します。ここで、プレイブックを終了し、メイン ターミナルに戻ります。その後、プレイブックを実行します。そのために、次のステートメントを使用します。

[ @ マスターアンシブル ] # ansible-playbook ignore_errors.yml

前述のコマンドを実行すると、次の出力が得られます。ご覧のとおり、存在しないファイルをリストする最初のタスクは失敗を示しています。しかし、playbook で ignore_error=true を使用して最初のタスクを無視したため、2 番目のタスクは正常に実行されます。

結論

Ansible で無視エラーが何を意味するかを学びました。 Ansible Playbook でどのように機能するかについて説明しました。また、タスクの実行中に Ansible でエラーを無視するさまざまな方法についても説明しました。すべての概念がユーザーにとって明確になるように、例を実装しました。