問題タブ [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 に答える
881 参照

ansible - Ansible を使用してクライアントのホストとアプリを管理するためのベスト プラクティス

一部のクライアントには、Ansible を使用して管理したい Web サイト用の仮想マシンがあります。

私は役割が進むべき道だと確信しています。「Web サーバー」や「メール デーモン」などの一般的な役割をクライアントのホストに割り当てたり、パラメーター化された役割を使用して複数の Wordpress インスタンスを 1 つのホストにデプロイしたりできます。

私が確信していないのは、これらの役割をクライアントのホストに割り当てる方法です。インベントリーファイル、グループ、プレイブック、host_vars、group_vars などを使用してロールをホストに割り当てる (パラメーター化されたロールの複数の割り当てを含む) ベストプラクティスは何ですか? 各ホストを Playbook に追加して、そこでロールを割り当てる必要がありますか? ロールをグループのみに割り当てる必要がありますか (しかし、複数のパラメーター化されたロールを追加できませんでしたか? または、host_vars などを使用して追加できたのでしょうか)?

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

ruby - Ansible Juniper NetConf モジュールから Netconf::OpenError を理解する

Ansible を使用して構成を一部の Juniper デバイスにプッシュしています。始めるために、ここで公式デモから事実を収集する Playbook を調整しようとしています。 実際のジュニパー デバイスの 1 つを使用するようにホスト ファイルを変更しました。Ansible はすべてのモジュール ライブラリがどこにあるかを認識しているようですが、何らかの理由で、ドキュメントがないように見えるエラーがスローされます。Netconf::OpenError

自分のホストでホスト ファイルを使用する以外に、ポート 830 の代わりに tasks/nc_check.yml のポート 22 も変更しました。これは、(私の知る限り)、スイッチにアクセスできるのは SSH (ポート 22)

Juniper モジュールはすべて Ruby で記述されています。インストールしたすべての依存関係のバージョンは次のとおりです。

以下は、デモで提供された同じ Playbook を実行した場合の出力です。私の質問は次のとおりです。

  1. Netconf::OpenError エラーの原因は何ですか?
  2. Juniper スイッチの Netconf には別のポートを使用する必要がありますか? 使用するポートを知るために、ジュニパーの設定で何を見ればよいでしょうか? (EX4200 および EX4500)

    ansible-playbook junos/get_junos_facts.yml -i ホスト -vvv

    PLAY [Junos Facts を表示します。必ず -v を使用してください] * ** * ** * ** * ** * ***

    TASK: [デバイスへの NETCONF 到達可能性を確認中] * ** * ** * ** * ** * *** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.41-2345029032433 && echo $HOME/.ansible/tmp/ansible-1384993979.41-2345029032433'] <10.113.7.002> REMOTE_MODULE wait_for host="10.113.7.002" port=22 timeout="1>" <10.023. tmp/tmpwhWU6X TO /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for <10.113.7.002> EXEC ['/bin/sh', '-c', '/usr/bin/python /home/ゲートウェイ/.ansible/tmp/ansible-1384993979.41-2345029032433/wait_for; rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.41-2345029032433/ >/dev/null 2>&1'] ok: [10.113.7.002] => {「変更」: false、「経過」: 0 、 "アイテム":

    TASK: [ターゲットに連絡して Junos の事実を入手] * ** * ** * ** * ** * **** <10.113.7.002> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-1384993979.48-89494360697375 && chmod a+rx $HOME/.ansible/tmp/ansible -1384993979.48-89494360697375 && echo $ home/.ansible/tmp/ansible-138499979.48-89494360697375 '] <10.113.7.002> compmule tirt = 10.1133.7.pmm.33.7.7.pmmedule = vismule tible = vismule tible_module gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts <10.113.7.002> PUT /tmp/tmp28DLzs TO /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/arguments <1. /bin/sh', '-c', '/usr/local/bin/ruby /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts /home/gateway/.ansible/tmp/ansible-1384993979.48 -89494360697375/引数;rm -rf /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/ >/dev/null 2>&1'] 失敗: [10.113.7.002] => {「失敗」: true、「解析済み」: false無効な出力: /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:49:inopen': Netconf::OpenError (Netconf::OpenError) from /var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/transport.rb:28:in/var/lib/gems/1.9.1/gems/netconf-0.3.1/lib/net/netconf/ssh.rb:21:in initialize' from /home/gateway/.ansible/tmp/ansible-1384993979.48-89494360697375/junos_get_facts:46:innew から「initialize」を /home/gateway/.ansible/tmp/ansible- から1384993979.48-89494360697375/junos_get_facts:46:in `'

    FATAL: すべてのホストがすでに失敗しています -- 中止します

    PLAY RECAP * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * * 再試行するには、次を使用します: --limit @/ホーム/ゲートウェイ/get_junos_facts.retry

    10.113.7.002 : OK=1 変更=0 到達不能=0 失敗=1

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

sudo - ansibleプレイブックのユーザー対sudo対sudo_user

Ansible のドキュメントを読みましたが、ansible プレイブックの 3 つのパラメーター (user、sudo、sudo_user) についてまだ少し混乱しています。

パラメータの異なる組み合わせで次のプレイブックを試しました。

  1. user:deploy => 動作

  2. user:deploy and sudo: True => git タスクでハングする

  3. user:deploy, sudo: True and sudo_user: deploy => Works

sudo_user は実際に何をしますか? これらの各組み合わせをいつ、どのような理由で使用する必要がありますか?

ありがとう

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

shell - Shell コマンドを実行するための Ansible Playbook

私は最近、自分のサーバーの 1 つで Ansible に飛び込みましたが、非常に興味深く、時間を節約できることがわかりました。私は Ubuntu 専用サーバーを実行しており、Python で記述された多数の Web アプリケーションと PHP でいくつかの Web アプリケーションを構成しています。Python の場合、HTTP ゲートウェイとして uwsgi を使用しています。特定の Web アプリケーションのインスタンスを実行するために、いくつかのプロセスを開始/再起動するシェル スクリプトを作成しました。私が毎回しなければならないことは、ssh に接続してその特定のアプリケーションに移動し、スクリプトを実行することです。

必要なもの

Ansible プレイブックを作成して、パーソナル コンピューターから 1 行のコマンドですべてを実行する方法を見つけようとしていますが、その方法がわかりません。非常に説明的な (初心者向けの) ドキュメントやインターネット上のヘルプは見つかりませんでした。

質問

Ansible Playbook で Nginx を再起動するにはどうすればよいですか? プロセス ID でプロセスを強制終了するにはどうすればよいですか?

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

ansible - ansible を使用して、ディレクトリ内の指定されたセットを除くすべてのアイテムを削除するにはどうすればよいですか?

もちろん、シェルコマンドを使用することもできますが、これを行うための可能な方法があることを望んでいたので、「変更された/変更されていない」応答を取得できます。

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

php - ansibleのグレースフルリロードは冪等ですか?

現在、サーバーをプロビジョニングするために Ansible を調査しています。これは、かなりデフォルトのnginx、php-fpm、およびmysqlのセットアップです。ただし、これらのパッケージのインストールと、実行中のサービスでプレイブックをべき等にする方法について疑問に思っています。

nginx の場合、デフォルトnginx.confといくつかのファイルがconf.d/. php の場合php.iniphp-fpm.conf、 、 プールがpool.d/あり、いくつかの ini ファイルが にありconf.d/ます。すべての ansible playbook 呼び出しですべてのファイルを上書きするという考えはありますか?

すべての構成が上書きされた場合、サーバーに負荷がかかっている場合でも実行しservice nginx reloadても問題ありませんか? service php5-fpm reload初期インストールでは、サーバーが起動しないため、最初にステータスを確認し、それに基づいてと?reloadを切り替える必要があります。startreload

nginx がインストールされた Playbook を探すと、nginx を再起動するハンドラーを使用することがよくあります。ただし、これは優雅ではないため、そのアプローチはあまり好きではありません。

一般に、再起動を強制せずに、nginx、php-fpm、mysql などのサービスで ansible を使用してサーバーをプロビジョニングする一般的なパターンは何ですか?

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

amazon-web-services - ansible インベントリ ファイルの適切な構文は何ですか?

これは私のinventory.ymlファイルです:

しかし、私は得ています--list ([Errno 8] Exec format error)

このリンクに従って問題ないように見えますが、何か考えはありますか?

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

provisioning - 後で使用するためにホストをプロビジョニングして保存するための Ansible Playbook

環境 (n 個のデータベース、m 個の Web サーバーなど) をプロビジョニングし、後でそれらのホストを保存して、それらに対してデプロイを実行できるようにするいくつかの Ansible プレイブックを作成しようとしています。私が思いつくことができる最高のものはhttps://gist.github.com/geowa4/7686681です(以下にコピー)。これは、さまざまなサーバー タイプのマシンを作成し、それらをホスト ファイルに保存するという点で機能します。新しく生成されたホスト ファイルを使用するデプロイ スクリプトでは、ソース コードをデプロイする前に、正しいパッケージが正しくインストールおよび構成されていることを確認します。これは、Ansible でプロビジョニングと展開を行う唯一の方法ですか? 新しい Web サーバーをミックスに動的に追加したい場合はどうすればよいですか? 静的ホスト ファイルを手動で編集する必要はありますか? これまでのところ、Rackspace の動的インベントリ スクリプトを使用すると、多数のサーバーを一覧表示するだけで、種類別にグループ化する方法はありません。もし私がそれを手に入れることができたら、私は有頂天になるだろう.

hosts.j2:

main.yml: