Create a Self-Registering Relay with Chef
While our Nodes Guide walks you through setting up an individual relay, you might want to have a self-managed set of relays/gateways that will spin up and down without you needing to generate a token for each one. This Chef recipe will walk you through generating a reusable admin token, which you can reuse, that brings up its own relay or gateway token to register itself to your StrongDM organization.
Generating the Token
You can generate an admin token that has only one function: creating relay/gateway tokens. Do this in the Admin UI under Settings / Admin Tokens. Select Create under Relays then click the Create button. Copy the token that is printed to screen as you will need it later, and you cannot get it back.
Create the Recipe
The recipe requires a folder structure like this:
strong-dm
├── recipes
│ └── default.rb
└── templates
└── default
└── init.sh.erbThere are two files in there, which we'll look at in turn.
default.rb
template '/usr/local/bin/sdm-init.sh' do
source 'init.sh.erb'
variables(
myip: node['ec2']['local_ipv4'],
admin_token: Chef::EncryptedDataBagItem.load('strongdm', 'admin-token')['content']
)
mode '0500'
owner 'ubuntu'
notifies :run, 'execute[sdm-init]', :immediately
action :create_if_missing
end
execute 'sdm-init' do
command '/usr/local/bin/sdm-init.sh'
action :nothing
endNote here that you'll need to have the admin token generated above located in a Chef encrypted data bag.
init.sh.erb
Of note here:
Set the correct unprivileged user under
SUDO_USERandSUDO_UIDSet the correct port for the gateway to listen on under
SDM_RELAY_TOKEN.You can optionally name the relay/gateway by adding the
--name <name>flag to thesdm relaycommand.If your organization uses a control plane located in a region other than the default, add a
--region yourdomainflag to the install commands, such as:
Verify Your New Node
Log into the Admin UI. In that section, the relay or gateway you created should appear with the online status and a heartbeat.
Last updated
Was this helpful?

