summaryrefslogtreecommitdiff
path: root/grid5000/steps/data/setup/puppet/modules/env/manifests/std
diff options
context:
space:
mode:
Diffstat (limited to 'grid5000/steps/data/setup/puppet/modules/env/manifests/std')
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp16
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp33
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp33
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp32
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp247
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp39
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp120
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp16
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp19
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp26
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp35
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp9
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp38
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp27
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp11
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp29
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp18
-rw-r--r--grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp21
18 files changed, 769 insertions, 0 deletions
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp
new file mode 100644
index 0000000..ef7ec33
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/add_g5kcode_to_path.pp
@@ -0,0 +1,16 @@
+class env::std::add_g5kcode_to_path {
+
+ file {
+ '/root/.ssh':
+ ensure => directory,
+ owner => root,
+ group => root,
+ mode => '0700';
+ }
+
+ # Sounds dirty as fuck, but Augeas does not manage /etc/profile which is a bash file, and not a real configuration file (or I'm really bad with Augeas).
+ file_line { 'g5kcode_etc_profile_path':
+ path => '/etc/profile',
+ line => 'export PATH=$PATH:/grid5000/code/bin';
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp
new file mode 100644
index 0000000..9ec247b
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kdiskmanagerbackend.pp
@@ -0,0 +1,33 @@
+class env::std::configure_g5kdiskmanagerbackend {
+
+ require env::std::install_hwraid_apt_source
+ require env::std::configure_g5kmanager
+
+ case $operatingsystem {
+ 'Debian': {
+ case "${::lsbdistcodename}" {
+ "stretch", "buster", "bullseye" : {
+ file {
+ '/etc/systemd/system/g5k-disk-manager-backend.service':
+ source => 'puppet:///modules/env/std/g5k-manager/g5k-disk-manager-backend.service',
+ ensure => file;
+ '/usr/local/libexec/g5k-disk-manager-backend':
+ source => 'puppet:///modules/env/std/g5k-manager/g5k-disk-manager-backend',
+ mode => '0755',
+ ensure => file;
+ '/etc/systemd/system/multi-user.target.wants/g5k-disk-manager-backend.service':
+ ensure => link,
+ target => '/etc/systemd/system/g5k-disk-manager-backend.service';
+ }
+ }
+ default : {
+ err "${::lsbdistcodename} not supported."
+ }
+ }
+ }
+ default : {
+ err "${operatingsystem} not supported."
+ }
+ }
+}
+
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp
new file mode 100644
index 0000000..d6740f5
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kmanager.pp
@@ -0,0 +1,33 @@
+class env::std::configure_g5kmanager {
+ case $operatingsystem {
+ 'Debian': {
+ case "${::lsbdistcodename}" {
+ "stretch", "buster", "bullseye" : {
+ file {
+ '/usr/local/libexec/':
+ ensure => directory,
+ mode => '0755',
+ owner => 'root',
+ group => 'root';
+ '/usr/local/lib/g5k/':
+ ensure => directory,
+ mode => '0755',
+ owner => 'root',
+ group => 'root';
+ '/usr/local/lib/g5k/g5k-manager.rb':
+ source => 'puppet:///modules/env/std/g5k-manager/lib/g5k-manager.rb',
+ mode => '0755',
+ ensure => file;
+ }
+ }
+ default : {
+ err "${::lsbdistcodename} not supported."
+ }
+ }
+ }
+ default : {
+ err "${operatingsystem} not supported."
+ }
+ }
+}
+
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp
new file mode 100644
index 0000000..bde3f08
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_g5kpmemmanager.pp
@@ -0,0 +1,32 @@
+class env::std::configure_g5kpmemmanager {
+
+ require env::std::configure_g5kmanager
+
+ case $operatingsystem {
+ 'Debian': {
+ case "${::lsbdistcodename}" {
+ "buster", "bullseye" : {
+ file {
+ '/etc/systemd/system/g5k-pmem-manager.service':
+ source => 'puppet:///modules/env/std/g5k-manager/g5k-pmem-manager.service',
+ ensure => file;
+ '/usr/local/libexec/g5k-pmem-manager':
+ source => 'puppet:///modules/env/std/g5k-manager/g5k-pmem-manager',
+ mode => '0755',
+ ensure => file;
+ '/etc/systemd/system/multi-user.target.wants/g5k-pmem-manager.service':
+ ensure => link,
+ target => '/etc/systemd/system/g5k-pmem-manager.service';
+ }
+ }
+ default : {
+ err "${::lsbdistcodename} not supported."
+ }
+ }
+ }
+ default : {
+ err "${operatingsystem} not supported."
+ }
+ }
+}
+
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
new file mode 100644
index 0000000..d73964d
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_oar_client.pp
@@ -0,0 +1,247 @@
+class env::std::configure_oar_client {
+
+ $oar_packages = ['oar-common', 'oar-node']
+
+ if "$operatingsystem" == "Debian" {
+ # Can specify oar client version below
+ case "${::lsbdistcodename}" {
+ 'stretch' : {
+ $oar_version = "2.5.8~rc8-1~bpo9+1";
+ $oar_repos = "2.5/debian/";
+ $oar_repos_release = "stretch-backports_beta"
+ }
+ 'buster' : {
+ $oar_version = "2.5.10~g5k8-1";
+ $oar_repos = "g5k"
+ }
+ 'bullseye' : {
+ $oar_version = "2.5.10~g5k8-1";
+ $oar_repos = "g5k"
+ }
+ default : {
+ err "${::lsbdistcodename} not supported."
+ }
+ }
+ }
+
+ if ($oar_repos == "default") {
+ package {
+ 'oar-common':
+ ensure => $oar_version,
+ require => Package["liboar-perl"];
+ 'oar-node':
+ ensure => $oar_version,
+ require => Package["liboar-perl"];
+ 'liboar-perl':
+ ensure => $oar_version;
+ }
+ } elsif ($oar_repos == "g5k") {
+ env::common::g5kpackages {
+ "oar/${::lsbdistcodename}":
+ source_filename => 'oar',
+ packages => ['liboar-perl', 'oar-common', 'oar-node'],
+ ensure => $oar_version
+ }
+ } else {
+ apt::source {
+ 'oar-repo':
+ location => "http://oar-ftp.imag.fr/oar/$oar_repos",
+ release => "$oar_repos_release",
+ repos => 'main',
+ notify => Exec['oar apt update'],
+ require => Exec["import oar gpg key"],
+ }
+ exec {
+ "import oar gpg key":
+ command => "/usr/bin/wget -q http://oar-ftp.imag.fr/oar/oarmaster.asc -O- | /usr/bin/apt-key add -",
+ unless => "/usr/bin/apt-key list | /bin/grep oar",
+ }
+ exec {
+ "oar apt update":
+ command => "/usr/bin/apt-get update",
+ }
+ package {
+ 'oar-common':
+ ensure => $oar_version,
+ install_options => ['-t', "$oar_repos_release"],
+ require => [ Package["liboar-perl"], Apt::Source['oar-repo'] ];
+ 'oar-node':
+ ensure => $oar_version,
+ install_options => ['-t', "$oar_repos_release"],
+ require => [ Package["liboar-perl"], Apt::Source['oar-repo'] ];
+ 'liboar-perl':
+ ensure => $oar_version,
+ install_options => ['-t', "$oar_repos_release"],
+ require => Apt::Source['oar-repo'];
+ }
+ }
+
+ if ($oar_version != "installed") {
+ apt::pin { 'oar client pin':
+ packages => [ 'oar-common', 'oar-node', 'liboar-perl' ],
+ version => $oar_version,
+ priority => 1001,
+ }
+ }
+
+ $hiera = lookup("env::std::oar::ssh")
+ file {
+ '/var/lib/oar/checklogs/':
+ ensure => directory,
+ owner => root,
+ group => root,
+ mode => '0755',
+ require => Package[$oar_packages];
+ '/var/lib/oar/.ssh':
+ ensure => directory,
+ owner => oar,
+ group => oar,
+ mode => '0755',
+ require => Package[$oar_packages];
+ '/var/lib/oar/.ssh/config':
+ ensure => present,
+ owner => oar,
+ group => oar,
+ mode => '0644',
+ source => 'puppet:///modules/env/std/oar/oar_sshclient_config',
+ require => [ File['/var/lib/oar/.ssh'], Package[$oar_packages] ];
+ '/etc/oar/oar_ssh_host_dsa_key':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0600',
+ content => $hiera['oar_ssh_host_dsa_key'],
+ require => Package[$oar_packages];
+ '/etc/oar/oar_ssh_host_rsa_key':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0600',
+ content => $hiera['oar_ssh_host_rsa_key'],
+ require => Package[$oar_packages];
+ '/etc/oar/oar_ssh_host_dsa_key.pub':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0600',
+ content => $hiera['oar_ssh_host_dsa_key_pub'],
+ require => Package[$oar_packages];
+ '/etc/oar/oar_ssh_host_rsa_key.pub':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0600',
+ content => $hiera['oar_ssh_host_rsa_key_pub'],
+ require => Package[$oar_packages];
+ '/var/lib/oar/.batch_job_bashrc':
+ ensure => present,
+ owner => oar,
+ group => oar,
+ mode => '0755',
+ source => 'puppet:///modules/env/std/oar/batch_job_bashrc',
+ require => Package[$oar_packages];
+ '/etc/security/access.conf':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ source => 'puppet:///modules/env/std/oar/etc/security/access.conf',
+ require => Package[$oar_packages];
+ '/var/lib/oar/access.conf':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ source => 'puppet:///modules/env/std/oar/var/lib/oar/access.conf',
+ require => Package[$oar_packages];
+ '/etc/oar/sshd_config':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ source => '/etc/ssh/sshd_config',
+ require => Package[$oar_packages, 'ssh server'];
+ '/var/lib/oar/.ssh/authorized_keys':
+ ensure => present,
+ owner => oar,
+ group => oar,
+ mode => '0644',
+ content => $hiera['oar_authorized_keys'],
+ require => Package[$oar_packages];
+ '/etc/default/oar-node':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ source => 'puppet:///modules/env/std/oar/default_oar-node',
+ require => Package[$oar_packages];
+ }
+
+ augeas {
+ 'sshd_config_oar':
+ incl => '/etc/oar/sshd_config',
+ lens => 'Sshd.lns',
+ changes => [
+ 'set /files/etc/oar/sshd_config/Port 6667',
+ 'set /files/etc/oar/sshd_config/HostKey /etc/oar/oar_ssh_host_rsa_key',
+ 'set /files/etc/oar/sshd_config/LoginGraceTime 10m',
+ 'set /files/etc/oar/sshd_config/PermitRootLogin no',
+ 'set /files/etc/oar/sshd_config/PasswordAuthentication no',
+ 'set /files/etc/oar/sshd_config/ChallengeResponseAuthentication no',
+ 'set /files/etc/oar/sshd_config/UsePAM yes',
+ 'set /files/etc/oar/sshd_config/X11Forwarding yes',
+ 'set /files/etc/oar/sshd_config/PrintMotd no',
+ 'set /files/etc/oar/sshd_config/PermitUserEnvironment yes',
+ 'set /files/etc/oar/sshd_config/MaxStartups 500',
+ 'set /files/etc/oar/sshd_config/AcceptEnv/1 LANG',
+ 'set /files/etc/oar/sshd_config/AcceptEnv/2 LC_*',
+ 'set /files/etc/oar/sshd_config/AcceptEnv/3 OAR_CPUSET',
+ 'set /files/etc/oar/sshd_config/AcceptEnv/4 OAR_USER_CPUSET',
+ 'set /files/etc/oar/sshd_config/AcceptEnv/5 OAR_USER_GPUDEVICE',
+ 'set /files/etc/oar/sshd_config/AcceptEnv/6 OAR_JOB_USER',
+ 'set /files/etc/oar/sshd_config/Subsystem/sftp /usr/lib/openssh/sftp-server',
+ 'set /files/etc/oar/sshd_config/AllowUsers/1 oar'
+ ],
+ require => File['/etc/oar/sshd_config'];
+ }
+
+ file_line { 'oar_conf':
+ ensure => present,
+ match => "^(#)?COMPUTE_THREAD_SIBLINGS=*",
+ path => '/etc/oar/oar.conf',
+ line => 'COMPUTE_THREAD_SIBLINGS="yes"',
+ replace => true,
+ require => Package[$oar_packages];
+ }
+
+ if $env::target_g5k {
+ $key_values = lookup("env::std::oar::ssh")
+
+ file {
+ "/var/lib/oar/.ssh/oarnodesetting_ssh.key":
+ ensure => file,
+ owner => oar,
+ group => oar,
+ mode => '0600',
+ content => $key_values['oarnodesetting_ssh_key'];
+ "/var/lib/oar/.ssh/oarnodesetting_ssh.key.pub":
+ ensure => file,
+ owner => oar,
+ group => oar,
+ mode => '0644',
+ content => $key_values['oarnodesetting_ssh_key_pub'];
+ "/var/lib/oar/.ssh/id_rsa":
+ ensure => file,
+ owner => oar,
+ group => oar,
+ mode => '0600',
+ content => $key_values['id_rsa'];
+ "/var/lib/oar/.ssh/id_rsa.pub":
+ ensure => file,
+ owner => oar,
+ group => oar,
+ mode => '0644',
+ content => $key_values['id_rsa_pub'];
+ }
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp
new file mode 100644
index 0000000..57e084d
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/configure_rsyslog_remote.pp
@@ -0,0 +1,39 @@
+class env::std::configure_rsyslog_remote {
+
+ require env::commonpackages::rsyslog
+
+ file {
+ "/etc/rsyslog.conf":
+ mode => '0600',
+ owner => root,
+ group => root,
+ source => "puppet:///modules/env/std/net_access/rsyslog.conf";
+ "/etc/rsyslog.d/syslog_iptables.conf":
+ mode => '0655',
+ owner => root,
+ group => root,
+ source => "puppet:///modules/env/std/net_access/syslog_iptables.conf";
+ }
+
+ # Stretch has an old iptables version that does not support hashlimit-rate-match
+ if "${::lsbdistcodename}" == "stretch" {
+ # iptables installed by kameleon.
+ file {
+ "/etc/network/if-pre-up.d/iptables":
+ mode => '0755',
+ owner => root,
+ group => root,
+ source => "puppet:///modules/env/std/net_access/iptables.stretch"
+ }
+ } else {
+ # iptables installed by kameleon.
+ file {
+ "/etc/network/if-pre-up.d/iptables":
+ mode => '0755',
+ owner => root,
+ group => root,
+ source => "puppet:///modules/env/std/net_access/iptables"
+ }
+ }
+}
+
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp
new file mode 100644
index 0000000..e131e3b
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell.pp
@@ -0,0 +1,120 @@
+# Recipe from grid5000-puppet
+# Don't forget to update both repositories when modifying something
+#
+
+class { 'apt':
+ update => {
+ timeout => 1000
+ }
+}
+
+class env::std::dell (
+ Array $packages_names = $env::std::dell::params::packages_names,
+) inherits env::std::dell::params {
+
+ include apt
+
+ $_key = '42550ABD1E80D7C1BC0BAD851285491434D8786F'
+
+ case $::lsbdistcodename {
+ 'stretch', 'buster': {
+ # No official Debian support since buster
+ $_location = "https://linux.dell.com/repo/community/openmanage/910/stretch"
+ $_release = "stretch"
+ $_repos = "main"
+ $_packages_names = $packages_names
+ $service_status = 'service dataeng status'
+ }
+ 'bullseye': {
+ # Ubuntu 20.04 packages
+ $_location = "https://linux.dell.com/repo/community/openmanage/950/focal"
+ $_release = "focal"
+ $_repos = "main"
+ $_packages_names = $packages_names - 'libssl1.0.0'
+ $service_status = 'systemctl status dsm_sa_datamgrd.service dsm_sa_eventmgrd.service'
+ }
+ }
+
+ apt::source {
+ 'dell':
+ comment => 'Dell repository for OpenManage Server Administrator tools',
+ location => $_location,
+ release => $_release,
+ repos => $_repos,
+ key => {
+ 'id' => $_key,
+ 'content' => template('env/std/dell/linux.dell.com.key.erb'),
+ },
+ include => {
+ 'deb' => true,
+ 'src' => false
+ },
+ notify => Exec['apt_update'];
+ }
+
+ package {
+ $_packages_names:
+ ensure => present,
+ require => [
+ Apt::Source['dell'],
+ Exec['apt_update'],
+ ];
+ }
+
+ case $::lsbdistcodename {
+ # OMSA <= 9.1.0
+ 'stretch', 'buster': {
+ service {
+ 'dataeng':
+ enable => true,
+ require => Package[$_packages_names];
+ }
+ }
+ # OMSA >= 9.3.0
+ 'bullseye': {
+ service {
+ 'dsm_sa_datamgrd':
+ enable => true,
+ require => Package[$_packages_names];
+ }
+ service {
+ 'dsm_sa_eventmgrd.service':
+ enable => true,
+ require => Package[$_packages_names];
+ }
+ }
+ }
+
+ if ($::lsbdistcodename == 'buster') or ($::lsbdistcodename == 'bullseye') {
+ # Using enable => false doesn't seem to work, maybe because openipmi use systemd-sysv-generator
+ exec {
+ 'disable openipmi service':
+ command => "/lib/systemd/systemd-sysv-install disable openipmi",
+ require => Package[$packages, 'ipmitool'];
+ }
+ }
+
+ if ($::lsbdistcodename == 'bullseye') {
+ # Fix bug 12930
+ exec {
+ 'disable NVMe devices support':
+ command => "/bin/sed -i 's/^vil7=dsm_sm_psrvil/; vil7=dsm_sm_psrvil/' /opt/dell/srvadmin/etc/srvadmin-storage/stsvc.ini",
+ require => Package[$_packages_names];
+ }
+ }
+
+ if ($::lsbdistcodename == 'buster') {
+ # Fix bug 8048 and 8975
+ file {
+ '/etc/systemd/system/dataeng.service.d':
+ ensure => 'directory',
+ require => Package[$packages];
+ '/etc/systemd/system/dataeng.service.d/stop.conf':
+ ensure => 'file',
+ content => "[Service]\nExecStop=\nKillMode=control-group\nKillSignal=9",
+ require => Package[$packages];
+ }
+ File['/etc/systemd/system/dataeng.service.d']
+ ->File['/etc/systemd/system/dataeng.service.d/stop.conf']
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp
new file mode 100644
index 0000000..e6d3665
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/dell/params.pp
@@ -0,0 +1,16 @@
+# Recipe from grid5000-puppet, keep synchronized!
+#
+
+class env::std::dell::params {
+
+ $packages_names = [
+ 'srvadmin-base',
+ "srvadmin-idracadm7",
+ "srvadmin-idracadm8",
+ 'srvadmin-storageservices',
+ 'srvadmin-omcommon',
+ 'libncurses5',
+ 'libxslt1.1',
+ 'libssl1.0.0',
+ ]
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp
new file mode 100644
index 0000000..908d323
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/disable_lvm_pvscan.pp
@@ -0,0 +1,19 @@
+class env::std::disable_lvm_pvscan {
+
+ # Disable LVM2 pvscan on std environment to avoid issues with disk reservation (see bug 9453)
+ package {'lvm2':
+ ensure => installed;
+ }
+
+ file {
+ "/etc/lvm/lvm.conf":
+ mode => '0644',
+ owner => root,
+ group => root,
+ source => "puppet:///modules/env/std/lvm/lvm.conf",
+ require => Package['lvm2'],
+ notify => Exec['generate_initramfs'];
+
+ }
+}
+
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp
new file mode 100644
index 0000000..c03fc8b
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/g5k_generator.pp
@@ -0,0 +1,26 @@
+class env::std::g5k_generator {
+
+ case $operatingsystem {
+ 'Debian','Ubuntu': {
+
+ #smbios-utils package for binary tool smbios-sys-info-lite
+ package {
+ 'smbios-utils':
+ ensure => 'installed'
+ }
+
+ file {
+ '/lib/systemd/system-generators/g5k-generator':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0755',
+ source => 'puppet:///modules/env/std/g5k_generator/g5k_generator',
+ require => Package['smbios-utils']
+ }
+ }
+ default: {
+ err "${operatingsystem} not supported."
+ }
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
new file mode 100644
index 0000000..871045f
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5kchecks.pp
@@ -0,0 +1,35 @@
+class env::std::install_g5kchecks {
+
+ include 'env::std::ipmitool' # ipmitool is required by g5k-checks
+ if $env::deb_arch == 'amd64' {
+ include 'env::std::dell' # dell tools are required by g5k-checks
+ }
+
+ case $operatingsystem {
+
+ 'Debian','Ubuntu': {
+
+ require env::commonpackages::rake
+ require env::commonpackages::rubyrspec
+
+ env::common::g5kpackages {
+ 'g5k-checks':
+ ensure => $::env::common::software_versions::g5k_checks,
+ release => "${::lsbdistcodename}";
+ }
+
+ file {
+ '/etc/g5k-checks.conf':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ source => "puppet:///modules/env/std/g5kchecks/g5k-checks.conf",
+ require => Package["g5k-checks"];
+ }
+ }
+ default: {
+ err "${operatingsystem} not supported."
+ }
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp
new file mode 100644
index 0000000..0d894ba
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_g5ksubnets.pp
@@ -0,0 +1,9 @@
+class env::std::install_g5ksubnets {
+
+ include env::common::software_versions
+
+ env::common::g5kpackages {
+ 'g5k-subnets':
+ ensure => $::env::common::software_versions::g5k_subnets;
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp
new file mode 100644
index 0000000..1194f73
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_hwraid_apt_source.pp
@@ -0,0 +1,38 @@
+class env::std::install_hwraid_apt_source {
+
+ include apt
+
+ # FIXME remove when HWRAID bullseye repository
+ if "${::lsbdistcodename}" == "bullseye" {
+ apt::source { 'hwraid.le-vert.net':
+ key => {
+ 'id' => '0073C11919A641464163F7116005210E23B3D3B4',
+ 'content' => template('env/std/hwraid/hwraid.le-vert.net.key.erb'),
+ },
+ comment => 'Repo for megacli package',
+ location => 'http://hwraid.le-vert.net/debian',
+ release => "buster",
+ repos => 'main',
+ include => {
+ 'deb' => true,
+ 'src' => false
+ }
+ }
+
+ } else {
+ apt::source { 'hwraid.le-vert.net':
+ key => {
+ 'id' => '0073C11919A641464163F7116005210E23B3D3B4',
+ 'content' => template('env/std/hwraid/hwraid.le-vert.net.key.erb'),
+ },
+ comment => 'Repo for megacli package',
+ location => 'http://hwraid.le-vert.net/debian',
+ release => "${::lsbdistcodename}",
+ repos => 'main',
+ include => {
+ 'deb' => true,
+ 'src' => false
+ }
+ }
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp
new file mode 100644
index 0000000..719d060
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_libguestfs_backport.pp
@@ -0,0 +1,27 @@
+class env::std::install_libguestfs_backport {
+
+ case $lsbdistcodename {
+ 'buster': {
+ if $env::deb_arch == 'arm64' {
+ env::common::g5kpackages {
+ 'libguestfs-backport':
+ packages => 'libguestfs-tools',
+ ensure => $::env::common::software_versions::libguestfs_backport_arm64;
+ }
+ }
+ elsif $env::deb_arch == 'ppc64el' {
+ env::common::g5kpackages {
+ 'libguestfs-backport':
+ packages => 'libguestfs-tools',
+ ensure => $::env::common::software_versions::libguestfs_backport_ppc64el;
+ }
+ }
+ else {
+ err "${env::deb_arch} not supported"
+ }
+ }
+ default: {
+ err "${lsbdistcodename} not supported."
+ }
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp
new file mode 100644
index 0000000..1bd4d87
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_megacli.pp
@@ -0,0 +1,11 @@
+class env::std::install_megacli {
+
+ require env::std::install_hwraid_apt_source
+
+ package {
+ 'megacli':
+ ensure => installed,
+ require => [Apt::Source['hwraid.le-vert.net'], Exec['apt_update']]
+ }
+
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp
new file mode 100644
index 0000000..fb0e4a6
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/install_sudog5k.pp
@@ -0,0 +1,29 @@
+class env::std::install_sudog5k {
+
+ case $operatingsystem {
+ 'Debian': {
+ require env::commonpackages::rake
+ require env::commonpackages::rubyrspec
+ require env::commonpackages::rsyslog
+
+ env::common::g5kpackages {
+ 'sudo-g5k':
+ ensure => $::env::common::software_versions::sudo_g5k;
+ }
+
+ }
+ default: {
+ err "${operatingsystem} not suported."
+ }
+ }
+
+ file {
+ '/etc/sudo-g5k/id_rsa_sudo-g5k':
+ ensure => file,
+ owner => root,
+ group => root,
+ mode => '0600',
+ source => 'puppet:///modules/env/std/sudo-g5k/id_rsa_sudo-g5k',
+ require => Package['sudo-g5k'];
+ }
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp
new file mode 100644
index 0000000..fed7222
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/ipmitool.pp
@@ -0,0 +1,18 @@
+class env::std::ipmitool {
+
+ package { 'ipmitool':
+ ensure => 'installed'
+ }
+
+ augeas {
+ 'module_ipmi_si':
+ context => "/files/etc/modules",
+ changes => ["ins ipmi_si after #comment[last()]",],
+ onlyif => "match ipmi_si size == 0 ";
+ 'module_ipmi_devintf':
+ context => "/files/etc/modules",
+ changes => ["ins ipmi_devintf after #comment[last()]",],
+ onlyif => "match ipmi_devintf size == 0 ";
+ }
+
+}
diff --git a/grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp
new file mode 100644
index 0000000..c9285ae
--- /dev/null
+++ b/grid5000/steps/data/setup/puppet/modules/env/manifests/std/nvidia_reset_mig.pp
@@ -0,0 +1,21 @@
+class env::std::nvidia_reset_mig () {
+
+ file{
+ '/usr/local/bin/nvidia-reset-mig':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0755',
+ source => 'puppet:///modules/env/std/nvidia_configure/nvidia-reset-mig';
+ '/etc/systemd/system/nvidia-reset-mig.service':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ source => 'puppet:///modules/env/std/nvidia_configure/nvidia-reset-mig.service';
+ '/etc/systemd/system/multi-user.target.wants/nvidia-reset-mig.service':
+ ensure => link,
+ target => '/etc/systemd/system/nvidia-reset-mig.service';
+
+ }
+}