Skip to content

Instantly share code, notes, and snippets.

@atomic-penguin
Created February 4, 2014 04:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atomic-penguin/8798328 to your computer and use it in GitHub Desktop.
Save atomic-penguin/8798328 to your computer and use it in GitHub Desktop.
Generate deploy key for Jenkins with Chef and sshkey gem.
# Install sshkey gem into chef
chef_gem 'sshkey'
# Base location of ssh key
pkey = node['jenkins']['master']['home'] + '/.ssh/id_rsa'
# Generate a keypair with Ruby
require 'sshkey'
sshkey = SSHKey.generate(
type: 'RSA',
comment: "#{node['jenkins']['master']['user']}@#{node['jenkins']['master']['host']}"
)
# Create ~/.ssh directory
directory "#{node['jenkins']['master']['home']}/.ssh" do
owner node['jenkins']['master']['user']
group node['jenkins']['master']['group']
mode 00700
end
# Store private key on disk
template pkey do
owner node['jenkins']['master']['user']
group node['jenkins']['master']['group']
variables(ssh_private_key: sshkey.private_key)
mode 00600
action :create_if_missing
end
# Store public key on disk
template "#{pkey}.pub" do
owner node['jenkins']['master']['user']
group node['jenkins']['master']['group']
variables(ssh_public_key: sshkey.ssh_public_key)
mode 00644
action :create_if_missing
end
# Save public key
ruby_block 'node-save-pubkey' do
block do
node.set_unless['mu_jenkins_pubkey'] = File.read("#{pkey}.pub")
node.save unless Chef::Config['solo']
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment