aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--modules/profile/files/redis/socket_shutdown_override.conf3
-rw-r--r--modules/profile/manifests/redis.pp34
m---------modules/redis0
-rw-r--r--modules/role/manifests/cryptoportfolio.pp4
-rw-r--r--modules/role/manifests/cryptoportfolio/bot.pp31
-rw-r--r--modules/role/templates/cryptoportfolio/bot_config_hourly.ini.erb17
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]
2ExecStop=
3ExecStop=/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 @@
1class 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]
2db-host = <%= @pg_hostname %>
3db-port = <%= @pg_port %>
4db-user = <%= @pg_user %>
5db-password = <%= @pg_password %>
6db-database = <%= @pg_db %>
7
8[redis]
9redis-host = <%= @redis_host %>
10
11[app]
12action = print_balances
13report-redis
14no-report-path
15no-report-db
16quiet
17debug