The general description of the IPMI jumphost is here. This page describes the riseup specific host and puppet configuration.

Host and switch setup

Same as the general document.

Puppet setup

Create a user for the ipmi in manifests/components/account.pp

    'foo': {
      account { 'foo':
        ensure   => $ensure,
        homeroot => $homeroot,
        shell    => $shell,
        uid      => 2099,
        gid      => 2099,
        password => '!',
        fullname => 'ipmi user',
      }
    }

Setup the ssh keys and restrictions for the new user in files/keys/foo_id_rsa.pub

command="/usr/local/bin/ipmi-wrapper",no-agent-forwarding,no-X11-forwarding,permitopen="foo-ipmi:22",permitopen="foo-ipmi:80",permitopen="foo-ipmi:443",permitopen="foo-ipmi:5900",permitopen="foo-ipmi:623" ssh-rsa AAAAB.... user@host

Add that user to the jump host’s node config in manifests/site.pp

    'jumphost': {
      users { [ 'foo' ]: }
    }

and include the jumphost class with the IP of the ipmi device

    class { 'ipmi::jumphost': host => 'foo', ip => '192.168.99.2' }

In the jump host’s hiera config (modules/site_hiera/files/hieradata/jumphost.yaml) add the needed ssh options

sshd::tail_additional_options: "Match User foo\n
AllowTcpForwarding yes"