From 0b589e225cbd8685d07009694fa8c549f6952026 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 16 Dec 2014 20:23:31 +0000 Subject: [PATCH 1/1] Add support for using incron to run jobs based on inotify events --- cookbooks/incron/README.md | 34 ++++++++++++++++ cookbooks/incron/attributes/default.rb | 1 + cookbooks/incron/metadata.rb | 7 ++++ cookbooks/incron/recipes/default.rb | 54 ++++++++++++++++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 cookbooks/incron/README.md create mode 100644 cookbooks/incron/attributes/default.rb create mode 100644 cookbooks/incron/metadata.rb create mode 100644 cookbooks/incron/recipes/default.rb diff --git a/cookbooks/incron/README.md b/cookbooks/incron/README.md new file mode 100644 index 000000000..205739199 --- /dev/null +++ b/cookbooks/incron/README.md @@ -0,0 +1,34 @@ +Cookbook +======== +TODO: Enter the cookbook description here. + +e.g. +This cookbook makes your favorite breakfast sandwich. + +Requirements +------------ +TODO: List your cookbook requirements. Be sure to include any requirements this cookbook has on platforms, libraries, other cookbooks, packages, operating systems, etc. + +Attributes +---------- +TODO: List you cookbook attributes here. + +Usage +----- +TODO: Write usage instructions for each cookbook. + +Contributing +------------ +TODO: (optional) If this is a public cookbook, detail the process for contributing. If this is a private cookbook, remove this section. + +e.g. +1. Fork the repository on Github +2. Create a named feature branch (like `add_component_x`) +3. Write your change +4. Write tests for your change (if applicable) +5. Run the tests, ensuring they all pass +6. Submit a Pull Request using Github + +License and Authors +------------------- +Authors: TODO: List authors diff --git a/cookbooks/incron/attributes/default.rb b/cookbooks/incron/attributes/default.rb new file mode 100644 index 000000000..4d2ce58b6 --- /dev/null +++ b/cookbooks/incron/attributes/default.rb @@ -0,0 +1 @@ +default[:incron] = {} diff --git a/cookbooks/incron/metadata.rb b/cookbooks/incron/metadata.rb new file mode 100644 index 000000000..3e21a533e --- /dev/null +++ b/cookbooks/incron/metadata.rb @@ -0,0 +1,7 @@ +name "incron" +maintainer "OpenStreetMap Administrators" +maintainer_email "admins@openstreetmap.org" +license "Apache 2.0" +description "Configures incron" +long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) +version "1.0.0" diff --git a/cookbooks/incron/recipes/default.rb b/cookbooks/incron/recipes/default.rb new file mode 100644 index 000000000..d4a176179 --- /dev/null +++ b/cookbooks/incron/recipes/default.rb @@ -0,0 +1,54 @@ +# +# Cookbook Name:: incron +# Recipe:: default +# +# Copyright 2014, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package "incron" + +service "incron" do + action [ :enable, :start ] + supports :status => true, :reload => true, :restart => true +end + +incrontabs = {} + +node[:incron].each do |name,details| + user = details[:user] + path = details[:path] + mask = details[:events].join(",") + command = details[:command] + + incrontabs[user] ||= [] + + incrontabs[user].push("#{path} #{mask} #{command}") +end + +incrontabs.each do |user,lines| + file "/var/spool/incron/#{user}" do + owner user + group "incron" + mode 0600 + content lines.join("\n") + end +end + +file "/etc/incron.allow" do + owner "root" + group "incron" + mode "0640" + content incrontabs.keys.sort.join("\n") +end -- 2.43.2