122 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| #
 | |
| # Cookbook Name:: kosmos-hubot
 | |
| # Recipe:: hal8000
 | |
| #
 | |
| # Copyright 2017-2018, Kosmos
 | |
| #
 | |
| include_recipe "kosmos-nodejs"
 | |
| include_recipe "kosmos-redis"
 | |
| 
 | |
| # Needed for hubot-kredits
 | |
| include_recipe "kosmos-ipfs"
 | |
| 
 | |
| unless node.chef_environment == "development"
 | |
|   include_recipe 'firewall'
 | |
|   firewall_rule 'hubot_express_hal8000_freenode' do
 | |
|     port     8080
 | |
|     protocol :tcp
 | |
|     command  :allow
 | |
|   end
 | |
|   firewall_rule 'ipfs_swarm_p2p' do
 | |
|     port     4001
 | |
|     protocol :tcp
 | |
|     command  :allow
 | |
|   end
 | |
| end
 | |
| 
 | |
| hal8000_freenode_data_bag_item = Chef::EncryptedDataBagItem.load('credentials', 'hal8000_freenode')
 | |
| 
 | |
| hal8000_path = "/opt/hal8000"
 | |
| application hal8000_path do
 | |
|   owner "hubot"
 | |
|   group "hubot"
 | |
| 
 | |
|   git do
 | |
|     user       "hubot"
 | |
|     group      "hubot"
 | |
|     repository "https://github.com/67P/hal8000.git"
 | |
|     revision   "master"
 | |
|   end
 | |
| 
 | |
|   file "#{name}/external-scripts.json" do
 | |
|     mode  "0640"
 | |
|     owner "hubot"
 | |
|     group "hubot"
 | |
|     content [
 | |
|       "hubot-help",
 | |
|       "hubot-read-tweet",
 | |
|       "hubot-redis-brain",
 | |
|       "hubot-rules",
 | |
|       "hubot-shipit",
 | |
|       "hubot-plusplus",
 | |
|       "hubot-tell",
 | |
|       "hubot-seen",
 | |
|       "hubot-rss-reader",
 | |
|       "hubot-incoming-webhook",
 | |
|       "hubot-auth",
 | |
|       "hubot-kredits",
 | |
|     ].to_json
 | |
|   end
 | |
| 
 | |
|   npm_install do
 | |
|     user "hubot"
 | |
|   end
 | |
| 
 | |
|   execute "systemctl daemon-reload" do
 | |
|     command "systemctl daemon-reload"
 | |
|     action :nothing
 | |
|   end
 | |
| 
 | |
|   template "/lib/systemd/system/hal8000_nodejs.service" do
 | |
|     source 'nodejs.systemd.service.erb'
 | |
|     owner 'root'
 | |
|     group 'root'
 | |
|     mode '0644'
 | |
|     variables(
 | |
|       user: "hubot",
 | |
|       group: "hubot",
 | |
|       app_dir: hal8000_path,
 | |
|       entry: "#{hal8000_path}/bin/hubot -a irc",
 | |
|       environment: {
 | |
|         # "HUBOT_LOG_LEVEL"           => "error",
 | |
|         "HUBOT_IRC_SERVER"            => "irc.freenode.net",
 | |
|         "HUBOT_IRC_ROOMS"             => "#5apps,#kosmos,#kosmos-dev,#kosmos-random,#remotestorage,#hackerbeach,#unhosted,#sockethub",
 | |
|         "HUBOT_IRC_NICK"              => "hal8000",
 | |
|         "HUBOT_IRC_NICKSERV_USERNAME" => "hal8000",
 | |
|         "HUBOT_IRC_NICKSERV_PASSWORD" => hal8000_freenode_data_bag_item['nickserv_password'],
 | |
|         "HUBOT_IRC_UNFLOOD"           => "100",
 | |
|         "HUBOT_RSS_PRINTSUMMARY"      => "false",
 | |
|         "HUBOT_RSS_PRINTERROR"        => "false",
 | |
|         "HUBOT_RSS_IRCCOLORS"         => "true",
 | |
|         "HUBOT_PLUSPLUS_POINTS_TERM"  => "karma,karma",
 | |
|         "EXPRESS_PORT"                => "8080",
 | |
|         "HUBOT_RSS_HEADER"            => "Update:",
 | |
|         "HUBOT_AUTH_ADMIN"            => "bkero,derbumi,galfert,gregkare,slvrbckt,raucao",
 | |
|         "WEBHOOK_TOKEN"               => hal8000_freenode_data_bag_item['webhook_token'],
 | |
|         "IPFS_API_HOST"               => node['hal8000']['kredits']['ipfs_host'],
 | |
|         "IPFS_API_PORT"               => node['hal8000']['kredits']['ipfs_port'],
 | |
|         "IPFS_API_PROTOCOL"           => node['hal8000']['kredits']['ipfs_protocol'],
 | |
|         "KREDITS_ROOM"                => node['hal8000']['kredits']['room'],
 | |
|         "KREDITS_WEBHOOK_TOKEN"       => hal8000_freenode_data_bag_item['kredits_webhook_token'],
 | |
|         "KREDITS_PROVIDER_URL"        => node['hal8000']['kredits']['provider_url'],
 | |
|         "KREDITS_NETWORK_ID"          => node['hal8000']['kredits']['network_id'],
 | |
|         "KREDITS_WALLET_PATH"         => node['hal8000']['kredits']['wallet_path'],
 | |
|         "KREDITS_WALLET_PASSWORD"     => hal8000_freenode_data_bag_item['kredits_wallet_password'],
 | |
|         "KREDITS_MEDIAWIKI_URL"       => node['hal8000']['kredits']['mediawiki_url'],
 | |
|         "KREDITS_GITHUB_REPO_BLACKLIST" => node['hal8000']['kredits']['github_repo_blacklist']
 | |
|       }
 | |
|     )
 | |
|     notifies :run, "execute[systemctl daemon-reload]", :delayed
 | |
|     notifies :restart, "service[hal8000_nodejs]", :delayed
 | |
|   end
 | |
| 
 | |
|   cookbook_file "#{name}/wallet.json" do
 | |
|     source "wallet.json"
 | |
|   end
 | |
| 
 | |
|   service "hal8000_nodejs" do
 | |
|     action [:enable, :start]
 | |
|   end
 | |
| end
 | |
| 
 |