問題タブ [chefspec]
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: node_name の生成と登録
私は Chef を初めて使用し、新しい node_name を生成して登録する方法がわかりません。ここで私がしたこと:
1) Chef https://manage.chef.io/loginでアカウントにサインアップし、ログインします。
2) 組織があるとしましょう
3) Chef UI ポータルで、[管理] をクリックし、スターター キットをダウンロードします。
4) スターター キットをダウンロードした後、解凍すると my-login.pem、knife.rb、my-org-validator.pem の 3 つのファイルが含まれます。
5) 私がテストしたところ、クックブックを一覧表示したり、クライアントを一覧表示したりできました...
6) knife.rb を開くと、次のように表示されます。
今私の質問は:
1) node_name "my-login" で同じスタート キットを使用し、それをすべてのサーバーにインストールすると、Chef UI に 1 つのサーバーしか表示されません。node_name が異なるすべてのサーバーに Start Kit をインストールする方法を探しています。それ、どうやったら出来るの?
2) my-org-validator.pem ファイルのみを使用して node_name を動的に生成できますか?
ありがとう
chef-infra - シェフスペックで冪等性をテストする方法
レシピの冪等性をテストするためにchefspecを使用したいと思います。
次の 2 つのリソース ステートメントを含むレシピがあるとします。
/etc/app.configファイルが既に存在する場合、appサービスが再起動するように通知されないことを証明するchefspecの例をどのように書くことができますか?
「ファイル」リソースがファイルが既に存在すると見なすようにできるモックはありますか? 最初の実行の状態を維持して、ChefSpec::ServerRunner を 2 回実行できますか (ファイルは実際には作成されていないため、実行できないと思います)? それとも、realz で物事を実現するために test-kit と Vagrant を使用する必要がありますか?
(注: 私の実際のクックブックには、構成ファイルを作成するカスタム LWRP があります。シェフ サーバーから情報を取得するため、ServerRunner を使用しています)
chef-infra - Chefspec を使用して非 Chef リソースを含める方法
以下に示すように、ジェンキンスユーザーを作成するコードを持つレシピの1つにchefspecを書きたいと思います。
ここで「jenkins_user」はシェフのリソースではありません。レシピで単体テストを実行するためのchefspecを作成するにはどうすればよいですか。
または、レシピの単体テストを実行する別の方法がある場合は、親切にお知らせください。
rspec - Chef: ノード属性が Chef Server に保存されていないことをテストするには?
シェフのゼロ実行 (ノードの状態をローカルの .json ファイルとして保存) をいくつか実行した後、ノード ファイルでこれを見つけてがっかりしました。Chef
...
"ssmtp": {
"auth_username": "secret user name",
"auth_password": "even-more-secret password"
}
Server で同じ実行を行うと、ノード データがサーバーに保存されます。もちろん、それは問題です。資格情報を置き換えたり、レシピを変更したりする必要があります。そもそもこれの原因を調査していますが、私の質問は次のとおりです。
レシピの rspec/chefspec テストを作成して、特定のノード属性がノードの .json ファイルまたは Chef Server に永続的に保存されていないことを確認するにはどうすればよいですか?
二度と起こらないように、これを仕様に追加したいと思います。
エピローグ
ここでの大きな教訓は、ノード アトリビュートに入る方法を見つけたものはすべて、ノード オブジェクト表現に保存されるということです。
rspec - RSpec: RSpec::Support:Module の未定義のメソッド `require_rspec_core' (NoMethodError)
ChefSpec で実行される HelloWorld タイプの例を取得しようとしています。実行$ chef generate cookbook learn_chef2して、適切なディレクトリ構造を持つ Chef クックブックを生成しました。
次に、default.rb に非常にシンプルな Chef レシピを作成しました。
そして、default_spec.rb での私の ChefSpec テスト:
ただし、rspec を実行すると、次のようになります。
私はRubyとRSpecが初めてで、単純な構成の問題だと確信しています。何かご意見は?
ありがとう!