config/software/td-agent-files.rb (47 lines of code) (raw):

name "td-agent-files" #version '' # git ref dependency "td-agent" # This software setup td-agent related files, e.g. etc files. # Separating file into td-agent.rb and td-agent-files.rb is for speed up package building build do block do # setup related files pkg_type = project.packagers_for_system.first.id.to_s root_path = "/" # for ERB install_path = project.install_dir # for ERB project_name = project.name # for ERB project_name_snake = project.name.gsub('-', '_') # for variable names in ERB gem_dir_version = "3.3.0" use_systemd = ohai["os"] == "linux" && ohai["platform_family"] == "suse" template = ->(*parts) { File.join('templates', *parts) } generate_from_template = ->(dst, src, erb_binding, opts={}) { mode = opts.fetch(:mode, 0755) destination = dst.gsub('td-agent', project.name) FileUtils.mkdir_p File.dirname(destination) File.open(destination, 'w', mode) do |f| f.write ERB.new(File.read(src)).result(erb_binding) end } # copy pre/post scripts into omnibus path (./package-scripts/td-agentN) FileUtils.mkdir_p(project.package_scripts_path) Dir.glob(File.join(project.package_scripts_path, '*')).each { |f| FileUtils.rm_f(f) if File.file?(f) } # templates/package-scripts/td-agent/xxxx/* -> ./package-scripts/td-agentN Dir.glob(template.call('package-scripts', 'td-agent', pkg_type, '*')).each { |f| package_script = File.join(project.package_scripts_path, File.basename(f)) generate_from_template.call package_script, f, binding, mode: 0755 } # setup plist / init.d file if ['pkg', 'dmg'].include?(pkg_type) # templates/td-agent.plist.erb -> INSTALL_PATH/td-agent.plist plist_path = File.join(install_path, "td-agent.plist") generate_from_template.call plist_path, template.call("td-agent.plist.erb"), binding, mode: 0755 else # templates/etc/init.d/xxxx/td-agent -> ./resources/etc/init.d/td-agent initd_file_path = File.join(project.resources_path, 'etc', 'init.d', project.name) generate_from_template.call initd_file_path, template.call('etc', 'init.d', pkg_type, 'td-agent'), binding, mode: 0755 end # setup /etc/td-agent ['td-agent.conf', 'td-agent.conf.tmpl', ['logrotate.d', 'td-agent.logrotate'], ['prelink.conf.d', 'td-agent.conf']].each { |item| conf_path = File.join(project.resources_path, 'etc', 'td-agent', *([item].flatten)) generate_from_template.call conf_path, template.call('etc', 'td-agent', *([item].flatten)), binding, mode: 0644 } ["td-agent", "td-agent-gem"].each { |command| sbin_path = File.join(install_path, 'usr', 'sbin', command) # templates/usr/sbin/yyyy.erb -> INSTALL_PATH/usr/sbin/yyyy generate_from_template.call sbin_path, template.call('usr', 'sbin', "#{command}.erb"), binding, mode: 0755 } FileUtils.remove_entry_secure(File.join(install_path, 'etc'), true) # ./resources/etc -> INSTALL_PATH/etc FileUtils.cp_r(File.join(project.resources_path, 'etc'), install_path) end end