X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=modules%2Frole%2Fmanifests%2Fcryptoportfolio%2Fbot.pp;h=0021bc63e6b6cd5263ff841e7dc27c2a770fa3ad;hb=871df075f3b3c405ef104266bbfb937cd6734b7d;hp=a15c779f6f1f7c8164b583e9b68b4bbba3091b84;hpb=39e05b4ec79c5dc07417a6cb1f0e1b2dcd111a1a;p=perso%2FImmae%2FProjets%2FPuppet.git diff --git a/modules/role/manifests/cryptoportfolio/bot.pp b/modules/role/manifests/cryptoportfolio/bot.pp index a15c779..0021bc6 100644 --- a/modules/role/manifests/cryptoportfolio/bot.pp +++ b/modules/role/manifests/cryptoportfolio/bot.pp @@ -3,6 +3,7 @@ class role::cryptoportfolio::bot inherits role::cryptoportfolio { $cf_bot_app = "${home}/bot" $cf_bot_app_conf = "${home}/bot_config.ini" + $cf_bot_app_conf_hourly = "${home}/bot_config_hourly.ini" $cf_bot_app_reports = "${home}/bot_reports" ensure_packages(["python", "python-pip"]) @@ -15,11 +16,11 @@ class role::cryptoportfolio::bot inherits role::cryptoportfolio { require => User["$user:"], } - archive { "${home}/trader_${bot_version}.tar.gz": - path => "${home}/trader_${bot_version}.tar.gz", - source => "https://git.immae.eu/releases/cryptoportfolio/trader/trader_${bot_version}.tar.gz", + archive { "${home}/trader_${trader_version}.tar.gz": + path => "${home}/trader_${trader_version}.tar.gz", + source => "https://release.immae.eu/cryptoportfolio/trader/trader_${trader_version}.tar.gz", checksum_type => "sha256", - checksum => $bot_sha256, + checksum => $trader_sha256, cleanup => false, extract => true, user => $user, @@ -37,8 +38,7 @@ class role::cryptoportfolio::bot inherits role::cryptoportfolio { refreshonly => true, before => [ File[$cf_bot_app_conf], - Cron["py-cryptoportfolio-before"], - Cron["py-cryptoportfolio-after"], + Cron::Job::Multiple["py-cryptoportfolio"], ] } @@ -50,36 +50,75 @@ class role::cryptoportfolio::bot inherits role::cryptoportfolio { content => template("role/cryptoportfolio/bot_config.ini.erb"), require => [ User["$user:"], - Archive["${home}/trader_${bot_version}.tar.gz"], + Archive["${home}/trader_${trader_version}.tar.gz"], ], } - cron { "py-cryptoportfolio-before": + cron::job::multiple { "py-cryptoportfolio": ensure => present, - command => "cd $cf_bot_app ; python main.py --config $cf_bot_app_conf --before", - user => $user, - weekday => 7, # Sunday - hour => 22, - minute => 30, - environment => ["HOME=${home}","PATH=/usr/bin/"], + environment => ["HOME=${home}","PATH=/usr/bin/","CRON_TZ=UTC"], require => [ File[$cf_bot_app_conf], - Archive["${home}/trader_${bot_version}.tar.gz"] + Archive["${home}/trader_${trader_version}.tar.gz"] + ], + jobs => [ + { + command => "cd $cf_bot_app ; python main.py --quiet --config $cf_bot_app_conf --before", + user => $user, + weekday => 7, # Sunday + hour => 22, + minute => 30, + description => "Run before the cryptoportfolio update", + } ], } - cron { "py-cryptoportfolio-after": - ensure => present, - command => "cd $cf_bot_app ; python main.py --config $cf_bot_app_conf --after", - user => $user, - weekday => 1, # Monday - hour => 1, - minute => 0, - environment => ["HOME=${home}","PATH=/usr/bin/"], - require => [ - File[$cf_bot_app_conf], - Archive["${home}/trader_${bot_version}.tar.gz"] - ], + if ($environment == "production") { + $monitored_key = 3 + @profile::monitoring::local_service { "Last redis report is less than 2 hours old": + local => { + check_command => "check_date!redis-cli -s $redis_host GET /cryptoportfolio/$monitored_key/latest/date!2" + } + } + + @profile::monitoring::local_service { "Last bot report is less than one week old": + sudos => { + "naemon-cryptoportfolio-bot" => "naemon ALL=($user) NOPASSWD: /usr/bin/find $cf_bot_app_reports -mindepth 1 -maxdepth 1 -printf %T@?n", + }, + local => { + check_command => "check_last_file_date!$cf_bot_app_reports!168!$user", + }, + } + } + + if versioncmp($trader_version, "v1.3") >= 0 { + file { $cf_bot_app_conf_hourly: + owner => $user, + group => $group, + mode => "0600", + content => template("role/cryptoportfolio/bot_config_hourly.ini.erb"), + require => [ + User["$user:"], + Archive["${home}/trader_${trader_version}.tar.gz"], + ], + } + + cron::job::multiple { "py-cryptoportfolio-hourly": + ensure => present, + environment => ["HOME=${home}","PATH=/usr/bin/"], + require => [ + File[$cf_bot_app_conf_hourly], + Archive["${home}/trader_${trader_version}.tar.gz"] + ], + jobs => [ + { + command => "cd $cf_bot_app ; python main.py --config $cf_bot_app_conf_hourly", + user => $user, + minute => 30, + description => "Print the current state to redis", + }, + ], + } } unless empty($webhook_url) { @@ -88,7 +127,7 @@ class role::cryptoportfolio::bot inherits role::cryptoportfolio { environment => [ "P_PROJECT=Trader", "P_WEBHOOK=${webhook_url}", - "P_VERSION=${bot_version}", + "P_VERSION=${trader_version}", "P_HOST=${web_host}", "P_HTTPS=${web_ssl}", ],