...
Preliminary Requirements
- Add your `id_rsa.pub` ssh key to launchpad
- Navigate to https://launchpad.net/people/+me/+editsshkeys
- copy and paste your public key into the prompt
to output your public key into the terminal run the following command:
Code Block cat ~/.ssh/id_rsa.pub
...
Setup Vagrant
- References
Install packages
Code Block sudo apt-get -y install virtualbox vagrant virtualbox-dkms
Install a Vagrant Box
- Use hashicorp to find a suitable box to install, like ubuntu/trusty64 at https://atlas.hashicorp.com/ubuntu/boxes/trusty64
- note, rest of development we will assume that we are using the ubuntu/trusty64 box from hashicorp
- navigate to a directory where you wish to store your vagrant configurations for this setup
e.g.,
Code Block mkdir /var/www/vagrant/ && cd /var/www/vagrant/
download and setup vagrant box:
Code Block vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
- Use hashicorp to find a suitable box to install, like ubuntu/trusty64 at https://atlas.hashicorp.com/ubuntu/boxes/trusty64
- Create relevant provisions and vagrant settings
Open the Vagrantfile for your vagrant
Code Block nano /var/www/vagrant/Vagrantfile
Insert the following code into the Vagrant file, at the end - but before the `end` command
- Don't forget to replace the values for `your_launchpad_name`, `your_launchpad_email`, etc...
If the formatting on the code block below breaks, visit https://gist.github.com/uladkasach/81cfe5d3b879882152178f0b5c8a6ec0
Code Block This process will take a /while/ to run you provision your vagrant, especially the first time.
Code Block config.ssh.forward_agent = true; config.vm.provision "shell" do |s| your_launchpad_name = "Launchpad Name"; your_launchpad_email = "launchpademail@provider.com"; your_launchpad_username = "launchpadusername"; your_gpg_password = "a_gpg_password"; your_git_email = "yourgitemail@provider.com"; your_git_username = "gitusername"; s.inline = <<-SHELL echo "##########################"; echo Beginning provisioning of packaging environment setup.; echo "##########################"; echo For launchpad: echo Using #{your_launchpad_name} as your name, echo Using #{your_launchpad_email} as your email, echo Using #{your_launchpad_username} as your username... echo For git: echo Using #{your_launchpad_email} as your email, echo Using #{your_launchpad_username} as your username... echo "##########################"; echo Updating and Upgrading echo "##########################"; sudo apt-get update && sudo apt-get -y upgrade; echo "##########################"; echo Installing package building packages...; echo "##########################"; sudo apt-get -y install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file; sudo apt-get -y install packaging-dev; # Install packaging package echo This next part may take a little while...; pbuilder-dist trusty create; echo "##########################"; echo Configuring Bazaar...; echo "##########################"; bzr whoami "#{your_launchpad_name} <#{your_launchpad_email}>"; bzr launchpad-login #{your_launchpad_username}; echo "##########################"; echo Configuring Git...; echo "##########################"; git config --global user.email "#{your_git_email}" git config --global user.name "#{your_git_username}" git config --global push.default simple echo "##########################"; echo Assigning your DEBFULLNAME and DEBEMAIL; echo "##########################"; echo $'export DEBFULLNAME="#{your_launchpad_name}"\nexport DEBEMAIL="#{your_launchpad_email}"' >> ~/.bashrc; source ~/.bashrc; echo "##########################"; echo Creating your vagrants GPG key; echo "##########################"; sudo apt-get install rng-tools; cat > .temp_settings_file <<-SETTINGS %echo Generating a basic OpenPGP key... Key-Type: RSA Key-Length: 2048 Subkey-Type: RSA Subkey-Length: 2048 Name-Real: #{your_launchpad_name} Name-Email: #{your_launchpad_email} Expire-Date: 0 Passphrase: #{your_gpg_password} %commit %echo OpenPGP key created successfully. SETTINGS SETTINGS gpg --batch --gen-key .temp_settings_file; rm .temp_settings_file; echo "##########################"; echo Packaging environment successfuly provisioned [Success]. SHELL end
- Note: if you had run
vagrant up
before setting these provisions you will need to runvagrant reload --provision
to see these changes affect your vagrant.
Congradulations
...
Add a your vagrant's GPG key to Ubuntu and Launchpad
- References
- Enter your vagrant box
Note, this can take a while if this is the first time this vagrant is run or if your triggering its provisioning manually.
Code Block vagrant up; vagrant ssh;
Send the vagrant's gpg key to Ubuntu registry
Find all your vagrant's keys with
Code Block gpg --list- keys
Find the pub id
if you see an entry that looks like `pub 2048R/523053B5 2017-06-01`, `523053B5` is the pub id
Send the keys
run the following command, replacing the `<pub_key_id>` with the actual value
Code Block gpg --send-keys --keyserver keyserver.ubuntu.com <pub_key_id>
For example
Code Block gpg --send-keys --keyserver keyserver.ubuntu.com 523053B5
Verify successful transmission
The response key sending input should look like the following
Code Block gpg: sending key <pub_key_id> to hkp server keyserver.ubuntu.com
You can double check that the transaction went through successfuly with the following command
Code Block gpg --keyserver hkp://keyserver.ubuntu.com --search-key 'your@email.com'
Import key into launchpad
navigate to your OpenPGP keys page
get fingerprint of your key
gpg
Code Block gpg --fingerprint
- copy paste the key into the launchpad input box, press import key
- open email that launchpad sent you
decrypt the email
copy and paste the contents into a new file
Code Block nano email.gpg
decrypt the file with your key
Code Block gpg -d email.gpg
open the link contained in the decrypted email and confirm your key by pressing
continue
Congratulations
You're all done. You've successfully set up your packaging environment. See the packaging page for details.
You're all done.