لمزيد من المعلومات حول حالات المشروع واتفاقيات مستوى الخدمة، راجع هذه الوثائق.
يعد Chef InSpec إطار عمل اختبار مفتوح المصدر للبنية التحتية مع لغة يمكن قراءتها بواسطة الإنسان والآلية لتحديد متطلبات الامتثال والأمان والسياسة.
# Disallow insecure protocols by testing
describe package ( 'telnetd' ) do
it { should_not be_installed }
end
describe inetd_conf do
its ( "telnet" ) { should eq nil }
end
يجعل Chef InSpec من السهل إجراء اختباراتك أينما تريد. تم العثور على المزيد من الخيارات في مستندات CLI الخاصة بنا.
# run test locally
inspec exec test.rb
# run test on remote host via SSH
inspec exec test.rb -t ssh://user@hostname -i /path/to/key
# run test on remote host using SSH agent private key authentication. Requires Chef InSpec 1.7.1
inspec exec test.rb -t ssh://user@hostname
# run test on remote windows host via WinRM
inspec exec test.rb -t winrm://Administrator@windowshost --password ' your-password '
# run test on remote windows host via WinRM as a domain user
inspec exec test.rb -t winrm://windowshost --user ' UserName@domain ' --password ' your-password '
# run test on docker container
inspec exec test.rb -t docker://container_id
يتطلب Chef InSpec وجود روبي ( >= 3.0.3 ).
تتطلب كافة الإصدارات المدعومة حاليًا من Chef InSpec (4.0 والإصدارات الأحدث) قبول اتفاقية ترخيص المستخدم النهائي (EULA) لاستخدامها. يرجى زيارة صفحة قبول الترخيص على موقع مستندات Chef لمزيد من المعلومات.
تتوفر حزمة Chef InSpec لأنظمة MacOS وRedHat وUbuntu وWindows. قم بتنزيل أحدث حزمة من تنزيلات Chef InSpec أو قم بتثبيت Chef InSpec عبر البرنامج النصي:
# RedHat, Ubuntu, and macOS
curl https://chefdownload-commercial.chef.io/install.sh?license_id= | sudo bash -s -- -P inspec
# Windows
. { iwr -useb https://chefdownload-commercial.chef.io/install.ps1?license_id= } | iex; install -project inspec
استبدل
بمعرف الترخيص الخاص بك.
لمزيد من المعلومات حول البرامج النصية للتثبيت، راجع وثائق Chef Install Script.
قد يتطلب تثبيت Chef InSpec من المصدر تثبيت أدوات بناء روبي لإدارة تبعيات الأحجار الكريمة. (يتوفر متغير خالٍ من المترجم مع وظائف منخفضة؛ استخدم inspec-core-bin
و inspec-core
.)
لتثبيت أدوات البناء، استخدم مدير الحزم الخاص بك.
بالنسبة إلى CentOS/RedHat/Fedora:
yum -y install ruby ruby-devel make gcc gcc-c++
لأوبونتو:
apt-get -y install ruby ruby-dev gcc g++ make
لتثبيت ملف inspec
القابل للتنفيذ، والذي يتطلب قبول ترخيص Chef، قم بتشغيل:
gem install inspec-bin
يمكنك أيضًا استخدام inspec
كمكتبة، بدون أي ملف قابل للتنفيذ. وهذا لا يتطلب قبول الترخيص. لتثبيت المكتبة كجوهرة، قم بتشغيل:
gem install inspec
قم بتنزيل الصورة وحدد وظيفة للراحة:
لنظام التشغيل Linux:
docker pull chef/inspec
function inspec { docker run -it --rm -v $(pwd):/share chef/inspec "$@"; }
لنظام التشغيل Windows (باورشيل):
docker pull chef/inspec
function inspec { docker run -it --rm -v "$(pwd):/share" chef/inspec $args; }
إذا قمت باستدعاء inspec
من الصدفة الخاصة بك، فإنه يقوم تلقائيًا بتثبيت الدليل الحالي في حاوية Docker. لذلك يمكنك بسهولة استخدام الاختبارات المحلية والملفات الرئيسية. ملحوظة: الملفات الموجودة في الدليل الحالي والدلائل الفرعية فقط هي المتوفرة داخل الحاوية.
$ ls -1
vagrant
test.rb
$ inspec exec test.rb -t ssh://[email protected]:11022 -i vagrant
..
Finished in 0.04321 seconds (files took 0.54917 seconds to load)
2 examples, 0 failures
لفحص حاويات عامل الإرساء التي تعمل على المضيف باستخدام حاوية InSpec، نحتاج إلى ربط مقبس Unix /var/run/docker.sock
من الجهاز المضيف إلى حاوية InSpec.
docker pull chef/inspec
function inspec { docker run -it --rm -v $(pwd):/share -v /var/run/docker.sock:/var/run/docker.sock chef/inspec "$@"; }
/var/run/docker.sock
هو مقبس Unix الذي يستمع إليه برنامج Docker الخفي افتراضيًا.
لاحظ أن التثبيت من حزم نظام التشغيل من صفحة التنزيل هو الطريقة المفضلة.
وهذا يتطلب المجمع:
bundle install
bundle exec inspec help
لتثبيته كجوهرة محليًا، قم بتشغيل:
gem build inspec.gemspec
gem install inspec- * .gem
على نظام التشغيل Windows، تحتاج إلى تثبيت Ruby مع Ruby Development Kit لإنشاء التبعيات بامتداداتها الأصلية.
حاليًا، طريقة التثبيت هذه تدعم Linux فقط. راجع موقع Chef Habitat لمزيد من المعلومات.
قم بتنزيل ثنائي hab
من موقع Chef Habitat.
hab pkg install chef/inspec --binlink
inspec
يجب أن تكون الآن قادرًا على تشغيل:
$ inspec --help
Commands:
inspec archive PATH # archive a profile to tar.gz (default) ...
inspec check PATH # verify all tests at the specified PATH
inspec automate SUBCOMMAND ... # Chef Automate commands
inspec compliance SUBCOMMAND ... # Chef Automate commands (backwards compatible alias)
inspec detect # detect the target OS
inspec exec PATH(S) # run all test files at the specified PATH.
inspec help [COMMAND] # Describe available commands or one spe...
inspec init TEMPLATE ... # Scaffolds a new project
inspec json PATH # read all tests in PATH and generate a ...
inspec shell # open an interactive debugging shell
inspec supermarket SUBCOMMAND ... # Supermarket commands
inspec version # prints the version of this tool
Options:
[--diagnose], [--no-diagnose] # Show diagnostics (versions, configurations)
describe port ( 80 ) do
it { should_not be_listening }
end
describe port ( 443 ) do
it { should be_listening }
its ( 'protocols' ) { should include 'tcp' }
end
kitchen.yml
الخاص بك للتأكد من أن Vagrant فقط هو الذي تم تكوينه كبرنامج التشغيل. سوف يجتاز تنسيق %w() عملية فحص Rubocop ويسمح لك بالوصول إلى التعيينات المتداخلة. describe yaml ( '.kitchen.yml' ) do
its ( %w( driver name ) ) { should eq ( 'vagrant' ) }
end
ألقِ نظرة أيضًا على الأمثلة لدينا لـ:
control 'or-test' do
impact 1.0
title 'This is a OR test'
describe . one do
describe ssh_config do
its ( 'Protocol' ) { should eq ( '3' ) }
end
describe ssh_config do
its ( 'Protocol' ) { should eq ( '2' ) }
end
end
end
إجراء اختبارات ضد أهداف مختلفة:
# run test locally
inspec exec test.rb
# run test on remote host on SSH
inspec exec test.rb -t ssh://user@hostname
# run test on remote windows host on WinRM
inspec exec test.rb -t winrm://Administrator@windowshost --password ' your-password '
# run test on docker container
inspec exec test.rb -t docker://container_id
# run test on podman container
inspec exec test.rb -t podman://container_id --podman-url " unix:///run/user/1000/podman/podman.sock "
# run with sudo
inspec exec test.rb --sudo [--sudo-password ...] [--sudo-options ...] [--sudo_command ...]
# run in a subshell
inspec exec test.rb --shell [--shell-options ...] [--shell-command ...]
# run a profile targeting AWS using env vars
inspec exec test.rb -t aws://
# or store your AWS credentials in your ~/.aws/credentials profiles file
inspec exec test.rb -t aws://us-east-2/my-profile
# run a profile targeting Azure using env vars
inspec exec test.rb -t azure://
# or store your Azure credentials in your ~/.azure/credentials profiles file
inspec exec test.rb -t azure://subscription_id
تحقق من التكوين الخاص بك واكتشف
id= $( docker run -dti ubuntu:14.04 /bin/bash )
inspec detect -t docker:// $id
والتي سوف توفر لك:
{"family":"ubuntu","release":"14.04","arch":null}
الأهداف البعيدة
منصة | الإصدارات | أبنية |
---|---|---|
إيكس | 6.1، 7.1، 7.2 | ppc64 |
سينت أو إس | 6، 7، 8 | i386, x86_64 |
ديبيان | 9، 10 | i386, x86_64 |
فري بي إس دي | 9، 10، 11 | i386، أيه إم دي 64 |
ماك | 11.0 | x86_64 |
أوراكل إنتربرايز لينكس | 6، 7، 8 | i386, x86_64 |
ريد هات إنتربرايز لينكس | 7، 8، 9 | i386, x86_64 |
سولاريس | 10، 11 | سبارك، إلى x86 |
ويندوز* | 8، 8.1، 10، 2012، 2012R2، 2016، 2019 | x86, x86_64 |
أوبونتو لينكس | x86, x86_64 | |
سوزي لينكس خادم المؤسسة | 12، 15 | x86_64 |
لينكس العلمي | 6، 7 | i386, x86_64 |
فيدورا | x86_64 | |
أوبن سوزي | 15 | x86_64 |
أومنيOS | x86_64 | |
جنتو لينكس | x86_64 | |
آرتش لينكس | x86_64 | |
اتش بي-UX | 11.31 | ia64 |
جبال الألب لينكس | x86_64 |
* بالنسبة لنظام التشغيل Windows، يلزم وجود PowerShell 5.0 أو أعلى.
بالإضافة إلى ذلك، يتم توفير دعم وقت التشغيل لما يلي:
منصة | الإصدارات | قوس |
---|---|---|
ماك | 11+ | x86_64, الذراع64 |
ديبيان | 9، 10 | x86_64, aarch64 |
RHEL | 7، 8، 9 | x86_64, aarch64 |
فيدورا | 29+ | x86_64, aarch64 |
أوبونتو | 16.04+ | x86_64, aarch64 |
ويندوز | 8+ | x86_64 |
ويندوز | 2012+ | x86_64 |
التوثيق
تعلم الشيف:
العلاقة بالأدوات الأخرى (RSpec، Serverspec):
يمكنك مشاركة ملفات تعريف Chef InSpec الخاصة بك في قسم الأدوات والمكونات الإضافية في Chef Supermarket. قم بتسجيل الدخول وأضف تفاصيل ملفك الشخصي.
يمكنك أيضًا تصفح السوبر ماركت بحثًا عن ملفات تعريف الامتثال المشتركة.
تم إنشاء Chef InSpec في الأصل بواسطة كريستوف هارتمان (@chris-rock) ودومينيك ريختر (@arlimus).
الشيف InSpec مستوحى من مشروع Serverspec الرائع. مجد لmizzy وجميع المساهمين!
موارد AWS مستوحاة من inspec-aws من arothian.
مجتمع Chef InSpec والمشرفون نشيطون ومفيدون للغاية. ويستفيد هذا المشروع بشكل كبير من هذا النشاط.
إذا كنت ترغب في الدردشة مع المجتمع والمشرفين، انضم إلينا مباشرة في قناة #inspec
على Chef Community Slack.
للتذكير، يُتوقع من جميع المشاركين اتباع قواعد السلوك.
نحن نقدم اختبارات unit
integration
.
unit
السلوك المقصود للتنفيذintegration
ضد الأجهزة الافتراضية المستندة إلى Docker عبر اختبار المطبخ وفحص المطبخbundle exec rake test
إذا كنت ترغب في تشغيل ملف اختبار واحد فقط:
bundle exec m test/unit/resources/user_test.rb
يمكنك أيضًا إجراء اختبار واحد داخل الملف حسب رقم السطر:
bundle exec m test/unit/resources/user_test.rb -l 123
تقوم هذه الاختبارات بتنزيل العديد من الأجهزة الافتراضية، للتأكد من أن Chef InSpec يعمل كما هو متوقع عبر أنظمة تشغيل مختلفة.
تتطلب هذه الاختبارات الجواهر التالية:
يتم توفير هذه الأحجار الكريمة عبر مجموعة integration
في ملف Gemfile الخاص بالمشروع.
بالإضافة إلى ذلك، تتطلب هذه الاختبارات أن يكون Docker متاحًا على جهازك أو على جهاز Docker بعيد تم تكوينه عبر متغيرات بيئة Docker القياسية.
قم بإدراج مثيلات الاختبار المختلفة المتاحة:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen list
تم تكوين الأنظمة الأساسية ومجموعات الاختبار في ملف kitchen.dokken.yml
. بمجرد معرفة المثيل الذي ترغب في اختباره، اختبر هذا المثيل:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test < INSTANCE_NAME >
يمكنك اختبار جميع المثيلات بالتوازي مع:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test -c 3
مؤلف: | دومينيك ريختر ([email protected]) |
مؤلف: | كريستوف هارتمان ([email protected]) |
حقوق النشر: | حقوق الطبع والنشر (ج) لعام 2015 لشركة Vulcano Security GmbH. |
حقوق النشر: | حقوق الطبع والنشر (ج) 2017-2020 لشركة Chef Software Inc. |
حقوق النشر: | حقوق الطبع والنشر (ج) 2020-2023 لشركة Progress Software Corp. |
رخصة: | ترخيص أباتشي، الإصدار 2.0 |
رخصة: | اتفاقية ترخيص المستخدم النهائي للشيف |
يتم توفير التوزيعات المجمعة لمنتجات Progress® Chef® التي تم الحصول عليها من أي مصدر توزيع معتمد من Progress Chef وفقًا لاتفاقية ترخيص المستخدم النهائي لـ Progress Chef على https://www.chef.io/end-user-license-agreement، ما لم تكن هناك اتفاقية منفذة سارية المفعول بينك وبين شركة Progress التي تغطي منتجات Progress Chef ("الاتفاقية الرئيسية")، وفي هذه الحالة تسري الاتفاقية الرئيسية.
كود المصدر الذي تم الحصول عليه من مستودع Chef GitHub متاح ضمن Apache-2.0، والذي تم تضمين نسخة منه أدناه.
مرخص بموجب ترخيص Apache، الإصدار 2.0 ("الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.