]> git.immae.eu Git - perso/Immae/Projets/Puppet.git/blame - modules/role/manifests/cryptoportfolio/bot.pp
Remove cryptoportfolio bot job
[perso/Immae/Projets/Puppet.git] / modules / role / manifests / cryptoportfolio / bot.pp
CommitLineData
39e05b4e
IB
1class role::cryptoportfolio::bot inherits role::cryptoportfolio {
2 $password_seed = lookup("base_installation::puppet_pass_seed")
3
4 $cf_bot_app = "${home}/bot"
5 $cf_bot_app_conf = "${home}/bot_config.ini"
d5f4e591 6 $cf_bot_app_conf_hourly = "${home}/bot_config_hourly.ini"
39e05b4e
IB
7 $cf_bot_app_reports = "${home}/bot_reports"
8
9 ensure_packages(["python", "python-pip"])
10
11 file { $cf_bot_app:
12 ensure => "directory",
13 mode => "0700",
14 owner => $user,
15 group => $group,
16 require => User["$user:"],
17 }
18
acaa9ea9
IB
19 archive { "${home}/trader_${trader_version}.tar.gz":
20 path => "${home}/trader_${trader_version}.tar.gz",
19c467dc 21 source => "https://release.immae.eu/cryptoportfolio/trader/trader_${trader_version}.tar.gz",
39e05b4e 22 checksum_type => "sha256",
acaa9ea9 23 checksum => $trader_sha256,
39e05b4e
IB
24 cleanup => false,
25 extract => true,
26 user => $user,
27 username => lookup("base_installation::ldap_cn"),
28 password => generate_password(24, $password_seed, "ldap"),
29 extract_path => $cf_bot_app,
30 require => [User["$user:"], File[$cf_bot_app]],
31 } ~>
32 exec { "py-cryptoportfolio-dependencies":
33 cwd => $cf_bot_app,
34 user => $user,
35 environment => ["HOME=${home}"],
36 command => "/usr/bin/make install",
37 require => User["$user:"],
38 refreshonly => true,
39 before => [
40 File[$cf_bot_app_conf],
2859008e 41 Cron::Job::Multiple["py-cryptoportfolio"],
39e05b4e
IB
42 ]
43 }
44
45 $pg_password = generate_password(24, $password_seed, "postgres_cryptoportfolio")
46 file { $cf_bot_app_conf:
47 owner => $user,
48 group => $group,
49 mode => "0600",
50 content => template("role/cryptoportfolio/bot_config.ini.erb"),
51 require => [
52 User["$user:"],
acaa9ea9 53 Archive["${home}/trader_${trader_version}.tar.gz"],
39e05b4e
IB
54 ],
55 }
56
2859008e 57 cron::job::multiple { "py-cryptoportfolio":
39e05b4e 58 ensure => present,
7f1244c8 59 environment => ["HOME=${home}","PATH=/usr/bin/","CRON_TZ=UTC"],
39e05b4e
IB
60 require => [
61 File[$cf_bot_app_conf],
acaa9ea9 62 Archive["${home}/trader_${trader_version}.tar.gz"]
39e05b4e 63 ],
b08f274f 64 jobs => [],
39e05b4e
IB
65 }
66
96f8d0f0
IB
67 if ($environment == "production") {
68 $monitored_key = 3
69 @profile::monitoring::local_service { "Last redis report is less than 2 hours old":
70 local => {
71 check_command => "check_date!redis-cli -s $redis_host GET /cryptoportfolio/$monitored_key/latest/date!2"
72 }
73 }
74
75 @profile::monitoring::local_service { "Last bot report is less than one week old":
76 sudos => {
77 "naemon-cryptoportfolio-bot" => "naemon ALL=($user) NOPASSWD: /usr/bin/find $cf_bot_app_reports -mindepth 1 -maxdepth 1 -printf %T@?n",
78 },
79 local => {
80 check_command => "check_last_file_date!$cf_bot_app_reports!168!$user",
81 },
82 }
83 }
84
d5f4e591
IB
85 if versioncmp($trader_version, "v1.3") >= 0 {
86 file { $cf_bot_app_conf_hourly:
87 owner => $user,
88 group => $group,
89 mode => "0600",
90 content => template("role/cryptoportfolio/bot_config_hourly.ini.erb"),
91 require => [
92 User["$user:"],
93 Archive["${home}/trader_${trader_version}.tar.gz"],
94 ],
95 }
96
97 cron::job::multiple { "py-cryptoportfolio-hourly":
98 ensure => present,
99 environment => ["HOME=${home}","PATH=/usr/bin/"],
100 require => [
101 File[$cf_bot_app_conf_hourly],
102 Archive["${home}/trader_${trader_version}.tar.gz"]
103 ],
104 jobs => [
105 {
106 command => "cd $cf_bot_app ; python main.py --config $cf_bot_app_conf_hourly",
107 user => $user,
108 minute => 30,
109 description => "Print the current state to redis",
110 },
111 ],
112 }
113 }
114
39e05b4e
IB
115 unless empty($webhook_url) {
116 exec { "bot-slack-notify":
117 refreshonly => true,
118 environment => [
119 "P_PROJECT=Trader",
120 "P_WEBHOOK=${webhook_url}",
acaa9ea9 121 "P_VERSION=${trader_version}",
39e05b4e
IB
122 "P_HOST=${web_host}",
123 "P_HTTPS=${web_ssl}",
124 ],
125 command => "/usr/local/bin/slack-notify",
126 require => File["/usr/local/bin/slack-notify"],
127 subscribe => Exec["py-cryptoportfolio-dependencies"],
128 }
129 }
130}
131