問題タブ [ansible]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
6773 参照

templates - ansibleでテンプレート変数を含む配列をループする方法は?

Ansible を使用して Web サーバーの自動プロビジョニング プロセスをセットアップしています。このために、セットアップする仮想ホストを含​​む辞書を含む配列があります。

一般的な nginx vhost 構成を含むテンプレートを用意しました。

最後に、次のタスクを使用して、準備したテンプレートをターゲット ホストにコピーします。

vhostタスクは、期待どおりに変数を反復処理します。残念ながら、Ansible はイテレーターからテンプレートに現在の項目を渡さず、代わりに、テンプレートは現在有効なすべての変数にアクセスできます。

現在のアイテムをイテレータからテンプレートに渡す方法はありますか?

0 投票する
2 に答える
3500 参照

ansible - Ansible、プレイブックにロールが含まれている場合はタスクを実行

ベース、モニタリング、nginx、およびベースと nginx のみの別の Playbook というロールを持つ Playbook を想像してみましょう。

nginx を監視するには、監視サービスに少し異なる構成を渡す必要があるため、プレイブックに nginx の役割が含まれている場合にのみ、監視の役割でタスクを実行する必要があります。

別の役割の存在に依存するタスクを実行する方法は?

0 投票する
1 に答える
1801 参照

linux - ソフトウェアの Ansible および条件付きインストール

Ansible はロールアウトに最適です (この場合は JBoss)。プレイブックの一部は次のとおりです。

