109 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| #
 | |
| # Cookbook Name:: kosmos-hubot
 | |
| # Recipe:: botka_irc-libera-chat
 | |
| #
 | |
| 
 | |
| app_name  = "botka_irc-libera-chat"
 | |
| app_path  = "/opt/#{app_name}"
 | |
| app_user  = "hubot"
 | |
| app_group = "hubot"
 | |
| 
 | |
| build_essential app_name do
 | |
|   compile_time true
 | |
| end
 | |
| 
 | |
| include_recipe 'redisio::default'
 | |
| include_recipe 'redisio::enable'
 | |
| include_recipe "kosmos-hubot::_user"
 | |
| include_recipe "kosmos-hubot::_nodejs"
 | |
| include_recipe "kosmos-base::firewall"
 | |
| 
 | |
| credentials = Chef::EncryptedDataBagItem.load('credentials', app_name)
 | |
| 
 | |
| git app_path do
 | |
|   user       app_user
 | |
|   group      app_group
 | |
|   repository "https://gitea.kosmos.org/kosmos/botka.git"
 | |
|   revision   "master"
 | |
|   notifies :restart, "systemd_unit[#{app_name}.service]", :delayed
 | |
| end
 | |
| 
 | |
| file "#{app_path}/external-scripts.json" do
 | |
|   mode  "0640"
 | |
|   owner app_user
 | |
|   group app_group
 | |
|   content [
 | |
|     "hubot-help",
 | |
|     "hubot-redis-brain",
 | |
|     "hubot-remotestorage-logger",
 | |
|     "hubot-web-push-notifications",
 | |
|   ].to_json
 | |
| end
 | |
| 
 | |
| execute "npm install" do
 | |
|   cwd app_path
 | |
|   environment "HOME" => app_path
 | |
|   user app_user
 | |
| end
 | |
| 
 | |
| service_env = {
 | |
|   "HUBOT_LOG_LEVEL"             => node.chef_environment == "development" ? "debug" : "info",
 | |
|   "HUBOT_IRC_USESSL"            => "true",
 | |
|   "HUBOT_IRC_SERVER"            => credentials["znc_host"],
 | |
|   "HUBOT_IRC_PORT"              => credentials["znc_port"],
 | |
|   "HUBOT_IRC_NICK"              => "botka",
 | |
|   "HUBOT_IRC_USERNAME"          => credentials['znc_user'],
 | |
|   "HUBOT_IRC_PASSWORD"          => credentials['znc_password'],
 | |
|   "HUBOT_IRC_REALNAME"          => "botka (kosmos)",
 | |
|   "HUBOT_IRC_ROOMS"             => "#kosmos,#kosmos-dev,#kosmos-random,#remotestorage,#hackerbeach,#unhosted,#sockethub,#mastodon",
 | |
|   "HUBOT_IRC_UNFLOOD"           => "100",
 | |
|   "HUBOT_RSS_PRINTSUMMARY"      => "false",
 | |
|   "HUBOT_RSS_PRINTERROR"        => "false",
 | |
|   "HUBOT_RSS_IRCCOLORS"         => "true",
 | |
|   "REDIS_URL"                   => "redis://localhost:6379/botka",
 | |
|   "EXPRESS_PORT"                => node[app_name]['http_port'],
 | |
|   "HUBOT_AUTH_ADMIN"            => "bkero,raucao",
 | |
|   "HUBOT_HELP_REPLY_IN_PRIVATE" => "true",
 | |
|   "RS_LOGGER_USER"              => "kosmos@5apps.com",
 | |
|   "RS_LOGGER_TOKEN"             => credentials['rs_logger_token'],
 | |
|   "RS_LOGGER_SERVER_NAME"       => "irc.libera.chat",
 | |
|   "RS_LOGGER_PUBLIC"            => "true",
 | |
|   "GCM_API_KEY"                 => credentials['gcm_api_key'],
 | |
|   "VAPID_SUBJECT"               => "https://kosmos.org",
 | |
|   "VAPID_PUBLIC_KEY"            => credentials['vapid_public_key'],
 | |
|   "VAPID_PRIVATE_KEY"           => credentials['vapid_private_key']
 | |
| }
 | |
| 
 | |
| systemd_unit "#{app_name}.service" do
 | |
|   content({
 | |
|     Unit: {
 | |
|       Description: app_name,
 | |
|       Requires: "redis@6379.service",
 | |
|       After: "redis@6379.service"
 | |
|     },
 | |
| 
 | |
|     Service: {
 | |
|       ExecStart: "#{app_path}/bin/hubot -a irc",
 | |
|       WorkingDirectory: app_path,
 | |
|       User: app_user,
 | |
|       Group: app_group,
 | |
|       Environment: service_env.map { |k, v| "'#{k}=#{v}'" },
 | |
|       Restart: 'always'
 | |
|     },
 | |
| 
 | |
|     Install: {
 | |
|       WantedBy: 'multi-user.target'
 | |
|     }
 | |
|   })
 | |
|   verify false
 | |
|   triggers_reload true
 | |
|   action [:create, :enable, :start]
 | |
| end
 | |
| 
 | |
| firewall_rule app_name do
 | |
|   port     node[app_name]['http_port']
 | |
|   source   "10.1.1.0/24"
 | |
|   protocol :tcp
 | |
|   command  :allow
 | |
| end
 |