問題タブ [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.
python - インベントリーを指定せずにホストを直接指定せずに Ansible を実行する方法は?
(ANSIBLE_HOST) を使用してインベントリ ファイルを指定せずに Python で Ansible を実行したいのですが、次のようにします。
私は実際にファブリックでこれを簡単に行うことができますが、Python でこれを行う方法を知りたいと思っています。一方、Python 用の Ansible API のドキュメントは完全ではありません。
python - Python Web アプリを作成しようとすると Vagrant でエラーが発生する
Vagrant と Ansbile ( https://github.com/nickhs/flask_skeleton ) を使用して Flask アプリをデプロイするためのガイドに取り組んでいますが、修正方法がわからないエラーが発生し続けます。
次を実行します... $ vagrant up db
...答えが見つからないエラーの前に、かなりの数の手順を実行します。
これらは完了した手順です...
[db] プロビジョナーの実行: ansible...
誰かが私を正しい方向に向けることができますか?
python - Ansible をプログラムで同時に実行するにはどうすればよいですか?
Ansible を使用して、複数のリモート ノードで単純なジョブを同時に実行したいと考えています。実際の作業では、いくつかのログ ファイルを grep し、ローカル ホスト (リモート ノードでは使用できないソフトウェアを使用) で結果を後処理します。
コマンド ラインの ansible ツールは、リモートで実行されたコマンドの出力と ansible によって生成された書式設定が混在しているため、このユース ケースには適していないようです。ただし、Python API は、出力を変更せずに公開するため、これが可能であるように思われます (ここでは関係ない可能性のある Unicode マングリングは別として)。
私が思いついた Python プログラムの簡略化されたバージョンは次のようになります。
ここでsleep 10
は、実際のログ grep コマンドを代用しています。アイデアは、すぐには完了しないコマンドをシミュレートすることです。
ただし、これを実行すると、かかる時間がインベントリ内のホストの数に比例しているように見えます。それぞれ 2、5、および 9 ホストのインベントリに対するタイミング結果を次に示します。
その他のランダムな観察:
ansible all --forks=10 -i five-hosts.inventory -m command -a "sleep 10"
同じ挙動を示しますansible all -c local --forks=10 -i five-hosts.inventory -m command -a "sleep 10"
物事を同時に実行しているように見えます(もちろん、ローカルのみの接続でのみ機能します)ansible all -c paramiko --forks=10 -i five-hosts.inventory -m command -a "sleep 10"
物事を同時に実行しているように見える
おそらくこれは、問題が ssh トランスポートにあることを示唆しており、コマンドラインからではなく、Python API を介して ansible を使用することとは何の関係もありません。
インベントリ内のホストの数に関係なく、デフォルトのトランスポートに約 10 秒しかかからないのは何が問題なのですか?
jinja2 - Ansible 値で変数をフォーマットする方法
Ansible が Jinja2 を介してすべての変数を処理するとすると、次のようなことが可能になります。
文字列を次のように正しく補間します。
なぜこれが機能しないのですか:
これにより、何らかの解析の問題が発生し、目的の文字列が冗長にレンダリングされるようになります。
item
のデフォルト形式は であり、 の値を文字列補間で必要な形式にキャストしないため、上記の例では が文字列であるwith_sequence
こと%d
に注意format()
してください。したがって、 を使用してキャストする必要があります。item
%02d
int()
これはバグですか、それとも何か不足していますか?