問題タブ [ansible-inventory]

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 に答える
25723 参照

ansible - タスクのインベントリ ファイルからすべての ansible ホストを一覧表示する

バックアップの場合、インベントリ ファイル内のすべてのホストを繰り返し処理して、バックアップ先が存在することを確認する必要があります。私の構造は次のようになります

したがって、単一のグループだけでなく、インベントリ ファイルからすべてのホストを一覧表示する (組み込みの) 変数/メソッドが必要です。

グループの場合、次のようになります

0 投票する
7 に答える
143793 参照

ansible - Ansible - インベントリーのホストと変数を group_vars/all ファイルに読み込みます

私は長い間立ち往生しているダミーの疑いを持っています。ホストと変数を含む非常に平凡なインベントリ ファイルがあります。

問題は、group_vars/all ファイルからインベントリ ファイル内のこれらすべてのホストと変数にアクセスする必要があることです。

ホストIPにアクセスするために次の方法を試しました:

私が試したホスト変数にアクセスするには:

全部間違ってる!!!プレイブックではなく変数ファイルから、ホストと変数にアクセスするためのベストプラクティスを見つけるのを手伝ってくれる人はいますか?

編集:

Ok。明確にしましょう。

問題:変数ファイルのインベントリ ファイルで宣言されたホストを使用します。たとえば、group_vars/all です。

例:の DB ホストがありIP:10.112.83.37ます。

在庫ファイル:

group:vars/all ファイルで、その IP を使用して変数を作成します。

group_vars/all ファイル:

テンプレートでは、group_vars/all ファイルに組み込まれた変数を使用します。

テンプレート ファイル:

問題は{{ db }}、group_vars/all ファイル内の変数が DB ホスト IP に置き換えられていないことです。ユーザーは、インベントリ ファイルのみを編集できます。

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

ssh - Ansible SSH を 1 人のユーザーとして、Sudo を別のユーザーとして

Ansible の構成を自分の環境に適応させるのにいくつかの困難があります。

私のテスト環境:

  • PermitRootLogin いいえ
  • SSH 経由で接続できるのは 1 人のユーザーのみです (foo、権限なし)
  • sudo 権限を持つユーザー (bar ALL=(ALL) ALL)

私の ansible ホスト インベントリは次のようになります。

foo ユーザー用の SSH キーを持っています。

このアドホック コマンド (またはその他のコマンド) を bar password で試すと、次のようになります。

次に、 foo password で同じコマンドを実行すると:

したがって、Ansible は間違いなく foo を sudo ユーザーとして使用し、指定したように bar ではありません。foo の代わりに bar の使用を強制する方法はありますか? Ansible の sudo 機能を本当に理解していません。

ホストに bar としてログインし、「sudo echo test > /etc/testfile」を実行すると、bar パスワードを要求され、コマンドが正しく実行されます。Ansible の動作のどこが間違っていますか?

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

ansible - グループ Playbook から Ansible インベントリー全体にアクセスする

1 つのグループでのみ実行されるプレイブックから、インベントリ ファイル内のすべてのホストの IP のリストを取得しようとしています。

次のインベントリ ファイルがあるとします。

そしてプレイブック:

そして何かをする役割:

そして、hosts.j2 テンプレート:

問題:

これを実行すると、すべての ip ではなく、dbserver ip のみがリストされます

質問:

この Playbook 内からインベントリ全体にアクセスするにはどうすればよいですか? プレイブックでホストをすべてに変更すると機能しますが、dosomething プレイブックもすべてのホストで実行されます。これは私が望んでいるものではありません。dbservers のリストのみが必要です。

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

amazon-ec2 - Ansible ec2 のみが必要なサーバーをプロビジョニングする

次のような基本的な Ansible プレイブックがあります。

次のインベントリで:

Provision ec2 servers タスクは、期待どおりのことを行います。ec2 インスタンスを作成します。また、ホスト グループ [webservers] を作成し、作成したインスタンス IP をそれに追加します。

次に、Configure {{ application_name }} servers ステップでそのサーバーを構成し、必要なものをすべてインストールします。

これまでのところ、これはすべて私が望んでいることとまったく同じであり、すべてが機能しているようです。

ここが私が立ち往生している場所です。さまざまな役割の ec2 インスタンスを起動できるようにしたいと考えています。理想的には、dbserver、webserver、およびおそらく memcached サーバーを作成します。このインフラストラクチャの任意の部分を分離して展開できるようにしたいと考えています。たとえば、db サーバーのみを作成してプロビジョニングします。

これを機能させるために私が考えることができる唯一の方法...まあ、それらは機能しません。

インベントリにホストのないホスト グループを単純に宣言してみました。

しかし、それは構文エラーです。

次のように、各サーバーを明示的にプロビジョニングし、ホスト グループを宣言しても問題ありません。

しかし、これらのグループはそれぞれのステップが完了するまで存在しないため、それもうまくいかないと思います。

動的インベントリについてはたくさん見てきましたが、それがどのように役立つのか理解できませんでした。ansible ec2 プロビジョニング プロジェクトの無数の例にも目を通しました。それらはすべて、必ず既存の ec2 インスタンスをプロビジョニングするか、単一のインスタンスを作成してすべてをインストールします。

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

ansible - Ansible インベントリ ディレクトリの指定

2 つの Ansible プロジェクトがあります。1 つには共通のロールと Playbook が含まれ、2 つ目の Playbook にはインベントリを含む顧客に固有のロールが含まれます。

2 番目のプロジェクトのインベントリを使用して共通の Playbook を実行できるようにしたい

これはホストに対して正しく実行されますが、host_vars は取得されません。host_vars と group_vars がインベントリ ファイルに対して相対的であることを期待していましたが、そうではないようです。

http://docs.ansible.com/intro_inventory.html#splitting-out-host-and-group-specific-data

ヒント: Ansible 1.2 以降では、group_vars/ および host_vars/ ディレクトリは、playbook ディレクトリまたは inventory ディレクトリのいずれかに存在できます。両方のパスが存在する場合、Playbook ディレクトリの変数が 2 番目に読み込まれます。

どんな助けでも大歓迎です、私は1.7を実行しています

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

python - Fabric を使用して AWS の動的 EC2 インベントリにアクセスする方法は?

Fabric には、SSH 接続先のコンピューターを指定するホスト設定があります。

アマゾン ウェブ サービスには、 botoなどのツールを使用して Python でクエリできる動的なインベントリが多くあります。

これら 2 つのサービスを組み合わせる方法はありますか? 理想的には、在庫ファイルとec2.pyのような外部ファイルを使用したansibleのアプローチと同じくらい単純なものが欲しかったのです。

より具体的には、このユースケース用の事前に作成されたソリューションはありますか? 理想的には、次のような簡単なものを実行したいと思います。

env.roledefs['nginx']存在すると仮定して、次のように実行します。