เบเบตเปเปเบกเปเบเบเบณเบชเบฑเปเบเบกเบตเบ-exec เบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเปเปเบ OnWorks เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเปเบฎเบเบเบดเปเบเบเบฃเบตเปเบเบเปเบเปเบซเบเบถเปเบเปเบเบซเบผเบฒเบเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบเปเบฅเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบฑเปเบ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator
เปเบเบเบเบฒเบ:
NAME
เบกเบตเบ-exec - เบซเบเปเบฒเบเบตเปเบเบนเปเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบชเบฑเปเบเบเปเบญเบเบเบญเบเบกเบตเบ exec.
เปเบเป เบกเบตเบ exec เบเปเบฒเบชเบฑเปเบเบเปเบญเบเปเบเปเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบกเบตเบเปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบ Ruby scripts เปเบ
เบเปเบฅเบดเบเบปเบเบเบญเบ chef-client เบเบตเปเปเบเปเบเปเบฒเบเบปเบเปเบงเปเบขเปเบฒเบเบชเบปเบกเบเบนเบ. เบเปเบฒเบชเบฑเปเบเบเปเบญเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเบซเบผเบฒเบเบเบตเปเบชเบธเบเปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบ
scripts เบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเบดเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ Chef เบเบฝเบเปเบเปเบซเบเบถเปเบเบเบฑเปเบ (เบซเบผเบทเบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบเบซเบผเบฒเบเปเบฅเบทเปเบญเบเป). เปเบเป
เบเปเบฒเบชเบฑเปเบเบเปเบญเบเบเบตเปเบเบธเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเปเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบกเบตเบเบขเปเบฒเบเปเบเบฑเบกเบเบตเป
เบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเปเบฒเบชเบฑเปเบเบเปเบญเบ.
เบฎเบฑเบเบฎเบญเบ API เบเบฒเบเบฎเปเบญเบเบเป
เปเบเป เบกเบตเบ exec เบเปเบฒเบชเบฑเปเบเบเปเบญเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเป API เบเบตเปเบเบทเบเบเปเบญเบเบเบฑเบ Chef
เปเบเบตเบเปเบงเบตเปเบเบเปเบเปเบงเบดเบเบตเบเบฒเบเบเปเปเปเบเบเบตเป:
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โเบงเบดเบเบตเบเบฒเบ โ เบฅเบฒเบเบฅเบฐเบญเบฝเบ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โapi.delete โ เปเบเปเปเบเบทเปเบญเบฅเบถเบเบงเบฑเบเบเบธเบญเบญเบเบเบฒเบ โ
โ โ เปเบเบตเบเปเบงเบต Chef. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โapi.get โ เปเบเปเปเบเบทเปเบญเปเบญเบปเบฒเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบ โ
โ โ เบงเบฑเบเบเบธเบขเบนเปเปเบเปเบเบตเบเปเบงเบต Chef. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โapi.post โ เปเบเปเปเบเบทเปเบญเปเบเบตเปเบกเบงเบฑเบเบเบธเปเบชเป Chef โ
โ โ เปเบเบตเบเปเบงเบต. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โapi.put โ เปเบเปเปเบเบทเปเบญเบญเบฑเบเปเบเบเบงเบฑเบเบเบธเปเบ โ
โ โ เปเบเบตเบเปเบงเบต Chef. โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
เบงเบดเบเบตเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบทเบเบเปเบฒเปเบเปเบเบฑเบ -E เบเบฒเบเปเบฅเบทเบญเบ, เปเบเบดเปเบเบเบฐเบเบดเบเบฑเบ string เบเบตเปเบเปเบญเบเบเบดเปเบเบขเบนเปเปเบ
เบชเบฐเบเบฒเบเบตเปเบฎเบฑเบเบงเบฝเบเปเบเบเปเบเป chef-shell. เบงเบดเบเบตเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบกเบต syntax เบเบฑเปเบเบเปเปเปเบเบเบตเป:
$ เบกเบตเบ exec -E 'api.method(/endpoint)'
เบเปเบญเบเบเบตเป:
ยท api.เบงเบดเบเบตเบเบฒเบ เปเบกเปเบโเบงเบดโเบเบตโเบเบฒเบโเบเบงเบโเบชเบญเบโเบเบตเปโเบชเบญเบโเบเปเบญเบโเบเบฑเบ --- api.delete, api.get, api.post,
or api.put
ยท /เบเบธเบเบเบปเบ เปเบเบฑเบเบเบธเบเบชเบดเปเบเบชเบธเบเปเบ Chef server API
เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบเบชเปเบฒเบฅเบฑเบ node เบเบตเปเบกเบตเบเบทเปเบงเปเบฒ "Example_Node":
$ เบกเบตเบ exec -E 'เบงเบฒเบ api.get("/nodes/Example_Node")'
เปเบฅเบฐเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเปเบซเบฑเบเปเบเปเปเบ console, เปเบเบตเปเบก puts puts เบขเบนเปเบเบฒเบเบซเบเปเบฒเบเบญเบ API
เบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบญเบฐโเบเบธโเบเบฒเบโ:
$ เบกเบตเบ exec -E 'เบงเบฒเบ api.get("/nodes/Example_Node")'
เบเปเบญเบเบเบตเป puts puts เปเบกเปเบเบชเบฐเบเบฑเบเบเบตเปเบชเบฑเปเบเบเบงเปเบฒเบเบญเบ $stdout.puts เบเบปเบงเปเบเบเบตเปเปเบเปเบเปเบฒเบเบปเบเปเบงเปเบฅเปเบงเบเปเปเบฒเปเบ Ruby.
เบเบปเบงเบขเปเบฒเบเบเปเปเปเบเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบเปเบเบตเปเบกเบฅเบนเบเบเปเบฒเบเบตเปเบกเบตเบเบทเปเบงเปเบฒ "IBM305RAMAC" เปเบฅเบฐ / เบฅเบนเบเบเปเบฒ
endpoint, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเบปเปเบเบเบทเบเบฅเบฐเบซเบฑเบเบชเปเบงเบเบเบปเบงเบชเปเบฒเบฅเบฑเบเบเบนเปเปเบเปเบเบฑเปเบเปเบ console:
$ client_desc = {
"เบเบทเป" => "IBM305RAMAC",
"admin" => เบเปเปเบเบทเบเบเปเบญเบ
}
new_client = api.post("/clients", client_desc)
เปเบชเป new_client["private_key"]
syntax
เบเปเบฒเบชเบฑเปเบเบเปเบญเบเบเบตเปเบกเบต syntax เบเบฑเปเบเบเปเปเปเบเบเบตเป:
$ เบกเบตเบ exec SCRIPT (เบเบฒเบเปเบฅเบทเบญเบ)
เบเบฒเบเปเบฅเบทเบญเบเปเบเบเบฒเบ
เบเปเบฒเบชเบฑเปเบเบเปเบญเบเบเบตเปเบกเบตเบเบฒเบเปเบฅเบทเบญเบเบเปเปเปเบเบเบตเป:
-c CONFIG_FILE, --config CONFIG_FILE
เปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบเบฐเปเบเป.
--chef-เบชเบนเบ-เบเบญเบ PORT
เบเบญเบเบเบตเป chef-zero เบเบฐเบเบฑเบ.
--[เบเปเป-]เบชเบต
เปเบเปเปเบเบทเปเบญเปเบเบดเปเบเบเบปเบเบเบฐเบฅเบดเบเบชเบต.
-d, --เบเบดเบโเบเบฒเบโเปเบเปโเปเบโ
เปเบเปเปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเปเปเปเบซเป $EDITOR เบเบทเบเปเบเบตเบ เปเบฅเบฐเบฎเบฑเบเปเบญเบปเบฒเบเปเปเบกเบนเบเบเบฒเบกเบเบตเปเปเบเบฑเบเบขเบนเป.
--เบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ
เบเบฒเบเบเปเบฒเปเบเปเบกเบตเบเปเบเปเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเบตเปเบเบฐเบเปเปเบซเปเบเบนเปเปเบเปเบชเบฐเบซเบเบญเบเบซเบเบถเปเบ.
-E เบฅเบฐเบซเบฑเบ, --exec CODE
เบชเบฐเบเบฃเบดเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบ.
-e เบเบฑเบเบเบฒเบเบดเบเบฒเบ, --เบเบฑเบเบเบฒเบเบดเบเบฒเบ EDITOR
$EDITOR เบเบตเปเบเบทเบเบเปเบฒเปเบเปเบชเปเบฒเบฅเบฑเบเบเปเบฒเบชเบฑเปเบเปเบเปเบเบญเบเบเบฑเบเบซเบกเบปเบ.
-- เบชเบดเปเบโเปเบงเบโเบฅเปเบญเบกโ ENVIRONMENT
เบเบทเปเบเบญเบเบชเบดเปเบเปเบงเบเบฅเปเบญเบก. เปเบกเบทเปเบญเบเบปเบงเปเบฅเบทเบญเบเบเบตเปเบเบทเบเปเบเบตเปเบกเปเบชเปเบเปเบฒเบชเบฑเปเบ, เบเปเบฒเบชเบฑเปเบ
เบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฝเบเปเบเปเบเปเปเบเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเบกเบตเบเบทเป.
-F เบฎเบนเบเปเบเบ, -- เบฎเบนเบเปเบเบ เบฎเบนเบเปเบเบ
เบฎเบนเบเปเบเบเบเบปเบเบเบฐเบฅเบดเบ: เบชเบฐโเบซเบผเบธเบโเบชเบฑเบโเบฅเบงเบก (เบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ), เบเปเปเบเบงเบฒเบก, json, เบขเบญเบ, เปเบฅเบฐ pp.
-เบ, - เบเปเบงเบ
เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบชเปเบฒเบฅเบฑเบเบเปเบฒเบชเบฑเปเบ.
-k เบเบต, --key KEY
เบเบฐเปเบเบชเปเบงเบเบเบปเบงเบเบตเปเบกเบตเบเบเบฐเปเบเปเปเบเบทเปเบญเปเบเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบตเปเปเบฎเบฑเบเปเบเบเบฅเบนเบเบเปเบฒ API เบเบฑเบ
เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเปเปเบเบปเบง.
-p เปเบชเบฑเปเบเบเบฒเบ: เปเบชเบฑเปเบเบเบฒเบ, --script-path เปเบชเบฑเปเบเบเบฒเบ: เปเบชเบฑเปเบเบเบฒเบ
เปเบชเบฑเปเบเบเบฒเบเบเบตเปเปเบเบเบญเบญเบเบเบฒเบเบเปเปเบฒเบชเบญเบเปเบกเบฑเบเบเบตเปเบชเบฐเบเบดเบ Ruby เบเบฑเปเบเบขเบนเป.
--เบเบดเบก-เบซเบผเบฑเบ
เปเบเปเปเบเบทเปเบญเบชเบฐเปเบเบเบเปเปเบกเบนเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบฅเบฒเบ.
-s urls, --server-url URL
URL เบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ Chef.
-u เบเบนเปเปเบเป, -เบเบนเปเปเบเป เบเบนเปเปเบเป
เบเบทเปเบเบนเปเปเบเปเบเบตเปเปเบเปเปเบเบเบกเบตเบเปเบเบทเปเบญเปเบเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบตเปเปเบฎเบฑเบเปเบเบเบฅเบนเบเบเปเบฒ API เบเบฑเบ Chef
เปเบเบตเบเปเบงเบต. เบเบฒเบเบเบดเบชเบนเบเบขเบทเบเบขเบฑเบเบเบฐเบฅเบปเปเบกเปเบซเบฅเบงเบเปเบฒเบเบทเปเบเบนเปเปเบเปเบเปเปเบเบปเบเบเบฑเบเบเบฐเปเบเบชเปเบงเบเบเบปเบง.
- เปเบโ, - เบเบฒเบเบเปเบฝเบเปเบเบ
เบชเบฐเบเบฑเบเบเบญเบ chef-เบฅเบนเบเบเปเบฒ.
-V, -- verbose
เบเปเบฒเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบปเบเปเบเปเบฎเบฑเบ verbose เปเบเบตเปเบกเปเบเบตเบก. เปเบเป - เบงเบต เบชเปเบฒเบฅเบฑเบ verbosity เบชเบนเบเบชเบธเบ.
-y, --เปเบกเปเบเปเบฅเปเบง
เปเบเปเปเบเบทเปเบญเบเบญเบเบชเบฐเปเบญเบเบเบฒเบเบขเบทเบเบขเบฑเบเบเบฑเบเปเบปเบเบเปเบงเบ "เปเบกเปเบ". เบกเบตเบเบเบฐเบเปเปเบฎเปเบญเบเบเปเปเบซเปเบกเบต
เบเบฒเบเบขเบทเบเบขเบฑเบ.
-z, --local-mode
เปเบเปเปเบเบทเปเบญเปเบฅเปเบเบฅเบนเบเบเปเบฒเบเปเปเบเบปเบงเปเบเบฎเบนเบเปเบเบเบเปเบญเบเบเบดเปเบ. เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบชเบฑเปเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ
เบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ Chef เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเปเปเบเบฑเบ chef-repo เบเปเบญเบเบเบดเปเบ.
เบเบปเบงเบขเปเบฒเบ
เบกเบตเบชเบฒเบกเบงเบดเบเบตเบเบตเปเบเบฐเบเปเบฒเปเบเป เบกเบตเบ exec เปเบเบทเปเบญเปเบฅเปเบเปเบเบฅเป Ruby script. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ:
$ เบกเบตเบ exec /path/to/script_file
เบซเบฅเบท:
$ เบกเบตเบ exec -E 'เบฅเบฐเบซเบฑเบ Ruby'
เบซเบฅเบท:
$ เบกเบตเบ exec
เบฅเบฐเบซเบฑเบ RUBY
^D
เปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเบชเบฐเบเบฒเบเบฐเบเบญเบเบกเบตเบเปเบเบเปเบเป script Ruby เบเบทเป status.rb (เปเบเบดเปเบเปเบเบดเปเบเบเบทเบงเปเบฒ):
printf "%-5s %-12s %-8s %s\n", "เปเบเบฑเบเบญเบดเบ", "เบเบทเป", "เบฃเบนเบเบต", "เบชเบนเบเบญเบฒเบซเบฒเบ"
nodes.all เปเบฎเบฑเบ |n|
checkin = Time.at(n['ohai_time']).strftime("%F %R")
rubyver = n['เบเบฒเบชเบฒ']['ruby']['version']
เบชเบนเบ = n.run_list.expand(_default).recipes.join(", ")
printf "%-20s %-12s %-8s %s\n", เปเบเบฑเบเบญเบดเบ, n.name, rubyver, เบชเบนเบเบญเบฒเบซเบฒเบ
เปเบเบเบญเบเบเปเบฒเบ
เปเบฅเบฐเบเบฑเปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบกเบตเบเบทเป เบชเบฐเบเบดเบ /, เปเบชเป:
$ เบกเบตเบ exec scripts/status.rb
เปเบเบทเปเบญเบชเบฐเปเบเบเปเปเบงเบเบเบงเบฒเบกเบเบณเบเบฃเบตเบชเบณเบฅเบฑเบเบเบธเบ nodes, เบเบฐเบฅเบธเบเบฒเปเบชเป:
$ เบกเบตเบ exec -E 'nodes.all {|n| เบงเบฒเบ "#{n.name} เบกเบต #{n.memory.total} เบเบงเบฒเบกเบเบณเบซเบงเปเบฒเบ"}'
เปเบเบทเปเบญเบฅเบฒเบเบเบทเปเบเบฑเบเบชเบฐเบเบตเบเบปเปเบเบซเบฒเบเบตเปเบกเบตเบขเบนเปเบเบฑเบเปเบปเบ, เปเบซเปเปเบชเป:
$ เบกเบตเบ exec -E 'เบงเบฒเบ api.get("เบเบปเปเบเบซเบฒ").keys'
เปเบเบทเปเบญเบชเบญเบเบเบฒเบก node เบชเปเบฒเบฅเบฑเบเบซเบผเบฒเบเบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเปเบเบเปเบเป Ruby script เบเบทเป search_attributes.rb
(เปเบเบดเปเบเปเบเบดเปเบเบเบทเบงเปเบฒ):
% cat scripts/search_attributes.rb
เบชเบญเบเบเบฒเบก = ARGV[2]
เบเบธเบเบฅเบฑเบเบชเบฐเบเบฐ = ARGV[3].split(",")
เปเบชเป "เบเปเบฒเบเบฒเบกเบเบญเบเปเบเบปเปเบฒ: #{query}"
เปเบชเป "เบเบธเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเปเบเบปเปเบฒ: #{attributes.join(" ")}"
เบเบปเบเปเบเปเบฎเบฑเบ = {}
search(:node, query) เปเบฎเบฑเบ |n|
เบเบปเบเปเบเปเบฎเบฑเบ[n.name] = {}
attributes.เปเบเปเบฅเบฐ {|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"}}
เปเบเปเบกเบตเบ-exec เบญเบญเบเบฅเบฒเบเปเบเบเปเบเปเบเบฒเบเบเปเบฅเบดเบเบฒเบ onworks.net