diff options
author | Jesse Luehrs <doy@tozt.net> | 2018-10-14 23:35:48 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2018-10-14 23:35:48 -0400 |
commit | c667159ff4a6142f320377000e1bbff62f7ad377 (patch) | |
tree | a32c52ff1a88785b45f7e0f6c1e284e13a9c689b | |
parent | 384f54c0136c4fae0630ac3718b45362d0ad9fd2 (diff) | |
download | puppet-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.pp | 12 | ||||
-rw-r--r-- | modules/rust/manifests/user.pp | 11 | ||||
-rw-r--r-- | modules/tozt/manifests/persistent.pp | 2 | ||||
-rw-r--r-- | modules/tozt/manifests/user.pp | 28 |
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: |