87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| #
 | |
| # Cookbook Name:: kosmos-hubot
 | |
| # Recipe:: wormhole
 | |
| #
 | |
| 
 | |
| app_name  = "wormhole"
 | |
| app_user  = "hubot"
 | |
| app_group = "hubot"
 | |
| app_path  = "/opt/#{app_name}"
 | |
| data_bag  = Chef::EncryptedDataBagItem.load('credentials', app_name)
 | |
| 
 | |
| app_env = {
 | |
|   "HUBOT_LOG_LEVEL"              => node.chef_environment == "development" ? "debug" : "info",
 | |
|   "HUBOT_IRC_SERVER"             => "irc.freenode.net",
 | |
|   "HUBOT_IRC_ROOMS"              => "#kosmos,#kosmos-dev,#kosmos-random,#sockethub",
 | |
|   "HUBOT_IRC_NICK"               => app_name,
 | |
|   "HUBOT_IRC_NICKSERV_USERNAME"  => app_name,
 | |
|   "HUBOT_IRC_NICKSERV_PASSWORD"  => data_bag['nickserv_password'],
 | |
|   "HUBOT_IRC_UNFLOOD"            => "100",
 | |
|   "HUBOT_WORMHOLE_XMPP_JID"      => "wormhole@kosmos.org",
 | |
|   "HUBOT_WORMHOLE_XMPP_PASSWORD" => data_bag['xmpp_password'],
 | |
|   "HUBOT_WORMHOLE_XMPP_HOST"     => "xmpp.kosmos.org",
 | |
|   "HUBOT_WORMHOLE_XMPP_PORT"     => "5222",
 | |
|   "HUBOT_WORMHOLE_XMPP_NICKNAME" => "wormhole",
 | |
|   "HUBOT_WORMHOLE_XMPP_ROOMS"    => "kosmos@kosmos.chat,kosmos-dev@kosmos.chat,kosmos-random@kosmos.chat,sockethub@kosmos.chat",
 | |
|   "EXPRESS_PORT"                 => node['wormhole']['http_port']
 | |
| }
 | |
| 
 | |
| build_essential
 | |
| include_recipe "kosmos-nodejs"
 | |
| include_recipe "kosmos-hubot::_user"
 | |
| include_recipe "git"
 | |
| 
 | |
| git app_path do
 | |
|   user app_user
 | |
|   group app_group
 | |
|   repository "https://gitea.kosmos.org/kosmos/wormhole.git"
 | |
|   revision "master"
 | |
|   action :sync
 | |
|   notifies :run, "bash[npm_install_#{app_name}]", :immediately
 | |
|   notifies :restart, "systemd_unit[#{app_name}.service]", :delayed
 | |
| end
 | |
| 
 | |
| bash "npm_install_#{app_name}" do
 | |
|   user app_user
 | |
|   cwd app_path
 | |
|   code 'npm install'
 | |
|   action :nothing
 | |
| end
 | |
| 
 | |
| file "#{app_path}/external-scripts.json" do
 | |
|   mode  "0640"
 | |
|   owner app_user
 | |
|   group app_group
 | |
|   content [].to_json
 | |
| end
 | |
| 
 | |
| systemd_unit "#{app_name}.service" do
 | |
|   content({
 | |
|     Unit: {
 | |
|       Description: "#{app_name} (node.js app)",
 | |
|       Documentation: ['https://gitea.kosmos.org/kosmos/wormhole'],
 | |
|     },
 | |
|     Service: {
 | |
|       User: app_user,
 | |
|       Group: app_group,
 | |
|       ExecStart: "#{app_path}/bin/hubot -a irc --name #{app_name}",
 | |
|       WorkingDirectory: app_path,
 | |
|       Environment: app_env.map{|k, v| "'#{k}=#{v}'"}.join(' '),
 | |
|       Type: 'simple',
 | |
|       Restart: 'always',
 | |
|       RestartSec: '2',
 | |
|       TimeoutSec: '10',
 | |
|       PrivateTmp: true,
 | |
|       ProtectSystem: 'full',
 | |
|       NoNewPrivileges: true,
 | |
|       PrivateDevices: true
 | |
|     },
 | |
|     Install: {
 | |
|       WantedBy: 'multi-user.target'
 | |
|     }
 | |
|   })
 | |
|   verify false
 | |
|   triggers_reload true
 | |
|   action [:create, :enable, :start]
 | |
| end
 |