Skip to content

Instantly share code, notes, and snippets.

@armenr
Last active January 25, 2016 19:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save armenr/33814cf646ed6775bfce to your computer and use it in GitHub Desktop.
Save armenr/33814cf646ed6775bfce to your computer and use it in GitHub Desktop.
#
# Cookbook Name:: myapp-bot
# Recipe:: _botapp.rb
#
#
#
#
#
app_name = node['myapp']['gravbot']['app_name']
# Set up application directory
directory '/opt/gravbot' do
owner 'gravbot'
group 'gravbot'
mode '0755'
action :create
end
# Set up logs directory
directory 'opt/gravbot/logs' do
owner 'gravbot'
group 'gravbot'
mode '0755'
action :create
end
# Clone application to app directory
git "/opt/gravbot" do
repository "git@github.com:redacted/hubot-fork"
reference "master"
user "gravbot"
action :sync
end
# Source nvm/nodejs environment for gravbot user
file '/home/gravbot/.bashrc' do
action :create
owner 'gravbot'
group 'gravbot'
mode '0644'
content <<-EOF
source /etc/profile.d/nvm.sh
EOF
end
# Install dependencies
execute "install gravbot dependencies" do
user 'gravbot'
command "npm install"
cwd "/opt/gravbot"
creates "/opt/gravbot/node_modules"
end
# Daemonize gravbot/configure upstart
template "/etc/init/#{app_name}.conf" do
source "upstart/gravbot-server.conf.erb"
owner "root"
group "root"
mode "0755"
variables({
:path => node['myapp']['gravbot']['deploy_path'],
:app_name => app_name,
:node_env => node['myapp']['gravbot']['node_env'],
:user => node['myapp']['gravbot']['user'],
:logfile => node['myapp']['gravbot']['logfile']
})
end
# Start gravbot via upstart
service "gravbot" do
action [ :start ]
provider Chef::Provider::Service::Upstart
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment