Ini ialah command knife-exec yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
knife-exec - Halaman manual untuk subperintah exec pisau.
. pisau exec subperintah menggunakan fail konfigurasi pisau untuk melaksanakan skrip Ruby dalam
konteks chef-client yang dikonfigurasikan sepenuhnya. Subperintah ini paling kerap digunakan untuk dijalankan
skrip yang hanya akan mengakses pelayan Chef satu kali (atau sebaliknya sangat jarang). guna
subperintah ini pada bila-bila masa bahawa operasi tidak menjamin penggunaan sepenuhnya pisau
perpustakaan subperintah.
Disahkan API permintaan
. pisau exec subperintah boleh digunakan untuk membuat permintaan API yang disahkan kepada Chef
pelayan menggunakan kaedah berikut:
-
│Kaedah │ Penerangan │
├───────────┼─────────────────┼─────────────────┼․․
│api.delete │ Gunakan untuk memadam objek daripada │
│ │ Pelayan tukang masak. │
├───────────┼─────────────────┼─────────────────┼․․
│api.get │ Gunakan untuk mendapatkan butiran │
│ │ objek pada pelayan Chef. │
├───────────┼─────────────────┼─────────────────┼․․
│api.post │ Gunakan untuk menambah objek pada Chef │
│ │ pelayan. │
├───────────┼─────────────────┼─────────────────┼․․
│api.put │ Gunakan untuk mengemas kini objek pada │
│ │ Pelayan tukang masak. │
└───────────┴─────────────────┴─────────────────┴────╔
Kaedah ini digunakan dengan -E pilihan, yang melaksanakan rentetan itu secara setempat pada
stesen kerja menggunakan chef-shell. Kaedah ini mempunyai sintaks berikut:
$ knife exec -E 'api.method(/endpoint)'
di mana:
· api.kaedah ialah kaedah pengesahan yang sepadan --- api.delete, api.get, api.post,
or api.put
· /titik akhir ialah titik akhir dalam API pelayan Chef
Sebagai contoh, untuk mendapatkan data untuk nod bernama "Example_Node":
$ knife exec -E 'meletakkan api.get("/nodes/Example_Node")'
dan untuk memastikan bahawa output kelihatan dalam konsol, tambahkan meletakkan di hadapan API
permintaan kebenaran:
$ knife exec -E 'meletakkan api.get("/nodes/Example_Node")'
di mana meletakkan ialah versi yang lebih pendek daripada $stdout.puts pembolehubah yang dipratentukan dalam Ruby.
Contoh berikut menunjukkan cara menambah klien bernama "IBM305RAMAC" dan /pelanggan
titik akhir, dan kemudian kembalikan kunci peribadi untuk pengguna tersebut dalam konsol:
$ client_desc = {
"name" => "IBM305RAMAC",
"admin" => palsu
}
new_client = api.post("/clients", client_desc)
meletakkan new_client["private_key"]
Syntax
Subperintah ini mempunyai sintaks berikut:
$ pisau eksec SKRIP (pilihan)
Pilihan
Subperintah ini mempunyai pilihan berikut:
-c CONFIG_FILE, --config Config_file
Fail konfigurasi untuk digunakan.
--chef-zero-port PORT
Pelabuhan di mana chef-sifar akan mendengar.
--[no-]warna
Gunakan untuk melihat output berwarna.
-d, --disable-editing
Gunakan untuk menghalang $EDITOR daripada dibuka dan untuk menerima data seadanya.
--lalai
Gunakan untuk meminta pisau menggunakan nilai lalai dan bukannya meminta pengguna untuk memberikannya.
-E KOD, --eks KOD
Rentetan kod yang akan dilaksanakan.
-e EDITOR, --editor EDITOR
$EDITOR yang digunakan untuk semua arahan interaktif.
--persekitaran PERSEKITARAN
Nama alam sekitar. Apabila pilihan ini ditambahkan pada arahan, arahan
akan berjalan hanya terhadap persekitaran yang dinamakan.
-F FORMAT, --format FORMAT
Format output: ringkasan (lalai), teks, json, keladi, dan pp.
-h, - membantu
Menunjukkan bantuan untuk arahan.
-k KUNCI, --kunci UTAMA
Kunci persendirian yang pisau akan gunakan untuk menandatangani permintaan yang dibuat oleh klien API kepada
Pelayan chef.
-p PATH:PATH, --skrip-laluan PATH:PATH
Laluan dipisahkan bertindih di mana skrip Ruby berada.
--cetak-selepas
Gunakan untuk menunjukkan data selepas operasi yang merosakkan.
-s url, --server-url URL
URL untuk pelayan Chef.
-u PENGGUNA, --pengguna PENGGUNA
Nama pengguna yang digunakan oleh pisau untuk menandatangani permintaan yang dibuat oleh klien API kepada Chef
pelayan. Pengesahan akan gagal jika nama pengguna tidak sepadan dengan kunci peribadi.
-v, --versi
Versi chef-pelanggan.
-V, --verbose
Tetapkan untuk output yang lebih terperinci. guna -VV untuk verbositi maksimum.
-y, --ya
Gunakan untuk membalas semua gesaan pengesahan dengan "Ya". pisau tidak akan meminta
pengesahan.
-z, --mod tempatan
Gunakan untuk menjalankan chef-klien dalam mod tempatan. Ini membenarkan semua arahan yang berfungsi
terhadap pelayan Chef untuk turut bekerja menentang chef-repo tempatan.
Contoh
Terdapat tiga cara untuk digunakan pisau exec untuk menjalankan fail skrip Ruby. Sebagai contoh:
$ knife exec /path/to/script_file
atau:
$ knife exec -E 'RUBY CODE'
atau:
$ pisau eksekutif
KOD RUBY
^D
Untuk menyemak status pisau menggunakan skrip Ruby bernama status.rb (yang kelihatan seperti):
printf "%-5s %-12s %-8s %s\n", "Daftar Masuk", "Nama", "Ruby", "Resipi"
nodes.semua lakukan |n|
daftar masuk = Time.at(n['ohai_time']).strftime("%F %R")
rubyver = n['bahasa']['ruby']['versi']
resipi = n.run_list.expand(_default).recipes.join(", ")
printf "%-20s %-12s %-8s %s\n", daftar masuk, n.name, rubyver, resipi
akhir
dan terletak dalam direktori bernama skrip/, masukkan:
$ skrip exec pisau/status.rb
Untuk menunjukkan memori percuma yang tersedia untuk semua nod, masukkan:
$ knife exec -E 'nodes.all {|n| meletakkan "#{n.name} mempunyai #{n.memory.total} memori percuma"}'
Untuk menyenaraikan semua indeks carian yang tersedia, masukkan:
$ knife exec -E 'meletakkan api.get("search").keys'
Untuk menanyakan nod untuk berbilang atribut menggunakan skrip Ruby bernama search_attributes.rb
(yang kelihatan seperti):
% skrip kucing/search_attributes.rb
pertanyaan = ARGV[2]
atribut = ARGV[3].split(",")
meletakkan "Pertanyaan anda: #{query}"
meletakkan "Atribut anda: #{attributes.join(" ")}"
keputusan = {}
cari(:nod, pertanyaan) lakukan |n|
hasil[n.name] = {}
atribut.setiap {|a| keputusan[n.name][a] = n[a]}
akhir
meletakkan hasil
jalan keluar 0
masukkan:
% skrip eksec pisau/search_attributes.rb "nama hos:sistem_ujian" ipaddress,fqdn
untuk mengembalikan sesuatu seperti:
Pertanyaan anda: nama hos:test_system
Atribut anda: ipaddress fqdn
{"test_system.example.com" =>{"ipaddress" =>"10.1.1.200", "fqdn" =>"test_system.example.com"}}
Gunakan knife-exec dalam talian menggunakan perkhidmatan onworks.net