این دستور knife-exec است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
knife-exec - صفحه مرد برای فرمان فرعی knife exec.
La چاقو exec دستور فرعی از فایل پیکربندی knife برای اجرای اسکریپت های Ruby در
زمینه یک سرآشپز-مشتری کاملاً پیکربندی شده. این دستور فرعی اغلب برای اجرا استفاده می شود
اسکریپت هایی که فقط یک بار (یا به ندرت) به سرور آشپز دسترسی خواهند داشت. استفاده کنید
این دستور فرعی هر زمانی که عملیاتی استفاده کامل از چاقو را تضمین نمی کند
کتابخانه فرمان فرعی
تأیید شده API درخواست ها
La چاقو exec دستور فرعی را می توان برای ایجاد درخواست های API احراز هویت شده به سرآشپز استفاده کرد
سرور با استفاده از روش های زیر:
┌───────────┬──────-
│روش │ توضیحات │
├───────────┼─────────-
│api.delete │ برای حذف یک شی از │ استفاده کنید
│ │ سرور آشپز. │
├───────────┼─────────-
│api.get │ برای دریافت جزئیات یک │ استفاده کنید
│ │ شی در سرور آشپز. │
├───────────┼─────────-
│api.post │ برای افزودن یک شی به سرآشپز استفاده کنید │
│ │ سرور. │
├───────────┼─────────-
│api.put │ برای به روز رسانی یک شی در │ استفاده کنید
│ │ سرور آشپز. │
└───────────┴─────
این روش ها با استفاده از -E گزینه ای که آن رشته را به صورت محلی روی آن اجرا می کند
ایستگاه کاری با استفاده از chef-shell. این متدها دارای نحو زیر هستند:
$ knife exec -E 'api.method(/endpoint)'
که در آن:
· روش api روش احراز هویت مربوطه است --- api.delete, api.get, api.post,
or api.put
· /نقطه پایانی یک نقطه پایانی در API سرور Chef است
به عنوان مثال، برای دریافت داده های یک گره به نام "Example_Node":
$ knife exec -E 'puts api.get("/nodes/Example_Node")'
و برای اطمینان از اینکه خروجی در کنسول قابل مشاهده است، آن را اضافه کنید قرار می دهد در مقابل API
درخواست مجوز:
$ knife exec -E 'puts api.get("/nodes/Example_Node")'
جایی که قرار می دهد نسخه کوتاهتر است $stdout.puts متغیر از پیش تعریف شده در روبی
مثال زیر نحوه اضافه کردن یک کلاینت به نام "IBM305RAMAC" را نشان می دهد /مشتریان
نقطه پایانی، و سپس کلید خصوصی آن کاربر را در کنسول برگردانید:
$ client_desc = {
"name" => "IBM305RAMAC"،
"admin" => نادرست
}
new_client = api.post("/clients", client_desc)
new_client["private_key"] را قرار می دهد
نحو
این دستور فرعی دارای دستور زیر است:
$ knife exec SCRIPT (گزینهها)
گزینه
این دستور فرعی دارای گزینه های زیر است:
-c CONFIG_FILE، - پیکربندی CONFIG_FILE
فایل پیکربندی برای استفاده
--سرآشپز صفر بندر PORT
بندری که سرآشپز صفر به آن گوش خواهد داد.
--[بدون رنگ
برای مشاهده خروجی رنگی استفاده کنید.
-د، - غیر فعال کردن ویرایش
برای جلوگیری از باز شدن $EDITOR و پذیرش داده ها همانطور که هست استفاده کنید.
-- پیش فرض ها
برای داشتن چاقو از مقدار پیشفرض استفاده کنید به جای اینکه از کاربر بخواهید آن را ارائه دهد.
-E کد، -- اجرا CODE
رشته ای از کد که اجرا خواهد شد.
-e ویرایشگر، -- ویرایشگر تدوین
$EDITOR که برای همه دستورات تعاملی استفاده می شود.
--محیط محیط زیست
نام محیط زیست. هنگامی که این گزینه به یک دستور اضافه می شود، دستور
فقط در برابر محیط نامگذاری شده اجرا می شود.
-F فرمت، --قالب FORMAT
فرمت خروجی: خلاصه (به طور پیش فرض) متن, json, یاملو pp.
-h، --کمک
راهنمای دستور را نشان می دهد.
-k کلید ، -- کلید KEY
کلید خصوصی که knife از آن برای امضای درخواست های ارائه شده توسط مشتری API به آن استفاده می کند
سرور سرآشپز.
-p PATH: PATH ---اسکریپت-مسیر PATH: PATH
مسیری جدا از دو نقطه که اسکریپت های Ruby در آن قرار دارند.
--چاپ بعد از
برای نمایش داده ها پس از یک عملیات مخرب استفاده کنید.
-s URL ، ---server-url URL
URL سرور آشپز.
-u کاربر، --کاربر USER
نام کاربری که توسط چاقو برای امضای درخواست های ارائه شده توسط مشتری API به سرآشپز استفاده می شود
سرور اگر نام کاربری با کلید خصوصی مطابقت نداشته باشد، احراز هویت ناموفق خواهد بود.
-v، - نسخه
نسخه سرآشپز-مشتری.
-V، -- پرحرف
برای خروجی های پرمخاطب تر تنظیم کنید. استفاده کنید -vv برای حداکثر پرحرفی
-y، --آره
برای پاسخ دادن به تمام درخواستهای تأیید با «بله» استفاده کنید. چاقو نمی خواهد
تائیدیه.
-z ، --حالت محلی
برای اجرای سرآشپز-کلاینت در حالت محلی استفاده کنید. این اجازه می دهد تا تمام دستوراتی که کار می کنند
در برابر سرور سرآشپز همچنین در برابر مخزن سرآشپز محلی کار کنید.
مثال ها
سه راه برای استفاده وجود دارد چاقو exec برای اجرای فایل های اسکریپت Ruby. مثلا:
$ knife exec /path/to/script_file
و یا:
$ knife exec -E 'RUBY CODE'
و یا:
مدیر عامل چاقو
کد یاقوت
^D
برای بررسی وضعیت چاقو با استفاده از اسکریپت Ruby به نام status.rb (که به نظر می رسد):
printf "%-5s %-12s %-8s %s\n"، "Check In"، "Name"، "Ruby"، "Recipes"
nodes.all do |n|
checkin = Time.at(n['ohai_time']).strftime("%F %R")
rubyver = n['زبان']['ruby']['نسخه']
recipes = n.run_list.expand(_default).recipes.join(")
printf "%-20s %-12s %-8s %s\n"، اعلام حضور، n.name، rubyver، دستور العمل ها
پایان
و در دایرکتوری به نام قرار دارد متن /، وارد:
$ knife exec scripts/status.rb
برای نمایش حافظه آزاد موجود برای همه گره ها، وارد کنید:
$ knife exec -E 'nodes.all {|n| "#{n.name} دارای #{n.memory.total} حافظه آزاد است"} را قرار میدهد.
برای فهرست کردن همه فهرستهای جستجوی موجود، وارد کنید:
$ knife exec -E 'keys api.get("جستجو").
برای پرس و جو از یک گره برای چندین ویژگی با استفاده از یک اسکریپت Ruby به نام search_attributes.rb
(که به نظر می رسد):
% cat scripts/search_attributes.rb
پرس و جو = ARGV[2]
ویژگی = ARGV[3].split("")
"پرس و جوی شما: #{query}" را قرار می دهد
"ویژگی های شما: #{attributes.join(" ")}" را قرار می دهد
نتایج = {}
search(:node, query) do |n|
نتایج[n.name] = {}
صفات.هر {|a| نتایج[n.name][a] = n[a]}
پایان
نتایج می دهد
خروج 0
وارد:
% knife exec scripts/search_attributes.rb "hostname:test_system" ipaddress,fqdn
برای برگرداندن چیزی شبیه به:
درخواست شما: hostname:test_system
ویژگی های شما: ipaddress fqdn
{"test_system.example.com"=>{"ipaddress"=>"10.1.1.200"، "fqdn"=>"test_system.example.com"}}
با استفاده از خدمات onworks.net به صورت آنلاین از knife-exec استفاده کنید