In my googling I did not find a simple recipe for how to install and run puppet for the first time (for a pxe / tftpboot / ubuntu / preseed / puppetlabs-repo scenario).
Here's what I tagged onto the bottom on my preseed.cfg script:
in-target /usr/bin/dpkg -i /home/<username>/puppetlabs-release-pc1-xenial.deb;\
in-target /usr/bin/apt-get update;\
in-target /usr/bin/apt-get install -y --allow-unauthenticated puppet-agent;
#in-target /opt/puppetlabs/puppet/bin/puppet resource service puppet ensure=running enable=true; # this line wan't necessary because puppet joined the server and ran for the first time on first boot with no other configuration...if you have autosigning set up.
# This script assumes you have autosigning turned on by putting a single asterisk in this file on the puppet server: /etc/puppetlabs/puppet/autosign.conf
Here's my pxelinux.cfg/default snipit (how the preseed.cfg is called):
LABEL ubuntu-16.04.2 server LTS with preseed
MENU LABEL ubuntu-16.04.2 server LTS with preseed
KERNEL images/ubuntu-16.04.2-server-amd64.iso/linux
APPEND initrd=images/ubuntu-16.04.2-server-amd64.iso/initrd.gz inst.repo=ftp://<ip address>/pub/ubuntu-16.04.2-server-amd64.iso auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity quiet splash noprompt noshell preseed/url=ftp://<ip address>/pub/kickstarter/preseed.cfg ---
# and ftp://<ip address>/pub/ubuntu-16.04.2-server-amd64.iso is a mountpoint to the file of the same name.
# Make sure and change the <username> and <ip address> fields with your own.