Purpose of this documentation 

Is to help systems administrators support and maintain the script for installing the OHIE stack: "How to install DATIM4U OHIE Stack"

General References

http://packaging.ubuntu.com/html/packaging-new-software.html

https://askubuntu.com/questions/164621/how-do-i-add-a-binary-file-to-my-existing-ppa-package

https://askubuntu.com/questions/146343/how-to-create-a-deb-package-that-installs-a-series-of-files

https://askubuntu.com/questions/33413/how-to-create-a-meta-package-that-automatically-installs-other-packages

Preliminary Requirements

  1. Add your `id_rsa.pub` ssh key to launchpad
    1. Navigate to https://launchpad.net/people/+me/+editsshkeys
    2. copy and paste your public key into the prompt
      1. to output your public key into the terminal run the following command:

        cat ~/.ssh/id_rsa.pub

Setup Vagrant

  1. References
    1. https://www.olindata.com/en/blog/2014/07/installing-vagrant-and-virtual-box-ubuntu-1404-lts
  2. Install packages

    sudo apt-get -y install virtualbox vagrant virtualbox-dkms
  3. Install a Vagrant Box

    1. Use hashicorp to find a suitable box to install, like ubuntu/trusty64 at https://atlas.hashicorp.com/ubuntu/boxes/trusty64
      1. note, rest of development we will assume that we are using the ubuntu/trusty64 box from hashicorp
    2. navigate to a directory where you wish to store your vagrant configurations for this setup
      1. e.g., 

        mkdir /var/www/vagrant/ && cd /var/www/vagrant/
    3. download and setup vagrant box: 

      vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
  4. Create relevant provisions and vagrant settings  
    1. Open the Vagrantfile for your vagrant

      nano /var/www/vagrant/Vagrantfile
    2. Insert the following code into the Vagrant file, at the end - but before the `end` command

      1. Don't forget to replace the values for `your_launchpad_name`, `your_launchpad_email`, etc... 
      2.  If the formatting on the code block below breaks, visit https://gist.github.com/uladkasach/81cfe5d3b879882152178f0b5c8a6ec0

          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
                gpg --batch --gen-key .temp_settings_file;
                rm .temp_settings_file;
                echo "##########################";
                echo Packaging environment successfuly provisioned [Success].
            SHELL
          end
    3. Note: if you had run vagrant up before setting these provisions you will need to run vagrant reload --provision to see these changes affect your vagrant.

Add a your vagrant's GPG key to Ubuntu and Launchpad

  1. References
    1. https://help.launchpad.net/YourAccount/ImportingYourPGPKey
  2. Enter your vagrant box
    1. Note, this can take a while if this is the first time this vagrant is run or if your triggering its provisioning manually. 

      vagrant up; vagrant ssh;
  3. Send the vagrant's gpg key to Ubuntu registry

    1. Find all your vagrant's keys with 

      gpg --list- keys 
    2. Find the pub id

      1. if you see an entry that looks like `pub 2048R/523053B5 2017-06-01`, `523053B5` is the pub id

    3. Send the keys

      1. run the following command, replacing the `<pub_key_id>` with the actual value

        gpg --send-keys --keyserver keyserver.ubuntu.com <pub_key_id> 
      2. For example

        gpg --send-keys --keyserver keyserver.ubuntu.com 523053B5
    4. Verify successful transmission

      1. The response key sending input should look like the following

        gpg: sending key <pub_key_id> to hkp server keyserver.ubuntu.com
      2. You can double check that the transaction went through successfuly with the following command

        gpg --keyserver hkp://keyserver.ubuntu.com --search-key 'your@email.com'
        1. https://askubuntu.com/questions/29889/how-do-i-check-if-my-openpgp-key-is-in-the-ubuntu-keyserver

  4. Import key into launchpad

    1. navigate to your OpenPGP keys page

    2. get fingerprint of your key gpg 

      gpg --fingerprint
    3. copy paste the key into the launchpad input box, press import key
    4. open email that launchpad sent you
    5. decrypt the email

      1. copy and paste the contents into a new file

        nano email.gpg
      2. decrypt the file with your key

        gpg -d email.gpg
    6. 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. 

  • No labels