From d494d0e8c7eb4a69806017b631ec6cda36b44257 Mon Sep 17 00:00:00 2001 From: jtimberman Date: Wed, 26 Sep 2012 00:19:57 -0600 Subject: [PATCH] Foodcritic, port and path attributes to customize * FC001 - use strings in preference to symbols * FC019 - consistent attribute access * Add listen_port attribute to customize the web port This attribute is used in the HW gdash cookbook. * Add base_dir attribute for customizing the base location of graphite * Add doc_root attribute for customizing the DocumentRoot for vhost --- attributes/graphite.rb | 29 ++++++++++-------- recipes/carbon.rb | 26 ++++++++-------- recipes/web.rb | 30 ++++++++++--------- recipes/whisper.rb | 8 ++--- templates/default/carbon.conf.erb | 2 +- templates/default/graphite-vhost.conf.erb | 20 +++++-------- .../default/set_admin_passwd.py.erb | 2 +- templates/default/sv-carbon-cache-finish.erb | 2 +- templates/default/sv-carbon-cache-run.erb | 2 +- 9 files changed, 61 insertions(+), 60 deletions(-) rename files/default/set_admin_passwd.py => templates/default/set_admin_passwd.py.erb (86%) diff --git a/attributes/graphite.rb b/attributes/graphite.rb index 552afe50..6067edfe 100644 --- a/attributes/graphite.rb +++ b/attributes/graphite.rb @@ -1,18 +1,21 @@ -default[:graphite][:version] = "0.9.9" -default[:graphite][:python_version] = "2.6" +default['graphite']['version'] = "0.9.9" +default['graphite']['python_version'] = "2.6" -default[:graphite][:carbon][:uri] = "http://launchpadlibrarian.net/82112362/carbon-#{node[:graphite][:version]}.tar.gz" -default[:graphite][:carbon][:checksum] = "b3d42e3b93c09" +default['graphite']['carbon']['uri'] = "http://launchpadlibrarian.net/82112362/carbon-#{node['graphite']['version']}.tar.gz" +default['graphite']['carbon']['checksum'] = "b3d42e3b93c09" -default[:graphite][:whisper][:uri] = "http://launchpadlibrarian.net/82112367/whisper-#{node[:graphite][:version]}.tar.gz" -default[:graphite][:whisper][:checksum] = "66c05eafe8d86" +default['graphite']['whisper']['uri'] = "http://launchpadlibrarian.net/82112367/whisper-#{node['graphite']['version']}.tar.gz" +default['graphite']['whisper']['checksum'] = "66c05eafe8d86" -default[:graphite][:graphite_web][:uri] = "http://launchpadlibrarian.net/82112308/graphite-web-#{node[:graphite][:version]}.tar.gz" -default[:graphite][:graphite_web][:checksum] = "cc78bab7fb26b" +default['graphite']['graphite_web']['uri'] = "http://launchpadlibrarian.net/82112308/graphite-web-#{node['graphite']['version']}.tar.gz" +default['graphite']['graphite_web']['checksum'] = "cc78bab7fb26b" -default[:graphite][:carbon][:line_receiver_interface] = "127.0.0.1" -default[:graphite][:carbon][:pickle_receiver_interface] = "127.0.0.1" -default[:graphite][:carbon][:cache_query_interface] = "127.0.0.1" +default['graphite']['carbon']['line_receiver_interface'] = "127.0.0.1" +default['graphite']['carbon']['pickle_receiver_interface'] = "127.0.0.1" +default['graphite']['carbon']['cache_query_interface'] = "127.0.0.1" -default[:graphite][:password] = "change_me" -default[:graphite][:url] = "graphite" +default['graphite']['password'] = "change_me" +default['graphite']['url'] = "graphite" +default['graphite']['listen_port'] = "80" +default['graphite']['base_dir'] = "/opt/graphite" +default['graphite']['doc_root'] = "/opt/graphite/webapp" diff --git a/recipes/carbon.rb b/recipes/carbon.rb index b2150bdc..daa82c1f 100644 --- a/recipes/carbon.rb +++ b/recipes/carbon.rb @@ -1,12 +1,12 @@ package "python-twisted" package "python-simplejson" -version = node[:graphite][:version] -pyver = node[:graphite][:python_version] +version = node['graphite']['version'] +pyver = node['graphite']['python_version'] remote_file "/usr/src/carbon-#{version}.tar.gz" do - source node[:graphite][:carbon][:uri] - checksum node[:graphite][:carbon][:checksum] + source node['graphite']['carbon']['uri'] + checksum node['graphite']['carbon']['checksum'] end execute "untar carbon" do @@ -17,33 +17,33 @@ execute "install carbon" do command "python setup.py install" - creates "/opt/graphite/lib/carbon-#{version}-py#{pyver}.egg-info" + creates "#{node['graphite']['base_dir']}/lib/carbon-#{version}-py#{pyver}.egg-info" cwd "/usr/src/carbon-#{version}" end -template "/opt/graphite/conf/carbon.conf" do +template "#{node['graphite']['base_dir']}/conf/carbon.conf" do owner node['apache']['user'] group node['apache']['group'] - variables( :line_receiver_interface => node[:graphite][:carbon][:line_receiver_interface], - :pickle_receiver_interface => node[:graphite][:carbon][:pickle_receiver_interface], - :cache_query_interface => node[:graphite][:carbon][:cache_query_interface] ) + variables( :line_receiver_interface => node['graphite']['carbon']['line_receiver_interface'], + :pickle_receiver_interface => node['graphite']['carbon']['pickle_receiver_interface'], + :cache_query_interface => node['graphite']['carbon']['cache_query_interface'] ) notifies :restart, "service[carbon-cache]" end -template "/opt/graphite/conf/storage-schemas.conf" do +template "#{node['graphite']['base_dir']}/conf/storage-schemas.conf" do owner node['apache']['user'] group node['apache']['group'] end execute "carbon: change graphite storage permissions to apache user" do - command "chown -R #{node['apache']['user']}:#{node['apache']['group']} /opt/graphite/storage" + command "chown -R www-data:www-data #{node['graphite']['base_dir']}/storage" only_if do - f = File.stat("/opt/graphite/storage") + f = File.stat("#{node['graphite']['base_dir']}/storage") f.uid == 0 and f.gid == 0 end end -directory "/opt/graphite/lib/twisted/plugins/" do +directory "#{node['graphite']['base_dir']}/lib/twisted/plugins/" do owner node['apache']['user'] group node['apache']['group'] end diff --git a/recipes/web.rb b/recipes/web.rb index b625599e..32ae3491 100644 --- a/recipes/web.rb +++ b/recipes/web.rb @@ -1,7 +1,8 @@ include_recipe "apache2::mod_python" -version = node[:graphite][:version] -pyver = node[:graphite][:python_version] +basedir = node['graphite']['base_dir'] +version = node['graphite']['version'] +pyver = node['graphite']['python_version'] package "python-cairo-dev" package "python-django" @@ -10,8 +11,8 @@ package "python-rrdtool" remote_file "/usr/src/graphite-web-#{version}.tar.gz" do - source node[:graphite][:graphite_web][:uri] - checksum node[:graphite][:graphite_web][:checksum] + source node['graphite']['graphite_web']['uri'] + checksum node['graphite']['graphite_web']['checksum'] end execute "untar graphite-web" do @@ -22,7 +23,7 @@ execute "install graphite-web" do command "python setup.py install" - creates "/opt/graphite/webapp/graphite_web-#{version}-py#{pyver}.egg-info" + creates "#{node['graphite']['doc_root']}/graphite_web-#{version}-py#{pyver}.egg-info" cwd "/usr/src/graphite-web-#{version}" end @@ -32,39 +33,40 @@ apache_site "graphite" -directory "/opt/graphite/storage" do +directory "#{basedir}/storage" do owner node['apache']['user'] group node['apache']['group'] end -directory '/opt/graphite/storage/log' do +directory "#{basedir}/storage/log" do owner node['apache']['user'] group node['apache']['group'] end %w{ webapp whisper }.each do |dir| - directory "/opt/graphite/storage/log/#{dir}" do + directory "#{basedir}/storage/log/#{dir}" do owner node['apache']['user'] group node['apache']['group'] end end -cookbook_file "/opt/graphite/bin/set_admin_passwd.py" do - mode "755" +template "#{basedir}/bin/set_admin_passwd.py" do + source "set_admin_passwd.py.erb" + mode 00755 end -cookbook_file "/opt/graphite/storage/graphite.db" do +cookbook_file "#{basedir}/storage/graphite.db" do action :create_if_missing notifies :run, "execute[set admin password]" end execute "set admin password" do - command "/opt/graphite/bin/set_admin_passwd.py root #{node[:graphite][:password]}" + command "#{basedir}/bin/set_admin_passwd.py root #{node['graphite']['password']}" action :nothing end -file "/opt/graphite/storage/graphite.db" do +file "#{basedir}/storage/graphite.db" do owner node['apache']['user'] group node['apache']['group'] - mode "644" + mode 00644 end diff --git a/recipes/whisper.rb b/recipes/whisper.rb index 675b9b09..9c24fa49 100644 --- a/recipes/whisper.rb +++ b/recipes/whisper.rb @@ -1,9 +1,9 @@ -version = node[:graphite][:version] -pyver = node[:graphite][:python_version] +version = node['graphite']['version'] +pyver = node['graphite']['python_version'] remote_file "/usr/src/whisper-#{version}.tar.gz" do - source node[:graphite][:whisper][:uri] - checksum node[:graphite][:whisper][:checksum] + source node['graphite']['whisper']['uri'] + checksum node['graphite']['whisper']['checksum'] end execute "untar whisper" do diff --git a/templates/default/carbon.conf.erb b/templates/default/carbon.conf.erb index 34e0ace8..35b04262 100644 --- a/templates/default/carbon.conf.erb +++ b/templates/default/carbon.conf.erb @@ -1,5 +1,5 @@ [cache] -LOCAL_DATA_DIR = /opt/graphite/storage/whisper/ +LOCAL_DATA_DIR = <%= node['graphite']['base_dir'] %>/storage/whisper/ # Specify the user to drop privileges to # If this is blank carbon runs as the user that invokes it diff --git a/templates/default/graphite-vhost.conf.erb b/templates/default/graphite-vhost.conf.erb index b88ecfa1..3de9f34e 100644 --- a/templates/default/graphite-vhost.conf.erb +++ b/templates/default/graphite-vhost.conf.erb @@ -1,22 +1,18 @@ # Graphite Apache Virtual Host # # Generated by Chef +NameVirtualHost *:<%= node['graphite']['listen_port'] %> # You may need to manually edit this file to fit your needs. -# This configuration assumes the default installation prefix -# of /opt/graphite/, if you installed graphite somewhere else -# you will need to change all the occurances of /opt/graphite/ -# in this file to your chosen install location. - - - ServerName <%= node[:graphite][:url] %> - DocumentRoot "/opt/graphite/webapp" - ErrorLog /opt/graphite/storage/log/webapp/error.log - CustomLog /opt/graphite/storage/log/webapp/access.log common +> + ServerName <%= node['graphite']['url'] %> + DocumentRoot "<%= node['graphite']['doc_root'] %>" + ErrorLog <%= node['graphite']['base_dir'] %>/storage/log/webapp/error.log + CustomLog <%= node['graphite']['base_dir'] %>/storage/log/webapp/access.log common SetHandler python-program - PythonPath "['/opt/graphite/webapp'] + sys.path" + PythonPath "['<%= node['graphite']['base_dir'] %>'] + sys.path" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE graphite.settings PythonDebug Off @@ -31,7 +27,7 @@ SetHandler None - <% if node[:recipes].include? "ganglia::web" -%> + <% if node['recipes'].include? "ganglia::web" -%> SetHandler None diff --git a/files/default/set_admin_passwd.py b/templates/default/set_admin_passwd.py.erb similarity index 86% rename from files/default/set_admin_passwd.py rename to templates/default/set_admin_passwd.py.erb index 667df0f3..a32ce40b 100644 --- a/files/default/set_admin_passwd.py +++ b/templates/default/set_admin_passwd.py.erb @@ -3,7 +3,7 @@ # cribbed from https://gist.github.com/97863dc8171c7b473c94#file_set_admin_password.py import os,sys -sys.path.append("/opt/graphite/webapp/graphite") +sys.path.append("<%= node['graphite']['doc_root']%>/graphite") os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' from django.contrib.auth.models import User diff --git a/templates/default/sv-carbon-cache-finish.erb b/templates/default/sv-carbon-cache-finish.erb index 796fda60..2fd9e0db 100644 --- a/templates/default/sv-carbon-cache-finish.erb +++ b/templates/default/sv-carbon-cache-finish.erb @@ -1,5 +1,5 @@ #!/bin/sh -PIDFILE="/opt/graphite/storage/carbon-cache-a.pid" +PIDFILE="<%= node['graphite']['base_dir'] %>/storage/carbon-cache-a.pid" if [ -e $PIDFILE ]; then rm -v $PIDFILE diff --git a/templates/default/sv-carbon-cache-run.erb b/templates/default/sv-carbon-cache-run.erb index 28a3a906..b2eee61e 100644 --- a/templates/default/sv-carbon-cache-run.erb +++ b/templates/default/sv-carbon-cache-run.erb @@ -1,3 +1,3 @@ #!/bin/sh exec 2>&1 -exec chpst -u <%= node['apache']['user'] %>:<%= node['apache']['group'] %> -l /opt/graphite/storage/carbon-cache.lock -- /opt/graphite/bin/carbon-cache.py --debug start +exec chpst -u <%= node['apache']['user'] %>:<%= node['apache']['group'] %> -l <%= node['graphite']['base_dir'] %>/storage/carbon-cache.lock -- <%= node['graphite']['base_dir']%>/bin/carbon-cache.py --debug start