Refactor botka recipe

This commit is contained in:
Basti 2019-05-09 23:43:02 +02:00
parent 36cfeab15d
commit e8f325b41b
No known key found for this signature in database
GPG Key ID: BE4634D632D39B67
2 changed files with 49 additions and 51 deletions

View File

@ -1,26 +1,23 @@
node.default['hal8000']['http_port'] = 8080
node.default['botka_freenode']['http_port'] = 8081
node.default['botka_freenode']['domain'] = "freenode.botka.kosmos.org"
node.default['hal8000_xmpp']['http_port'] = 8082
node.default['hal8000_xmpp']['domain'] = "xmpp.hal8000.kosmos.org"
node.default['hal8000_xmpp']['hubot_scripts'] = [
"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",
"hubot-schedule"
"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", "hubot-schedule"
]
node.default['hal8000_xmpp']['rooms'] = [
'kosmos@chat.kosmos.org'
# 'kosmos-dev@chat.kosmos.org',
'kosmos@chat.kosmos.org',
'kosmos-dev@chat.kosmos.org',
'kredits@chat.kosmos.org',
]
node.default['hal8000_xmpp']['auth_admins'] = []
@ -30,7 +27,7 @@ node.default['hal8000_xmpp']['kredits']['ipfs_host'] = 'localhost'
# members of the cluster
node.default['hal8000_xmpp']['kredits']['ipfs_port'] = '9095'
node.default['hal8000_xmpp']['kredits']['ipfs_protocol'] = 'http'
node.default['hal8000_xmpp']['kredits']['room'] = 'kosmos@chat.kosmos.org'
node.default['hal8000_xmpp']['kredits']['room'] = 'kredits@chat.kosmos.org'
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']['wallet_path'] = 'wallet.json'

View File

@ -22,32 +22,35 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
#
app_name = "botka_freenode"
app_path = "/opt/#{app_name}"
app_user = "hubot"
app_group = "hubot"
build_essential 'botka' do
build_essential app_name do
compile_time true
end
include_recipe "kosmos-nodejs"
include_recipe "kosmos-redis"
botka_freenode_data_bag_item = Chef::EncryptedDataBagItem.load('credentials', 'botka_freenode')
application app_path do
data_bag = Chef::EncryptedDataBagItem.load('credentials', app_name)
botka_freenode_path = "/opt/botka_freenode"
application botka_freenode_path do
owner "hubot"
group "hubot"
owner app_user
group app_group
git do
user "hubot"
group "hubot"
user app_user
group app_group
repository "https://github.com/67P/botka.git"
revision "master"
end
file "#{name}/external-scripts.json" do
file "#{app_path}/external-scripts.json" do
mode "0640"
owner "hubot"
group "hubot"
owner app_user
group app_group
content [
"hubot-help",
"hubot-redis-brain",
@ -57,7 +60,7 @@ application botka_freenode_path do
end
npm_install do
user "hubot"
user app_user
end
execute "systemctl daemon-reload" do
@ -65,46 +68,46 @@ application botka_freenode_path do
action :nothing
end
template "/lib/systemd/system/botka_freenode_nodejs.service" do
template "/lib/systemd/system/#{app_name}.service" do
source 'nodejs.systemd.service.erb'
owner 'root'
group 'root'
mode '0644'
variables(
user: "hubot",
group: "hubot",
app_dir: botka_freenode_path,
entry: "#{botka_freenode_path}/bin/hubot -a irc",
user: app_user,
group: app_group,
app_dir: app_path,
entry: "#{app_path}/bin/hubot -a irc",
environment: {
"HUBOT_LOG_LEVEL" => node.chef_environment == "development" ? "debug" : "info",
"HUBOT_IRC_SERVER" => "irc.freenode.net",
"HUBOT_IRC_ROOMS" => "#5apps,#kosmos,#kosmos-dev,#kosmos-random,#remotestorage,#hackerbeach,#unhosted,#sockethub,#opensourcedesign,#openknot,#emberjs,#mastodon,#indieweb,#lnd",
"HUBOT_IRC_NICK" => "botka",
"HUBOT_IRC_NICKSERV_USERNAME" => "botka",
"HUBOT_IRC_NICKSERV_PASSWORD" => botka_freenode_data_bag_item['nickserv_password'],
"HUBOT_IRC_NICKSERV_PASSWORD" => data_bag['nickserv_password'],
"HUBOT_IRC_UNFLOOD" => "100",
"HUBOT_RSS_PRINTSUMMARY" => "false",
"HUBOT_RSS_PRINTERROR" => "false",
"HUBOT_RSS_IRCCOLORS" => "true",
# "HUBOT_LOG_LEVEL" => "error",
"EXPRESS_PORT" => node[app_name]['http_port'],
"HUBOT_AUTH_ADMIN" => "bkero,derbumi,galfert,gregkare,jaaan,slvrbckt,raucao",
"HUBOT_HELP_REPLY_IN_PRIVATE" => "true",
"RS_LOGGER_USER" => "kosmos@5apps.com",
"RS_LOGGER_TOKEN" => botka_freenode_data_bag_item['rs_logger_token'],
"RS_LOGGER_TOKEN" => data_bag['rs_logger_token'],
"RS_LOGGER_SERVER_NAME" => "freenode",
"RS_LOGGER_PUBLIC" => "true",
"GCM_API_KEY" => botka_freenode_data_bag_item['gcm_api_key'],
"GCM_API_KEY" => data_bag['gcm_api_key'],
"VAPID_SUBJECT" => "https://kosmos.org",
"VAPID_PUBLIC_KEY" => botka_freenode_data_bag_item['vapid_public_key'],
"VAPID_PRIVATE_KEY" => botka_freenode_data_bag_item['vapid_private_key'],
"VAPID_PUBLIC_KEY" => data_bag['vapid_public_key'],
"VAPID_PRIVATE_KEY" => data_bag['vapid_private_key'],
"REDIS_URL" => "redis://localhost:6379/botka"
}
)
notifies :run, "execute[systemctl daemon-reload]", :delayed
notifies :restart, "service[botka_freenode_nodejs]", :delayed
notifies :restart, "service[#{app_name}]", :delayed
end
service "botka_freenode_nodejs" do
service app_name do
action [:enable, :start]
end
end
@ -113,25 +116,23 @@ end
# Nginx reverse proxy
#
unless node.chef_environment == "development"
express_domain = "freenode.botka.kosmos.org"
include_recipe "kosmos-base::letsencrypt"
include_recipe "kosmos-nginx"
template "#{node['nginx']['dir']}/sites-available/#{express_domain}" do
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: express_domain,
ssl_cert: "/etc/letsencrypt/live/#{express_domain}/fullchain.pem",
ssl_key: "/etc/letsencrypt/live/#{express_domain}/privkey.pem"
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 express_domain do
nginx_site node[app_name]['domain'] do
action :enable
end
nginx_certbot_site express_domain
nginx_certbot_site node[app_name]['domain']
end