One minor issue in your get_user_data.py, it looks like the chpasswd
invocation will not work properly if the root password is encrypted in
the kickstart (which it normally is). Pykickstart can probably tell you
if --crypted was in the kickstart and if so just pass -e to chpasswd to
tell it the password is already encrypted.
Also, it would probably be more efficient to install all packages in
a single yum transaction instead of emitting a separate yum install
command for each line in %packages.
Above issue is addressed in this commit.
https://github.com/matt8754/beaker-cloud-init/commit/6a94b8a609f7907ebb64...
Cheers, Matt Jia