summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2018-10-14 23:35:48 -0400
committerJesse Luehrs <doy@tozt.net>2018-10-14 23:35:48 -0400
commitc667159ff4a6142f320377000e1bbff62f7ad377 (patch)
treea32c52ff1a88785b45f7e0f6c1e284e13a9c689b
parent384f54c0136c4fae0630ac3718b45362d0ad9fd2 (diff)
downloadpuppet-tozt-c667159ff4a6142f320377000e1bbff62f7ad377.tar.gz
puppet-tozt-c667159ff4a6142f320377000e1bbff62f7ad377.zip
keep cargo/rust data on persistent storage
to avoid having to recompile cargo stuff on every rebuild
-rw-r--r--modules/package/manifests/cargo.pp12
-rw-r--r--modules/rust/manifests/user.pp11
-rw-r--r--modules/tozt/manifests/persistent.pp2
-rw-r--r--modules/tozt/manifests/user.pp28
4 files changed, 51 insertions, 2 deletions
diff --git a/modules/package/manifests/cargo.pp b/modules/package/manifests/cargo.pp
index f24e06c..2f599b9 100644
--- a/modules/package/manifests/cargo.pp
+++ b/modules/package/manifests/cargo.pp
@@ -1,4 +1,12 @@
-define package::cargo($package, $user, $ensure) {
+define package::cargo($package, $user, $ensure, $home=undef) {
+ $_home = $home ? {
+ undef => $user ? {
+ 'root' => '/root',
+ default => "/home/$user",
+ },
+ default => $home,
+ }
+
case $ensure {
'installed': {
exec { "cargo install $package for $user":
@@ -10,6 +18,7 @@ define package::cargo($package, $user, $ensure) {
require => [
User[$user],
Rust::User[$user],
+ File["${_home}/.cargo"],
];
}
}
@@ -22,6 +31,7 @@ define package::cargo($package, $user, $ensure) {
require => [
User[$user],
Rust::User[$user],
+ File["${_home}/.cargo"],
];
}
}
diff --git a/modules/rust/manifests/user.pp b/modules/rust/manifests/user.pp
index e94a5fd..1b16eeb 100644
--- a/modules/rust/manifests/user.pp
+++ b/modules/rust/manifests/user.pp
@@ -1,4 +1,12 @@
-define rust::user($user=$name) {
+define rust::user($user=$name, $home=undef) {
+ $_home = $home ? {
+ undef => $user ? {
+ 'root' => '/root',
+ default => "/home/$user",
+ },
+ default => $home,
+ }
+
include rust
exec { "install and configure stable toolchain for $user":
@@ -9,6 +17,7 @@ define rust::user($user=$name) {
require => [
Package["rustup"],
User[$user],
+ File["${_home}/.rustup"],
],
}
}
diff --git a/modules/tozt/manifests/persistent.pp b/modules/tozt/manifests/persistent.pp
index 219c43a..e9cf69c 100644
--- a/modules/tozt/manifests/persistent.pp
+++ b/modules/tozt/manifests/persistent.pp
@@ -30,6 +30,8 @@ class tozt::persistent {
"/media/persistent/public_html",
"/media/persistent/paste",
"/media/persistent/certbot",
+ "/media/persistent/cargo",
+ "/media/persistent/rustup",
]:
ensure => directory,
require => Exec["mount /media/persistent"];
diff --git a/modules/tozt/manifests/user.pp b/modules/tozt/manifests/user.pp
index 82cf44a..105ae35 100644
--- a/modules/tozt/manifests/user.pp
+++ b/modules/tozt/manifests/user.pp
@@ -49,6 +49,34 @@ define tozt::user(
Group[$group],
File[$_home],
];
+ "/media/persistent/cargo/${user}":
+ ensure => 'directory',
+ owner => $user,
+ group => $group,
+ mode => $homedir_mode,
+ require => [
+ User[$user],
+ Group[$group],
+ File["/media/persistent/cargo"],
+ ];
+ "/media/persistent/rustup/${user}":
+ ensure => 'directory',
+ owner => $user,
+ group => $group,
+ mode => $homedir_mode,
+ require => [
+ User[$user],
+ Group[$group],
+ File["/media/persistent/rustup"],
+ ];
+ "${_home}/.cargo":
+ ensure => link,
+ target => "/media/persistent/cargo/${user}",
+ require => File["${_home}"];
+ "${_home}/.rustup":
+ ensure => link,
+ target => "/media/persistent/rustup/${user}",
+ require => File["${_home}"];
}
rust::user { $user: