diff --git a/nodes/nodejs-4.json b/nodes/nodejs-4.json index c974ec9..d711ed9 100644 --- a/nodes/nodejs-4.json +++ b/nodes/nodejs-4.json @@ -12,7 +12,9 @@ "hostname": "nodejs-4", "ipaddress": "192.168.122.106", "roles": [ + "base", "kvm_guest", + "hubot", "kredits_github", "sockethub" ], @@ -21,6 +23,7 @@ "kosmos-base::default", "kosmos_kvm::guest", "kosmos-hubot::botka_irc-libera-chat", + "kosmos-hubot::hal8000_xmpp", "kredits-github", "kredits-github::default", "kredits-github::nginx", @@ -48,11 +51,11 @@ "redisio::disable_os_default", "redisio::configure", "redisio::enable", + "kosmos-hubot::_user", + "kosmos-hubot::_nodejs", "kosmos-nodejs::default", "nodejs::nodejs_from_package", "nodejs::repo", - "kosmos-hubot::_user", - "kosmos-base::letsencrypt", "kosmos-nginx::default", "nginx::default", "nginx::package", @@ -65,7 +68,8 @@ "kosmos-nginx::firewall", "nodejs::npm", "nodejs::install", - "sockethub::firewall" + "sockethub::firewall", + "kosmos-base::letsencrypt" ], "platform": "ubuntu", "platform_version": "20.04", @@ -82,9 +86,9 @@ } }, "run_list": [ - "recipe[kosmos-base]", + "role[base]", "role[kvm_guest]", - "recipe[kosmos-hubot::botka_irc-libera-chat]", + "role[hubot]", "role[kredits_github]", "role[sockethub]" ] diff --git a/roles/hubot.rb b/roles/hubot.rb new file mode 100644 index 0000000..9bdc549 --- /dev/null +++ b/roles/hubot.rb @@ -0,0 +1,12 @@ +name "hubot" + +default_run_list = %w( + kosmos-hubot::botka_irc-libera-chat + kosmos-hubot::hal8000_xmpp +) + +env_run_lists( + '_default' => default_run_list, + 'development' => [], + 'production' => default_run_list +) diff --git a/site-cookbooks/kosmos-hubot/attributes/default.rb b/site-cookbooks/kosmos-hubot/attributes/default.rb index 250134f..bfac99f 100644 --- a/site-cookbooks/kosmos-hubot/attributes/default.rb +++ b/site-cookbooks/kosmos-hubot/attributes/default.rb @@ -3,14 +3,14 @@ node.default['hal8000']['http_port'] = 8080 node.default['botka_irc-libera-chat']['http_port'] = 8081 node.default['hal8000_xmpp']['http_port'] = 8082 -node.default['hal8000_xmpp']['domain'] = "hal8000.chat.kosmos.org" +node.default['hal8000_xmpp']['domain'] = "hal8000.kosmos.chat" node.default['wormhole']['http_port'] = 8083 node.default['hal8000_xmpp']['hubot_scripts'] = [ "hubot-help", "hubot-redis-brain", "hubot-rules", "hubot-shipit", - "hubot-plusplus", "hubot-tell", "hubot-seen", "hubot-incoming-webhook", - "hubot-auth", "hubot-kredits", "hubot-schedule" + "hubot-tell", "hubot-seen", "hubot-incoming-webhook", + "hubot-auth", "hubot-schedule", "@kredits/hubot-kredits" ] node.default['hal8000_xmpp']['rooms'] = [ @@ -27,8 +27,8 @@ node.default['hal8000_xmpp']['kredits']['ipfs_host'] = 'localhost' node.default['hal8000_xmpp']['kredits']['ipfs_port'] = '5001' node.default['hal8000_xmpp']['kredits']['ipfs_protocol'] = 'http' node.default['hal8000_xmpp']['kredits']['room'] = 'kredits@kosmos.chat' -node.default['hal8000_xmpp']['kredits']['provider_url'] = 'https://rinkeby.infura.io/v3/c5e74367261d475ab935e2f0e726482f' -node.default['hal8000_xmpp']['kredits']['network_id'] = '4' +node.default['hal8000_xmpp']['kredits']['provider_url'] = 'https://rsk-testnet.kosmos.org' +node.default['hal8000_xmpp']['kredits']['network_id'] = '31' node.default['hal8000_xmpp']['kredits']['wallet_path'] = 'wallet.json' node.default['hal8000_xmpp']['kredits']['mediawiki_url'] = 'https://wiki.kosmos.org/' node.default['hal8000_xmpp']['kredits']['github_repo_blacklist'] = '67P/test-one-two' diff --git a/site-cookbooks/kosmos-hubot/metadata.rb b/site-cookbooks/kosmos-hubot/metadata.rb index b2094c9..75f13c4 100644 --- a/site-cookbooks/kosmos-hubot/metadata.rb +++ b/site-cookbooks/kosmos-hubot/metadata.rb @@ -6,9 +6,10 @@ description 'Configures Kosmos chat bots' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) version '0.2.0' +depends 'kosmos-base' depends 'kosmos-nodejs' +depends 'kosmos-ipfs' depends 'firewall' depends 'application_javascript' -depends 'kosmos-ipfs' depends 'git' depends 'redisio' diff --git a/site-cookbooks/kosmos-hubot/recipes/_nodejs.rb b/site-cookbooks/kosmos-hubot/recipes/_nodejs.rb new file mode 100644 index 0000000..3a0fb57 --- /dev/null +++ b/site-cookbooks/kosmos-hubot/recipes/_nodejs.rb @@ -0,0 +1,8 @@ +# +# Cookbook Name:: kosmos-hubot +# Recipe:: _nodejs +# + +node.override["nodejs"]["repo"] = "https://deb.nodesource.com/node_16.x" + +include_recipe "kosmos-nodejs" diff --git a/site-cookbooks/kosmos-hubot/recipes/hal8000_xmpp.rb b/site-cookbooks/kosmos-hubot/recipes/hal8000_xmpp.rb index 818ff6e..f83e084 100644 --- a/site-cookbooks/kosmos-hubot/recipes/hal8000_xmpp.rb +++ b/site-cookbooks/kosmos-hubot/recipes/hal8000_xmpp.rb @@ -14,20 +14,9 @@ end include_recipe 'redisio::default' include_recipe 'redisio::enable' -include_recipe "kosmos-nodejs" include_recipe "kosmos-hubot::_user" - -# Needed for hubot-kredits -include_recipe "kosmos-ipfs" - -unless node.chef_environment == "development" - include_recipe 'firewall' - firewall_rule 'ipfs_swarm_p2p' do - port 4001 - protocol :tcp - command :allow - end -end +include_recipe "kosmos-hubot::_nodejs" +include_recipe "kosmos-base::firewall" application app_path do data_bag = Chef::EncryptedDataBagItem.load('credentials', app_name) @@ -53,7 +42,13 @@ application app_path do user app_user end - file "#{app_path}/node_modules/hubot-kredits/.env" do + ipfs_host = search(:node, "role:ipfs_gateway").first["knife_zero"]["host"] + node.override[app_name]['kredits']['ipfs_host'] = ipfs_host + + rsk_node_ip = search(:node, "role:rskj_testnet").first["knife_zero"]["host"] + node.override[app_name]['kredits']['provider_url'] = "http://#{rsk_node_ip}:4444" + + file "#{app_path}/node_modules/@kredits/hubot-kredits/.env" do mode "0600" owner app_user group app_group @@ -107,7 +102,6 @@ KREDITS_WALLET_PASSWORD=#{data_bag['kredits_wallet_password']} "KREDITS_ROOM" => node[app_name]['kredits']['room'], "KREDITS_WEBHOOK_TOKEN" => data_bag['kredits_webhook_token'], "KREDITS_PROVIDER_URL" => node[app_name]['kredits']['provider_url'], - "KREDITS_NETWORK_ID" => node[app_name]['kredits']['network_id'], "KREDITS_WALLET_PATH" => node[app_name]['kredits']['wallet_path'], "KREDITS_WALLET_PASSWORD" => data_bag['kredits_wallet_password'], "KREDITS_MEDIAWIKI_URL" => node[app_name]['kredits']['mediawiki_url'], @@ -135,27 +129,9 @@ KREDITS_WALLET_PASSWORD=#{data_bag['kredits_wallet_password']} end end -# -# Nginx reverse proxy -# -unless node.chef_environment == "development" - include_recipe "kosmos-base::letsencrypt" - include_recipe "kosmos-nginx" - - template "#{node['nginx']['dir']}/sites-available/#{node[app_name]['domain']}" do - source 'nginx_conf_hubot.erb' - owner node["nginx"]["user"] - mode 0640 - variables express_port: node[app_name]['http_port'], - server_name: node[app_name]['domain'], - ssl_cert: "/etc/letsencrypt/live/#{node[app_name]['domain']}/fullchain.pem", - ssl_key: "/etc/letsencrypt/live/#{node[app_name]['domain']}/privkey.pem" - notifies :reload, 'service[nginx]', :delayed - end - - nginx_site node[app_name]['domain'] do - action :enable - end - - nginx_certbot_site node[app_name]['domain'] +firewall_rule app_name do + port node[app_name]['http_port'] + source "10.1.1.0/24" + protocol :tcp + command :allow end