問題タブ [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.
ansible - 相対パスのタスク ファイルのディレクトリを取得する
私のプレイブックでは、スクリプトを実行し、将来の使用のために値を保存する local_action を実行します。
プレイブックをサブディレクトリに移動するまで、これはうまく機能しました。コマンドは現在の作業ディレクトリ (ansible を実行するディレクトリ) から実行されることが判明したため、パスは次のようにする必要があります。
私は以下のようなディレクトリ構造を持っています:
- group_vars/
- 役割/
- 幽霊/
- タスク/
- main.yml
- テンプレート/
- release.py
- タスク/
- 幽霊/
- サイト.yml
ただし、ロール/ゴーストフォルダー名は変更される可能性があります (これをハードコーディングすると、別のディレクトリから Playbook を実行できなくなります)。
tasks/main.yml (local_action コマンドを発行する) のディレクトリ パスを取得するにはどうすればよいですか?
ansible - 利用できないホストに対して ansible playbook を実行する (ダウン/オフライン)
明らかなものが欠けている可能性がありますが、可能なプレイブック (ssh 接続されたマシンのネットワークでうまく機能します) には、どのプレイブックがどのサーバーに対して実行されたかを追跡し、ノードがポップアップしたときに再実行するメカニズムがありません/チェックインしますか? Playbook は問題なく動作しますが、一部のマシンがダウン/オフラインのときに実行すると、それらのホストはそれらの変更を見逃してしまいます…解決策はすべての Playbook を何度も実行することではないと確信しています。
多分それは正しい用語をグーグルで検索することについてです...誰かが質問を理解していれば、これは一般的な要件であるため、何を検索する必要があるか教えてください...これは自動プロビジョニングと呼ばれますか (単なる推測です)?
私はそれについて2つのことが好きなので、可能な特定の方法を探しています(PythonとSSHベース...追加のクライアント展開は必要ありません)
ansible - Ansible レポート用にスクリプト出力をどのようにフォーマットする必要がありますか?
Ansible v1.3 を使用して、サーバーのグループで bash スクリプトを実行しています。Ansible が出力を正しくフォーマットすることを期待しているもので出力を動作させようとしていますが、何かが欠けています。
スクリプト出力が JSON としてフォーマットされている場合、Ansible はそれを取得して出力に含めることをどこかで読みました (リンクが見つかりません!)。
そのため、スクリプトで最後に行うことは次のとおりです。
スクリプトを次のように呼び出します。
そして、私が得る出力は次のようなものです:
私は次のようなものを見ることを期待しています:
私は何が欠けていますか?
ansible - Ansible では、environment キーワードはどのように使用されますか?
PythonBrew をインストールするためのプレイブックがあります。これを行うには、シェル環境を変更する必要があります。Ansible のシェル ステップは永続的ではないためexport PYTHONBREW_ROOT=${pythonbrew.root}; source ${pythonbrew.root}/etc/bashrc;
、PythonBrew 関連の各コマンドの先頭に追加する必要があります。
その冗長性をなくしたい。Ansible ディスカッション グループで、environment
キーワードを紹介されました。ドキュメントの例を見てきましたが、クリックしていません。私には、環境キーワードは他の変数と大差ないように見えます。
私は他の例を探しましたが、この非常に単純な例しか見つけることができませんでした。
environment
上記で提供したコードサンプルを使用して、キーワードが Ansible でどのように機能するかを誰かが示すことができますか?
ansible - Ansible:致命的なエラーなしで SSH ログインが可能かどうかをテストしますか?
新しくインストールされた Linux インスタンスを取得し、デフォルトのユーザーとしてログインし (user1 と呼びます)、別のユーザーを作成し (user2 と呼びます)、user1 を無効にするセットアップ プレイブックがあります。user1 は、この一連のタスクが実行される前にのみインスタンスにアクセスできるため、タスクは特別な Playbook にあり、新しいインスタンスで実行することを覚えておく必要があります。その後、user1 は存在しないため、すべての一般的なタスクは user2 によって実行されます。
セットアップ プレイブックと一般的なプレイブックを組み合わせて、セットアップ プレイブックを手動で実行する必要がなくなりたいと考えています。インスタンスに存在するユーザーを確認するタスクを作成して、SSH 経由で user1 としてログインしようとすることで、元のセットアップ タスクを条件付きにしようとしました。問題は、いずれかのユーザーに対して SSH ログインを試みると、ログインできないため、ansible が FATAL エラーで終了することです: user2 は新しいインスタンスにまだ存在しないか、セットアップ Playbook の実行後に user1 が無効になっています。
インスタンスの状態を外部から判断する唯一の方法は、SSH 経由でログインをテストすることだと思います。FATAL エラーを発生させずに SSH ログインをテストし、結果に基づいて条件付きでタスクを実行する方法はありますか?
ansible - Ansible で、ファイルの末尾に行を追加するにはどうすればよいですか?
これはかなり単純だと思います。私は次のlineinfile
ようにモジュールを使用しています:
私が抱えている問題はfi
、行を追加するのではなく、ファイルの最後の行 (これは ) を新しい行に置き換えていることです。これにより、構文エラーが発生します。
パラメータは正しいですか?'^'
regexp をと''
(空白)の両方に設定しようとしました。これについて別の方法はありますか?
Ansible 1.3.3 を使用しています。
linux - シェルに対する Ansible などのデプロイ ツールの利点
現在、展開スクリプトはすべてシェルにあり、約 10 個のプログラムをインストールして構成しています。私が見ているように、シェルはこれのための素晴らしいツールです:
モジュラー:スクリプトごとに 1 つのプログラムのみ。このようにして、プログラムを異なるサーバーに分散させることができます。
シンプル:シェル スクリプトは非常にシンプルで、他のソフトウェアをインストールする必要はありません。
ワンクリック:シェル スクリプトを 1 回実行するだけで、すべてがセットアップされます。
不可知論的:ほとんどのプログラマーはシェルを理解することができ、特定のプログラムの使用方法を知る必要はありません。
バージョニング:私のコードはGitHubにあるので、単純な Git プルとすべてのスーパーバイザーの再起動により、最新のコードが実行されます。
これらすべての利点があるにもかかわらず、シェルを使用するのではなく、AnsibleやChefなどのツールを使用するように常に言われているのはなぜですか?