問題タブ [serverspec]
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.
ruby - Chef Kitchen (kitchen-ec2) serverspec 仕様が失敗し、エラーが発生する
私は、ec2 ドライバーで Kitchen を使用して Chef とテスト プロセスを学習しており、次の serverspec ファイルがあります。
最初のテストを実行kitchen verify amazon-linux
すると成功しますが、2 番目のテストは失敗し、エラーが発生します。
サーバーに手動でログインして同じコマンド/bin/sh -c rbenv\ versions
を実行したところ、問題なく動作しました。
ここで私が間違っていることがあるかどうか誰にもわかりますか?
編集1
serverspec がコマンドを実行する$PATH
と、手動でログインしたときの変数とは異なることがわかりました。puts ENV['PATH']
テストに追加したところ、出力は次のようになりました。
/sbin:/bin:/usr/sbin:/usr/bin
ただし、手動でログインすると、次のようになります。
/home/ec2-user/.rbenv/shims:/home/ec2-user/.rbenv/bin:/home/ec2-user/.rbenv/shims:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin
テストのコマンドを に変更した/home/ec2-user/.rbenv/rbenv versions
ところ、合格しました。ここでパスを正しく機能させるために何をする必要があるか考えていますか?
編集2
そのため、serverspec が としてコマンドを実行していることを発見しました。これは、実行中に行われた のパスroot
への変更が利用できないことを意味します。ec2-user
kitchen converge
serverspec でこれを行うためのより慣用的な方法があるかどうかはわかりませんが、コマンドを次のように変更したところ、テストに合格するようになりました。
runuser -l ec2-user -c 'rbenv versions'
これによりroot
、別のユーザーとしてコマンドを実行できます。この種のテストを行うためのより良い方法を誰かが知らない限り、これを質問への回答として追加します。
ruby - Serverspec: 「パッケージをインストールする必要があります」のデフォルトは RPM です。yumを指定できない?
私はこのserverspecテストを持っています:
失敗していて、serverspecがrpm
デフォルトでインストールされたパッケージをチェックしていることに出力で気づきました。by()
次に、パッケージマネージャーを指定するために使用できるserverspecドキュメントで気づいたので、これを試しました:
ただし、これも失敗し、次のエラーが発生しました。
check_is_installed_by_yum is not implemented in Specinfra::Command::Redhat::Base::Package
ここでそのクラスのドキュメントを確認したところ、次のリストが含まれていないことに気付きましたyum
。
check_is_installed_by_cpan、check_is_installed_by_gem、check_is_installed_by_npm、check_is_installed_by_pear、check_is_installed_by_pecl、check_is_installed_by_pip、check_is_installed_by_rvm
だから今、私はではdescribe command
なくにフォールバックする必要がありdescribe package
ます:
serverspec には私が探している機能がすでに備わっているように見えるので、これはハッキリしています。足りないものはありますか?
編集
Matt の回答は、serverspec がどのようrpm -q
に機能し、どのように使用されることを意図していたかなど、いくつかのことをよりよく理解するのに役立ちました(インストールされたパッケージと同じパッケージのみを示したと思いましたが、両方ともインストールされたすべてのパッケージをリストしているようです)。それを知っているので、次のように変更することでテストに合格しました。yum list installed
by()
rpm -q
rpm
yum list
python27-pip-6.1.1-1.21.amzn1.noarch
rpm -qa
またはを使用したときに出力されるパッケージの名前ですyum list installed
。ただし、その名前全体を知っていて、ここで使用する必要があるのは少し面倒です。メソッドを使用して上記で実行しようとしていた方法と同様の方法があることを願っていますwith_version()
。
編集2
これで、次のようにテストを記述できることがわかりました。
だから、私が理解していなかったいくつかの Linux-y のことがあり、それがこの質問をする必要につながったのだと思います。rpm
そういうわけで、Matt が でシステム パッケージを検索することは で検索するのと同じであると指摘したときyum
、それは私が本当に知る必要があることをかなり説明してくれました。
ですから、これは素晴らしい質問ではないことを認識していますが、他の誰かを助けるかもしれないので削除する必要があるかどうかはわかりませんが、私が得た助けに感謝し、ポイントで報酬を与えたいからです.
ruby - Serverspec テストをリモートで実行すると、「nil:NilClass の undefined method `[]'」エラーが発生します
inifile gemを使用した Serverspec テストがあります。
がマシン上でローカルに実行された場合 ( gem がインストールされrake
ている Ubuntu ゲストまたは OS X ホストのいずれか)、テストに合格します。inifile
ただし、rake
Vagrant box に対して実行すると (つまり、SSH で Vagrant 上の Ubuntu に接続しているホスト上で)、次のメッセージが表示されて失敗します。
Serverspec のデフォルトRakefile
とspec_helper.rb
.
/tmp/testfile1.ini
内容に関係なくテストは失敗しますが、次のとおりです。
エスケープされていない文字に何らかの問題があるように思えますが、よくわかりません。
何が間違っている可能性がありますか?
ruby - Chef/Vagrant/Serverspec: パッケージのインストールを保証する仕様は失敗しますが、インストールされます
ドキュメントからは、Serverspec を使用してパッケージがインストールされていることを確認するのはかなり簡単なようですが、vim
and ag
( the_silver_searcher
) に関して興味深い問題がいくつかあります。
私はkitchen-vagrant
プラグインで Test Kitchen を使用しており、2 つのプラットフォームがあります:ubuntu-1404
とcentos-72
. 私の仕様はすべて Ubuntu に合格し、そのうちの 2 つは Centos に不合格です:vim
とag
.
ヴィム
このインストールを処理する Chef コードは非常に単純です。
package "vim"
そして、ここに仕様があります:
繰り返しますが、非常に簡単です。ただし、Centos ビルドでは次のエラーで失敗します。
それでも、サーバーにログインすると、間違いなくインストールされます。
銀
ag
Centos ではソースからビルドする必要があるのに対し、Ubuntu ではapt-get
. レシピの関連部分は次のとおりです。
そして、ここに仕様があります:
Centos の失敗:
同様に、Centos VM にログインすると、以下を使用できますag
。
これらのコマンドは、ユーザーに切り替えても機能しroot
ます。
Centos プラットフォーム用にさまざまな方法で仕様を記述して、システムをごまかそうとしました。
ag
ログイン時に入力すると ( exit status 1
)、その使用コンテンツが生成されますが、上記も機能しません。私の最後の試みは:
これは機能しますが、非常にハッキーに感じられ、必要ではないようです。
ここでおすすめはありますか?これらのパッケージで不足している/間違っていることはありますか? 最初は、ag
問題はパッケージ マネージャーではなくソースからインストールされたためだと思っていましたvim
が、パッケージ マネージャーを使用してインストールされ、ag
.
amazon-web-services - serverspec test fails to check if Docker service is running on AWS
I'm using Packer to create an AMI in AWS based on the Amazon Linux AMI, provisioned with Ansible.
Some of my serverspec tests fail and I don't understand why. First one that always fails is trying to make sure that Docker is installed and running. It always fails trying to test that the service is enabled and running. This is my spec
After googling a bit, I've tried this with same results
While provisioning with Ansible, I've tried to execute the same commands that serverspec is using for the specs, and I get what I understand is the right answer, but still specs fail.
These are the commands that serverspec is using
And this is the playbook that installs Docker, printing the output of the same commands as serverspec uses
And the output of both commands are
What I'm doing wrong?
rspec - serverspec を使用して特定のバージョンの msi がインストールされているかどうかを確認するにはどうすればよいですか?
Windows で ServerSpec を使用して、アプリケーションのインストールを検証しようとしています。Rubyファイルに次の行を書きました(Test.rbを使用)
このようにスクリプトを実行しました。
それを正しくチェックしています。しかし、特定のバージョンの msi (Windows インストーラー パッケージ) を確認したい。serverspecでそれを行う方法は?
chef-infra - InSpec コマンドは、Windows では遅すぎます。手順がありませんか?
インフラストラクチャを検証するために、Serverspec と InSpec の両方をチェックしています。Windows 2012 R2 サーバーで Serverspec を実行していましたが、目に見えるパフォーマンスの問題はなく動作していました。しかし、InSpec を実行していたとき、長い間結果が表示されず、何かミスをしたと思い、キャンセルしました。その後、再度実行しましたが、実行に非常に時間がかかりました (スクリプトには記述が 1 つしかありません)。これは InSpec で予想される動作ですか、それとも何か特別なことをする必要がありますか?
私のInSpecスクリプトは次のとおりです。