これは魅力のように機能しますが、毎回機能することを除いて、JBoss が既にインストールされている場合は Ansible に Playbook を停止させたいと考えています (私たちの場合、テストは/opt/jboss-eap-6.2.0存在するかどうかです。これを行う最も適切な方法は何ですか? 提供できますか? when-clause でターゲットサーバーに何かが存在するかどうかのテスト ?

0 投票する
5 に答える
224199 参照

ansible - タスクまたは一連のタスクごとにユーザーを切り替える方法は?

私の ansible プレイブックで繰り返されるテーマはsudo: yes、特定のユーザーに対してコマンドを実行したいため、sudo 特権 ( ) でコマンドを実行する必要があることが多いということです。理想的には、sudo を使用してそのユーザーに切り替え、通常どおりコマンドを実行したいと考えています。そうすれば、chown ディレクトリなどの通常の post コマンドのクリーンアップを行う必要がなくなるからです。これは、私のプレイブックの 1 つからの抜粋です。

理想的には、そのユーザーに su するために sudo が必要な場合でも、コマンドまたはコマンドのセットを別のユーザーとして実行できます。

0 投票する
3 に答える
200240 参照

ansible - Ansible hosts ファイルで定義されている現在のマシンのホスト名を取得するにはどうすればよいですか?

いくつかのサーバーをセットアップするために Ansible プレイブックをセットアップしています。現在のホストがホスト ファイルで「local」という名前のローカル開発ホストである場合にのみ実行したいタスクがいくつかあります。これどうやってするの?ドキュメントのどこにも見つかりません。

この when ステートメントを試してみましたがansible_hostname、ホスト ファイルで定義したホスト名ではなく、マシンの作成時に生成されたホスト名に解決されるため、失敗します。

0 投票する
4 に答える
32733 参照

handler - Ansible ハンドラーが複数のハンドラー タスクを実行しない

タスク ファイルで3 つのタスクを実行する必要がある 1 つの Ansible ロールがありますhandlers/main.ymlが、最初のタスクしか実行しません。他の 2 つのタスクを強制的に実行するにはどうすればよいですか? ignore最初のタスクが失敗した場合のフラグをオンにしています。

tasks/main.ymlファイルは次のようになります。

handlers/main.ymlファイルは次のようになります。

最初のハンドラー タスク (openfire のシャットダウン) のみが実行されます。

0 投票する
2 に答える
287 参照

virtualbox - Ansible によってインストールされたものを確認する方法は?

Github からディレクトリを複製し、それ自体が Ansible と呼ばれるセットアップを行いました。これで、多くのものをインストールして仮想マシンを作成しました。仮想ボックスにインストールされているすべてを保存できませんでした。最終的にスクリプトは次の出力を与えました

Virtual Box にインストールされているものを確認するにはどうすればよいですか?

0 投票する
2 に答える
1816 参照

provisioning - Ansible 通知を再生する方法

現在、私は人形からAnsibleに切り替えていますが、いくつかの概念、または少なくとも ansible の仕組みについて少し混乱しています。

セットアップに関する情報:

私はAnsible Best Practicesの例を使用しており、プロジェクトをいくつかのロール (プレイブック) などと同様に構成しています。

プロビジョニングに Vagrant を使用しており、ボックスは Saucy64 VBox です。

混乱の原因:

プロビジョニングして ansible を実行すると、タスクの実行が開始され、次に通知のスタックが開始されます。

例:

最後のタスク:

それから最初の通知:

これで問題ありません。役割が増えるにつれて、ますます多くの通知が行き詰まります。

ここで問題が発生します。

通知が失敗すると、プロビジョニングは通常どおり停止します。しかし、通知スタックは空です! これは、障害のある通知以降のすべての通知が実行されないことを意味します。

その場合、apache の vhosts 設定を変更し、apache サービスをリロードするように通知した場合、これは失われます。

例を挙げましょう(疑似言語):

上記が実行されると:

  1. Apache モジュールがインストールされている
  2. 仮想ホストは有効です
  3. PHP がインストールを試みて失敗する
  4. スクリプトの終了
  5. (通知はどこにありますか?)

この時点で、すべてが論理的に見えますが、Ansible は巧妙に (いいえ!*) スタック通知を試行するため、apache をリロードして再起動すると、プロビジョニングの最後に実行される apache が 1 回再起動されます。つまり、すべての通知が失敗します!!!

ここまでは、人によってはこれでもいいです。彼らは、プロビジョニングを再実行するだけで通知が起動すると言うでしょう。したがって、Apache が最終的にリロードされ、サイトが再び起動します。これはそうではありません。

PHP をインストールするためのコードが修正された後のスクリプトの 2 回目の実行では、設計により通知が実行されません。なんで?

これが理由です: Ansible は、正常に実行されたタスクを「完了/グリーン」としてマークし、これらのタスクの通知を登録しません。プロビジョニングが成功し、通知をトリガーして apache を再起動するには、次のいずれかを実行できます。

  1. ansible または ssh を介してサーバーに直接コマンドを実行します。
  2. スクリプトを編集してタスクをトリガーする
  3. そのための別のタスクを追加します
  4. ボックスのインスタンスを破棄して再プロビジョニングする

ボックスの完全なクリーンアップが必要なため、これは非常にイライラしますか、それとも Ansible で何かを正しく理解していないのでしょうか?

通知を「回収」/再生/強制的に実行する別の方法はありますか?

  • 賢明なのは、タスクを未完了としてマークしてから通知を再開するか、通知を独自のタスクとして別のキューに保持することです.*
0 投票する
1 に答える
15110 参照

ansible - Ansible with_fileglob がスキップしています

Web サーバーを構築するために設計された Ansible Playbook をまとめています。ただしwith_fileglob、Ansible が nginx vhost ファイルのコピーをスキップしていると報告し続けるため、使用しようとすると行き詰まります。

私のスクリプトは次のようになります。

{{ templates }}他の場所でroles/common/templatesとして定義されています。このディレクトリには、Ansible がコピーすることを望んでいるwebserver1というファイルがあります。/etc/nginx/sites-available/

この問題について話し合っている他の人を見つけましたが、この問題の解決に役立つ回答はありませんでした。Ansible がファイルをスキップするのはなぜですか?

with_fileglob編集:将来、他の仮想ホストを反復処理したいので、(直接コピーではなく)使用したいことを指摘する必要があります。

0 投票する
2 に答える
17901 参照

ansible - Ansible の複数のインベントリ ファイル

Ansible 1.4 および dev で複数のインベントリ ファイルと動的インベントリを使用しようとしています。Ansible はNo hosts matching を返します。

ディレクトリに2つのホストファイルがあるシミュレートされたシナリオがあり、ディレクトリの内容がリストされていることをテストします。

hosts1.ini

hosts2.ini

ansible -i test --list-hosts allを実行すると、 No hosts matchingが返されます。

私はコードを掘り下げて、少し修正されたdir.pyを見つけました。しかし、私は何か間違ったことをしたに違いないと思います。ハックは必要ありません。それを解決する方法についてのアイデアはありますか?