diff options
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | modules/profile/files/redis/socket_shutdown_override.conf | 3 | ||||
-rw-r--r-- | modules/profile/manifests/redis.pp | 34 | ||||
m--------- | modules/redis | 0 | ||||
-rw-r--r-- | modules/role/manifests/cryptoportfolio.pp | 4 | ||||
-rw-r--r-- | modules/role/manifests/cryptoportfolio/bot.pp | 31 | ||||
-rw-r--r-- | modules/role/templates/cryptoportfolio/bot_config_hourly.ini.erb | 17 |
7 files changed, 92 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules index 6752dee..c75f803 100644 --- a/.gitmodules +++ b/.gitmodules | |||
@@ -58,3 +58,6 @@ | |||
58 | [submodule "modules/cron"] | 58 | [submodule "modules/cron"] |
59 | path = modules/cron | 59 | path = modules/cron |
60 | url = git://git.immae.eu/github/voxpupuli/puppet-cron | 60 | url = git://git.immae.eu/github/voxpupuli/puppet-cron |
61 | [submodule "modules/redis"] | ||
62 | path = modules/redis | ||
63 | url = git://git.immae.eu/github/arioch/puppet-redis | ||
diff --git a/modules/profile/files/redis/socket_shutdown_override.conf b/modules/profile/files/redis/socket_shutdown_override.conf new file mode 100644 index 0000000..8b73264 --- /dev/null +++ b/modules/profile/files/redis/socket_shutdown_override.conf | |||
@@ -0,0 +1,3 @@ | |||
1 | [Service] | ||
2 | ExecStop= | ||
3 | ExecStop=/usr/bin/redis-cli -s /run/redis/redis.sock shutdown | ||
diff --git a/modules/profile/manifests/redis.pp b/modules/profile/manifests/redis.pp new file mode 100644 index 0000000..79871b1 --- /dev/null +++ b/modules/profile/manifests/redis.pp | |||
@@ -0,0 +1,34 @@ | |||
1 | class profile::redis { | ||
2 | file { '/etc/systemd/system/redis.service.d/': | ||
3 | ensure => "directory", | ||
4 | path => "/etc/systemd/system/redis.service.d/", | ||
5 | mode => "0755", | ||
6 | owner => "root", | ||
7 | group => "root" | ||
8 | } -> | ||
9 | file { '/etc/systemd/system/redis.service.d/socket_shutdown.conf': | ||
10 | ensure => "present", | ||
11 | path => "/etc/systemd/system/redis.service.d/noclear.conf", | ||
12 | source => 'puppet:///modules/profile/redis/socket_shutdown_override.conf', | ||
13 | recurse => true, | ||
14 | mode => "0644", | ||
15 | owner => "root", | ||
16 | group => "root", | ||
17 | notify => Service["redis"], | ||
18 | } | ||
19 | |||
20 | package { "ruby-augeas": | ||
21 | ensure => installed, | ||
22 | } -> | ||
23 | class { '::redis': | ||
24 | unixsocket => "/run/redis/redis.sock", | ||
25 | unixsocketperm => "777", | ||
26 | ulimit => false, | ||
27 | daemonize => false, | ||
28 | config_file => "/etc/redis.conf", | ||
29 | config_file_orig => "/etc/redis.conf.puppet", | ||
30 | port => 0, | ||
31 | require => File["/etc/systemd/system/redis.service.d/socket_shutdown.conf"], | ||
32 | } | ||
33 | |||
34 | } | ||
diff --git a/modules/redis b/modules/redis new file mode 160000 | |||
Subproject bfcc2120f7b83342b03241d1429028a6defdd0d | |||
diff --git a/modules/role/manifests/cryptoportfolio.pp b/modules/role/manifests/cryptoportfolio.pp index 6a659cc..53b7abd 100644 --- a/modules/role/manifests/cryptoportfolio.pp +++ b/modules/role/manifests/cryptoportfolio.pp | |||
@@ -9,6 +9,7 @@ class role::cryptoportfolio ( | |||
9 | String $pg_db, | 9 | String $pg_db, |
10 | Optional[String] $pg_hostname = "localhost", | 10 | Optional[String] $pg_hostname = "localhost", |
11 | Optional[String] $pg_port = "5432", | 11 | Optional[String] $pg_port = "5432", |
12 | Optional[String] $redis_host = "/run/redis/redis.sock", | ||
12 | Optional[String] $web_host = undef, | 13 | Optional[String] $web_host = undef, |
13 | Optional[String] $web_port = "", | 14 | Optional[String] $web_port = "", |
14 | Optional[Boolean] $web_ssl = true, | 15 | Optional[Boolean] $web_ssl = true, |
@@ -30,6 +31,9 @@ class role::cryptoportfolio ( | |||
30 | contain "role::cryptoportfolio::notify" | 31 | contain "role::cryptoportfolio::notify" |
31 | 32 | ||
32 | unless empty($trader_version) { | 33 | unless empty($trader_version) { |
34 | if versioncmp($trader_version, "v1.3") >= 0 { | ||
35 | include "profile::redis" | ||
36 | } | ||
33 | contain "role::cryptoportfolio::bot" | 37 | contain "role::cryptoportfolio::bot" |
34 | } | 38 | } |
35 | 39 | ||
diff --git a/modules/role/manifests/cryptoportfolio/bot.pp b/modules/role/manifests/cryptoportfolio/bot.pp index 082e820..2f01c98 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 { | |||
3 | 3 | ||
4 | $cf_bot_app = "${home}/bot" | 4 | $cf_bot_app = "${home}/bot" |
5 | $cf_bot_app_conf = "${home}/bot_config.ini" | 5 | $cf_bot_app_conf = "${home}/bot_config.ini" |
6 | $cf_bot_app_conf_hourly = "${home}/bot_config_hourly.ini" | ||
6 | $cf_bot_app_reports = "${home}/bot_reports" | 7 | $cf_bot_app_reports = "${home}/bot_reports" |
7 | 8 | ||
8 | ensure_packages(["python", "python-pip"]) | 9 | ensure_packages(["python", "python-pip"]) |
@@ -80,6 +81,36 @@ class role::cryptoportfolio::bot inherits role::cryptoportfolio { | |||
80 | ], | 81 | ], |
81 | } | 82 | } |
82 | 83 | ||
84 | if versioncmp($trader_version, "v1.3") >= 0 { | ||
85 | file { $cf_bot_app_conf_hourly: | ||
86 | owner => $user, | ||
87 | group => $group, | ||
88 | mode => "0600", | ||
89 | content => template("role/cryptoportfolio/bot_config_hourly.ini.erb"), | ||
90 | require => [ | ||
91 | User["$user:"], | ||
92 | Archive["${home}/trader_${trader_version}.tar.gz"], | ||
93 | ], | ||
94 | } | ||
95 | |||
96 | cron::job::multiple { "py-cryptoportfolio-hourly": | ||
97 | ensure => present, | ||
98 | environment => ["HOME=${home}","PATH=/usr/bin/"], | ||
99 | require => [ | ||
100 | File[$cf_bot_app_conf_hourly], | ||
101 | Archive["${home}/trader_${trader_version}.tar.gz"] | ||
102 | ], | ||
103 | jobs => [ | ||
104 | { | ||
105 | command => "cd $cf_bot_app ; python main.py --config $cf_bot_app_conf_hourly", | ||
106 | user => $user, | ||
107 | minute => 30, | ||
108 | description => "Print the current state to redis", | ||
109 | }, | ||
110 | ], | ||
111 | } | ||
112 | } | ||
113 | |||
83 | unless empty($webhook_url) { | 114 | unless empty($webhook_url) { |
84 | exec { "bot-slack-notify": | 115 | exec { "bot-slack-notify": |
85 | refreshonly => true, | 116 | refreshonly => true, |
diff --git a/modules/role/templates/cryptoportfolio/bot_config_hourly.ini.erb b/modules/role/templates/cryptoportfolio/bot_config_hourly.ini.erb new file mode 100644 index 0000000..067f12a --- /dev/null +++ b/modules/role/templates/cryptoportfolio/bot_config_hourly.ini.erb | |||
@@ -0,0 +1,17 @@ | |||
1 | [postgresql] | ||
2 | db-host = <%= @pg_hostname %> | ||
3 | db-port = <%= @pg_port %> | ||
4 | db-user = <%= @pg_user %> | ||
5 | db-password = <%= @pg_password %> | ||
6 | db-database = <%= @pg_db %> | ||
7 | |||
8 | [redis] | ||
9 | redis-host = <%= @redis_host %> | ||
10 | |||
11 | [app] | ||
12 | action = print_balances | ||
13 | report-redis | ||
14 | no-report-path | ||
15 | no-report-db | ||
16 | quiet | ||
17 | debug | ||