問題タブ [chef-infra]
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.
chef-infra - Chef を使用した Vagrant のプロビジョニング
開発環境を Vagrant に移行するために何が必要かを調べていますが、chef を使用して VM プロビジョニング プロセスを処理するのに苦労しています。私はこれまでシェフを使用したことがなく、この分野の Vagrant ドキュメントは意図的に弱い (範囲外) ため、手を使用することができました。
これをできるだけポータブルにしたいので、URLからクックブックをロードするのが理にかなっていると思ったので、これが私のVagrantfile
.
私が単に何かを誤解しているだけであることに疑問の余地はないと思いますが、この Vagrant のコンテキストに適合すると思われるドキュメント ソースは見つかりませんでした。
ありがとう。
ruby - 外部呼び出しを使用したchef変数の設定
アプリケーションクックブックのレシピを使用して、JavaWARファイルをデプロイしています。私がやりたいのは、外部の場所(この場合はローカルのネクサスリポジトリ)からWARmd5をロードすることです。chefを使用して外部の場所から値をロードするには(文字列をSTDOUTに出力し、その値をchef変数に使用するbashを実行するなど)。
このbashのようなもの:
python - シェフの Python クックブックを使用して、virtualenv に別の Python バージョンを指定する
ubuntu 11.10 VM 内のopscode Python cookbookを使用して、Chef を使用してノードに virtualenv をインストールしようとしています。特に、アプリケーションレシピを使用して、Django と Gunicorn に対してこれを行います。
python_virtual リソースのデフォルト設定は python2.6 です。次のように、ロール ファイルのデフォルト属性をオーバーライドして、python2.7 を指定しようとしています。
ただし、これは機能しません。
ここでデフォルト値をオーバーライドするための適切な構文は何ですか?
ruby - ApacheリバースHTTPプロキシの背後にあるChefAPIサーバーは、httpsリンクではなくhttpを返します
マシン上で実行されているシェフサーバー(ポート4000でリッスンしている)があり、SSL経由でアクセスしたいと思います。そのためにApacheリバースプロキシを設定しました(ポート4001でリッスンしています)。Apacheのセットアップは次のようになります(私のマシン名はwww.example.comに置き換えられています)
問題は、chef API呼び出しによって返されるJSONのURLに、httpsではなくhttpが含まれていることです。たとえば、次のようになります。
それ以外の:
1つの例は、POSTを実行/sandboxes
して新しいサンドボックスを作成する場合です。これにより、上記のリンクが作成されます。これは、ナイフを使用して料理本をアップロードしようとするようなことを壊します。
私の知る限り、 POSTによって呼び出されるchef server createメソッドは、 Merbabsolute_urlヘルパーメソッドを呼び出してURLを生成します。/sandboxes
この時点で、私はこの問題を修正する方法について困惑しています。どういうわけか、Apacheリバースプロキシ設定を変更する必要がありますか?chefサーバーの構成オプションですか?または、他の何か?
configuration-management - 自動構成管理のパフォーマンス コスト
私は、Chef/Puppet/etc のようなツールについて初めて学んでおり、クラウド上にデプロイされたアプリケーションとの統合がどの程度 (または不十分か) なのか疑問に思っていました。
- ベンダー固有の API や、それらの API を抽象化する JCloud のようなフレームワークがあるのに、なぜ Chef を使用するのでしょうか?
- これらの構成ツールを使用すると、パフォーマンス コストがかかりますか? または (一度構成すると) ノード/マシンは、クラウド上の他の (管理されていない) マシンと同じように動作しますか?
- Chef を使用して既存のテクノロジーを構成できますか? それとも、「サポートされているベンダー/システム」のリストを提供しますか? つまり、Chef で構成された PostgreSQL サーバーがたくさんあるとしましょう。そして翌日、クレイジーな新しい RDBMS が出てきたので、それに切り替えたいと思いました。Chef がこの新しいシステムを「サポート」するのを待つ必要がありますか? それとも、Chef はベンダーに依存しませんか?
前もって感謝します!
ruby - Ruby と Chef: ハッシュの値の解決と置換
opscode シェフを使用して、MySQL クラスターのデプロイを自動化しています。目的のホストを JSON ファイルに入れ、シェフにそれらのホスト名を内部 IP アドレスに解決させ、IP アドレスを変数として設定したいと考えています。
次のような単純なハッシュがあります。
私は基本的にノードキーを取得し、ハッシュ内のすべてのキー値を調べて各キー/値を取得し、IP アドレスを返す検索関数を介して値を解析し、そのキーに値を割り当てたいと考えています。
まあ、これはうまくいきません。
個別にホスト名を IP アドレスに解決できますが、各キーと値を取得して値を解決し、解決された値に置き換える方法がよくわかりません。
ruby - デフォルトのレシピを実行せずにシェフのレシピを実行することは可能ですか?
nginx クックブックには 2 つのシェフのレシピがあります。1 つは default.rb という名前で、もう 1 つは sites.rb という名前です。サイトのレシピを実行すると
次に、デフォルトのレシピも実行されます。これを防ぐにはどうすればよいですか?
chef-infra - 特定の条件が満たされない場合にchef-clientの実行を中止する方法はありますか?
単純なアプリサーバー/データベースサーバーのセットアップについて考えてみます。データベースサーバーの場所を示す値をアプリサーバーに設定し、データベースサーバーにいくつかのアクセス許可を設定してアプリサーバーからの接続のみを許可する必要があります。
search(:node、 "role:db-server")
と
search(:node、 "role:app-server")
どちらのマシンのレシピ実行からも機能して、必要な情報を取得できます。しかし、検索を実行するときに1つのサーバーが存在しない場合はどうなるでしょうか。「この実行を続行しないでください」と言って、完了していないとマークする方法はありますか。そうすれば、次にchef-clientがそのマシンで実行されたときに、再試行されます。
あるいは、このユースケースに役立つ、私が見逃している気の利いたシェフがいますか(「通知」と「サブスクライブ」は、私が知る限り、それらは私が望むものとほぼ同じであるように見えます)ノード内で発生するものに関心があります)より良いですか?私が検討しているもう1つのことは、スリープ/チェックループを設定して、一方の実行を効果的に一時停止し、もう一方のサーバーが必要な場所に到達するようにすることですが、そのソリューションはかなりエレガントではなく、より複雑な設定でデッドロックの問題が発生する傾向があります。
apt - 他のレシピを実行する前に Chef に apt-get update を実行させるにはどうすればよいですか
現在、Vagrantfile には次の内容があります。
レシピリストに追加したソフトウェアをインストールするには、他のソフトウェアをインストールする前に VM にapt-get アップデートを発行させる必要があります。
私は、これが「apt」レシピの機能の 1 つであるという印象を受けました。最初に更新を実行するということです。
vagrant プロビジョニングを行ったときの出力は次のとおりです。
ruby-on-rails - Rails アプリに Kissmetrics を適切にインストールするにはどうすればよいですか?
KM API をインストールする Ruby API メソッドを使用していますが、正しく実行されているかどうかわかりません。最初にしたことは、KM init コードを init.rb ファイルに入れることです。
明らかに、API-KEY を自分の API キーに置き換えました。次に、それを行う適切な方法は、データをファイルに保存し、cron ジョブとして 5 分ごとに KM に送信することであると述べています。私の最初の質問は - /var/logs/km/ はデータを保存する正しいディレクトリですか? Railsアプリにそのディレクトリが実際に表示されません。
次に、シェフのレシピを使用して、次のように cron ジョブを送信しています。
これが正しいかどうかもわかりません。この例では、cron コードを次のように示しています。
これが、シェフでcronジョブを作成した方法です。いくつか質問があります。機能しているかどうかはどうすればわかりますか? cron ジョブのデータが保存されているファイルが見つからないようです。間違ったディレクトリに置いたのでしょうか? 私のシェフのレシピは正しいですか?
ありがとう!