]>
Commit | Line | Data |
---|---|---|
39e05b4e IB |
1 | class 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" | |
6 | $cf_bot_app_reports = "${home}/bot_reports" | |
7 | ||
8 | ensure_packages(["python", "python-pip"]) | |
9 | ||
10 | file { $cf_bot_app: | |
11 | ensure => "directory", | |
12 | mode => "0700", | |
13 | owner => $user, | |
14 | group => $group, | |
15 | require => User["$user:"], | |
16 | } | |
17 | ||
18 | archive { "${home}/trader_${bot_version}.tar.gz": | |
19 | path => "${home}/trader_${bot_version}.tar.gz", | |
20 | source => "https://git.immae.eu/releases/cryptoportfolio/trader/trader_${bot_version}.tar.gz", | |
21 | checksum_type => "sha256", | |
22 | checksum => $bot_sha256, | |
23 | cleanup => false, | |
24 | extract => true, | |
25 | user => $user, | |
26 | username => lookup("base_installation::ldap_cn"), | |
27 | password => generate_password(24, $password_seed, "ldap"), | |
28 | extract_path => $cf_bot_app, | |
29 | require => [User["$user:"], File[$cf_bot_app]], | |
30 | } ~> | |
31 | exec { "py-cryptoportfolio-dependencies": | |
32 | cwd => $cf_bot_app, | |
33 | user => $user, | |
34 | environment => ["HOME=${home}"], | |
35 | command => "/usr/bin/make install", | |
36 | require => User["$user:"], | |
37 | refreshonly => true, | |
38 | before => [ | |
39 | File[$cf_bot_app_conf], | |
40 | Cron["py-cryptoportfolio-before"], | |
41 | Cron["py-cryptoportfolio-after"], | |
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:"], | |
53 | Archive["${home}/trader_${bot_version}.tar.gz"], | |
54 | ], | |
55 | } | |
56 | ||
57 | cron { "py-cryptoportfolio-before": | |
58 | ensure => present, | |
59 | command => "cd $cf_bot_app ; python main.py --config $cf_bot_app_conf --before", | |
60 | user => $user, | |
61 | weekday => 7, # Sunday | |
62 | hour => 22, | |
63 | minute => 30, | |
64 | environment => ["HOME=${home}","PATH=/usr/bin/"], | |
65 | require => [ | |
66 | File[$cf_bot_app_conf], | |
67 | Archive["${home}/trader_${bot_version}.tar.gz"] | |
68 | ], | |
69 | } | |
70 | ||
71 | cron { "py-cryptoportfolio-after": | |
72 | ensure => present, | |
73 | command => "cd $cf_bot_app ; python main.py --config $cf_bot_app_conf --after", | |
74 | user => $user, | |
75 | weekday => 1, # Monday | |
76 | hour => 1, | |
77 | minute => 0, | |
78 | environment => ["HOME=${home}","PATH=/usr/bin/"], | |
79 | require => [ | |
80 | File[$cf_bot_app_conf], | |
81 | Archive["${home}/trader_${bot_version}.tar.gz"] | |
82 | ], | |
83 | } | |
84 | ||
85 | unless empty($webhook_url) { | |
86 | exec { "bot-slack-notify": | |
87 | refreshonly => true, | |
88 | environment => [ | |
89 | "P_PROJECT=Trader", | |
90 | "P_WEBHOOK=${webhook_url}", | |
91 | "P_VERSION=${bot_version}", | |
92 | "P_HOST=${web_host}", | |
93 | "P_HTTPS=${web_ssl}", | |
94 | ], | |
95 | command => "/usr/local/bin/slack-notify", | |
96 | require => File["/usr/local/bin/slack-notify"], | |
97 | subscribe => Exec["py-cryptoportfolio-dependencies"], | |
98 | } | |
99 | } | |
100 | } | |
101 |