Getting puppet installed is often very particular to your OS/distro and implementation details. As a general rule, I make sure to install it during my provisioning process.
As for updates, I highly recommend the puppet_agent module,
https://forge.puppet.com/puppetlabs/puppet_agent, which allows you to update some or all of your agents to new versions. It was designed to assist with Puppet 3->4 migrations, which was fairly complicated, but it also works for upgrading from 4->5 or within the same major version.