For a particular service, users are added/removed via web to a mySQL table. I need to replicate those users on several ubuntu servers (as regular shell users), preferably through Puppet. Currently I would use a shell script to read the table and create a users.pp manifest (but it gets tricky to deal with removed users). Is there a more efficient way?
Yes, agreed that you should be using LDAP instead of this. However, if you really want to use MySQL data to drive local user creation (which is not a great idea...)
Use the MySQL Hiera backend: https://github.com/crayfishx/hiera-mysql