A common example is a LAMP stack (Linux, Apache, MySQL, PHP).
If you want one of those, click on the Puppet tab in Horizon and associate a puppet role with your instance. You can do this for an entire project and all instances in it for all instances starting with a certain prefix or for individual instances.
Find the empty "Puppet Classes" field in Horizon and hit the Edit button under it. Enter role::simplelamp2 and apply. (This replaced the old role::simplelamp which does not exist anymore).
Now connect to your instance via SSH and run 'sudo puppet agent -tv'. This will start the puppet agent and automatically pull in the following things for you:
- httpd ("Apache") webserver
- PHP and module/config for the webserver to use it (still as libapache2-mod-php currently)
- MariaDB (replaced MySQL), database server and client
- memcached for performance
Apache httpd will have the modules "rewrite" and "headers" loaded by default. The PHP version on buster is be 7.3.
Puppet will manage all the webserver config; though by default you can now also still manually edit files under /etc/apache2/sites-enabled and drop-in your own config without having to go through Puppet or code review.
You can also write your own puppet role to add in addition to simplelamp2 that builds on it. It can live on a either a local or a central puppetmaster.
Optionally you can switch the webserver to "strict" mode where puppet will actively purge all manually edited files. (see T169368 for details)