Browse Source

Use berkshelf and clean up.

Douglas William Thrift 10 years ago
parent
commit
bba96f85a8
11 changed files with 267 additions and 21 deletions
  1. 17 0
      .gitignore
  2. 27 0
      .kitchen.yml
  3. 3 0
      Berksfile
  4. 5 0
      Gemfile
  5. 12 0
      Thorfile
  6. 86 0
      Vagrantfile
  7. 96 0
      chefignore
  8. 1 0
      metadata.rb
  9. 16 14
      providers/default.rb
  10. 2 0
      recipes/default.rb
  11. 2 7
      resources/default.rb

+ 17 - 0
.gitignore

@@ -0,0 +1,17 @@
+.vagrant
+Berksfile.lock
+*~
+*#
+.#*
+\#*#
+.*.sw[a-z]
+*.un~
+/cookbooks
+
+# Bundler
+Gemfile.lock
+bin/*
+.bundle/*
+
+.kitchen/
+.kitchen.local.yml

+ 27 - 0
.kitchen.yml

@@ -0,0 +1,27 @@
+---
+driver_plugin: vagrant
+driver_config:
+  require_chef_omnibus: true
+
+platforms:
+- name: ubuntu-12.04
+  driver_config:
+    box: opscode-ubuntu-12.04
+    box_url: https://opscode-vm.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box
+- name: ubuntu-10.04
+  driver_config:
+    box: opscode-ubuntu-10.04
+    box_url: https://opscode-vm.s3.amazonaws.com/vagrant/opscode_ubuntu-10.04_provisionerless.box
+- name: centos-6.4
+  driver_config:
+    box: opscode-centos-6.4
+    box_url: https://opscode-vm.s3.amazonaws.com/vagrant/opscode_centos-6.4_provisionerless.box
+- name: centos-5.9
+  driver_config:
+    box: opscode-centos-5.9
+    box_url: https://opscode-vm.s3.amazonaws.com/vagrant/opscode_centos-5.9_provisionerless.box
+
+suites:
+- name: default
+  run_list: []
+  attributes: {}

+ 3 - 0
Berksfile

@@ -0,0 +1,3 @@
+site :opscode
+
+metadata

+ 5 - 0
Gemfile

@@ -0,0 +1,5 @@
+source 'https://rubygems.org'
+
+gem 'berkshelf'
+#gem 'test-kitchen', :group => :integration
+#gem 'kitchen-vagrant', :group => :integration

+ 12 - 0
Thorfile

@@ -0,0 +1,12 @@
+# encoding: utf-8
+
+require 'bundler'
+require 'bundler/setup'
+require 'berkshelf/thor'
+
+begin
+  require 'kitchen/thor_tasks'
+  Kitchen::ThorTasks.new
+rescue LoadError
+  puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV['CI']
+end

+ 86 - 0
Vagrantfile

@@ -0,0 +1,86 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+Vagrant.configure("2") do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  config.vm.hostname = "sysrc-berkshelf"
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "Berkshelf-CentOS-6.3-x86_64-minimal"
+
+  # The url from where the 'config.vm.box' box will be fetched if it
+  # doesn't already exist on the user's system.
+  config.vm.box_url = "https://dl.dropbox.com/u/31081437/Berkshelf-CentOS-6.3-x86_64-minimal.box"
+
+  # Assign this VM to a host-only network IP, allowing you to access it
+  # via the IP. Host-only networks can talk to the host machine as well as
+  # any other machines on the same network, but cannot be accessed (through this
+  # network interface) by any external networks.
+  config.vm.network :private_network, ip: "33.33.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+
+  # config.vm.network :public_network
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  # config.vm.synced_folder "../data", "/vagrant_data"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider :virtualbox do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  config.ssh.max_tries = 40
+  config.ssh.timeout   = 120
+
+  # The path to the Berksfile to use with Vagrant Berkshelf
+  # config.berkshelf.berksfile_path = "./Berksfile"
+
+  # Enabling the Berkshelf plugin. To enable this globally, add this configuration
+  # option to your ~/.vagrant.d/Vagrantfile file
+  config.berkshelf.enabled = true
+
+  # An array of symbols representing groups of cookbook described in the Vagrantfile
+  # to exclusively install and copy to Vagrant's shelf.
+  # config.berkshelf.only = []
+
+  # An array of symbols representing groups of cookbook described in the Vagrantfile
+  # to skip installing and copying to Vagrant's shelf.
+  # config.berkshelf.except = []
+
+  config.vm.provision :chef_solo do |chef|
+    chef.json = {
+      :mysql => {
+        :server_root_password => 'rootpass',
+        :server_debian_password => 'debpass',
+        :server_repl_password => 'replpass'
+      }
+    }
+
+    chef.run_list = [
+        "recipe[sysrc::default]"
+    ]
+  end
+end

+ 96 - 0
chefignore

@@ -0,0 +1,96 @@
+# Put files/directories that should be ignored in this file when uploading
+# or sharing to the community site.
+# Lines that start with '# ' are comments.
+
+# OS generated files #
+######################
+.DS_Store
+Icon?
+nohup.out
+ehthumbs.db
+Thumbs.db
+
+# SASS #
+########
+.sass-cache
+
+# EDITORS #
+###########
+\#*
+.#*
+*~
+*.sw[a-z]
+*.bak
+REVISION
+TAGS*
+tmtags
+*_flymake.*
+*_flymake
+*.tmproj
+.project
+.settings
+mkmf.log
+
+## COMPILED ##
+##############
+a.out
+*.o
+*.pyc
+*.so
+*.com
+*.class
+*.dll
+*.exe
+*/rdoc/
+
+# Testing #
+###########
+.watchr
+.rspec
+spec/*
+spec/fixtures/*
+test/*
+features/*
+Guardfile
+Procfile
+
+# SCM #
+#######
+.git
+*/.git
+.gitignore
+.gitmodules
+.gitconfig
+.gitattributes
+.svn
+*/.bzr/*
+*/.hg/*
+*/.svn/*
+
+# Berkshelf #
+#############
+Berksfile
+Berksfile.lock
+cookbooks/*
+tmp
+
+# Cookbooks #
+#############
+CONTRIBUTING
+CHANGELOG*
+
+# Strainer #
+############
+Colanderfile
+Strainerfile
+.colander
+.strainer
+
+# Vagrant #
+###########
+.vagrant
+Vagrantfile
+
+# Travis #
+##########
+.travis.yml

+ 1 - 0
metadata.rb

@@ -1,3 +1,4 @@
+name             "sysrc"
 maintainer       "Douglas Thrift"
 maintainer_email "douglas@douglasthrift.net"
 license          "Apache 2.0"

+ 16 - 14
providers/default.rb

@@ -22,13 +22,13 @@ require 'chef/mixin/shell_out'
 include Chef::Mixin::ShellOut
 
 def load_current_resource
-    current_resource = Chef::Resource::Sysrc.new(new_resource.name)
-    current_resource.sysrc_name(new_resource.sysrc_name)
-    current_resource.file(new_resource.file)
-    current_resource.jail(new_resource.jail)
-    current_resource.root(new_resource.root)
+  current_resource = Chef::Resource::Sysrc.new(new_resource.name)
+  current_resource.variable(new_resource.variable)
+  current_resource.file(new_resource.file)
+  current_resource.jail(new_resource.jail)
+  current_resource.root(new_resource.root)
 
-    current_resource
+  current_resource
 end
 
 action :create do
@@ -40,15 +40,17 @@ end
 private
 
 def sysrc_command(resource, *args)
-    command = ['sysrc']
+  command = ['sysrc']
 
-    if resource.file
-        files = resource.file.kind_of?(Array) ? resource.file : [resource.file]
-        files.each {|file| command += ['-f', file]}
-    end
+  if resource.file
+    files = resource.file.kind_of?(Array) ? resource.file : [resource.file]
+    files.each {|file| command += ['-f', file]}
+  end
 
-    command += ['-j', resource.jail.to_s] if resource.jail
-    command += ['-R', resource.root] if resource.root
+  command += ['-j', resource.jail.to_s] if resource.jail
+  command += ['-R', resource.root] if resource.root
 
-    command + args
+  command + args
 end
+
+# vim: shiftwidth=2

+ 2 - 0
recipes/default.rb

@@ -16,3 +16,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+
+package 'sysrc'

+ 2 - 7
resources/default.rb

@@ -17,15 +17,10 @@
 # limitations under the License.
 #
 
-def initialize(*args)
-    super
-    @action = :create
-end
-#default_action :create
-
 actions :create, :delete
+default_action :create
 
-attribute :sysrc_name, :kind_of => String, :name_attribute => true
+attribute :variable, :kind_of => [String, Array, Hash], :name_attribute => true
 attribute :value, :kind_of => [String, Numeric, TrueClass, FalseClass]
 attribute :file, :kind_of => [String, Array]
 attribute :jail, :kind_of => [String, Integer]