Chef patches, little fix and tools for joyent smartos(smartmachine).
Just add recipe[smartmachine_functions]
to runlist for Fix pkgin provider.
Or add other recipes.
Package resource works well at chef(version < 11).
Fix metadata api vulnerability.
This command prints out formatted sm-summary as json.
Retreive SmartMachine ZoneInfo.
class Chef::Recipe
include SmartMachine
end
a = sm_id
b = sm_uuid
c = sm_cpu_cap
d = sm_cpu_counts
file "/tmp/sm_id" do
content a #=> zone_id
end
file "/tmp/sm_uuid" do
content b #=> zone_uuiid
end
file "/tmp/sm_cpu_cap" do
content c.to_s #=> cpu cap ex) 200, 400
end
file "/tmp/sm_cpu_counts" do
content d.to_s #=> usable cpu cores by apps. (a rough estimate)
end
Retreive metadata from SmartDatacenter MetadataAPI.
as Class method in recipe.
SmartMachine::Metadata.from_metadata("user-defined-data")
or include at recipe.
class Chef::Recipe
include SmartMachine::Metadata
end
from_metadata("user-defined-data")
If missing key, from_metadata
returns nil.
add dependency 'smartmachine_functions' to metadata.rb
. you can use SmartMachine::Metadata.from_metadata
method in your recipe.
Set joyent smartmachine's infomation as node attributes from sm-summary outputs.
Do nothing. Dummy recipe to include libraries.
Add several tools to /opt/local/bin.
The smartmachine metadata has serious vulnerability such as any localuser can get metadata.
To fix it, set mode 0700 to /var/run/smartdc
directory.
Create node['joyent'] attributes from sm-summary.
chef:recipe > pp node.joyent.current_normal
{"sm_uuid"=>"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"sm_id"=>"312",
"hostname"=>"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.local",
"smartos_build"=>"joyent_20120614T001014Z",
"image"=>"standard 1.0.7",
"base_image"=>"NA",
"documentation"=>"http://wiki.joyent.com/jpc2/SmartMachine+Standard",
"pkgsrc"=>"http://pkgsrc.joyent.com/sdc6/2012Q1/i386/All",
"processes"=>"43",
"memory_rss_cap_mb"=>"1024",
"memory_rss_used_mb"=>"177",
"memory_rss_free_mb"=>"847",
"swap_cap"=>"1024",
"swap_used"=>"314",
"tmp_used"=>"16K",
"disk_quota"=>"32G",
"percentage_disk_used"=>"9%"}
chef:recipe > node.joyent.image
=> "standard 1.0.7"
This cookbook tested by ChefSpec and Foodcritic.
Rspec
bundle
rake
Foodcritic
bundle
rake fc
e.g.
- Fork the repository on Github
- Create a named feature branch (like
add_component_x
) - Write you change
- Write tests for your change (if applicable)
- Run the tests, ensuring they all pass
- Submit a Pull Request using Github
Authors: [email protected] (HiganWorks LLC)