$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"])
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,
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"],
],
}
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",
- },
- {
- command => "cd $cf_bot_app ; python main.py --quiet --config $cf_bot_app_conf --after",
- user => $user,
- weekday => 1, # Monday
- hour => 0,
- minute => 0,
- description => "Run after the cryptoportfolio update",
+ jobs => [],
+ }
+
+ 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) {
environment => [
"P_PROJECT=Trader",
"P_WEBHOOK=${webhook_url}",
- "P_VERSION=${bot_version}",
+ "P_VERSION=${trader_version}",
"P_HOST=${web_host}",
"P_HTTPS=${web_ssl}",
],