I hope this question is not too vague / opinion-based:
I need to create and maintain a handful of virtual machines that get packaged up and deployed out to thousands of users, depending on specific requirements. Everyone is doing roughly the same job, but different people need different tools. This is important because I don't think I can structure things around roles (though I'm happy to be told I'm wrong).
They way I have things structured now is:
vagrant-directory |-Vagrantfile # Multi-host setup, with one machine per "use-case" |-scripts/ # Shell scripts run by Vagrant (mostly used to install Ansible prereqs) |-ansible/ # All Ansible-related files |----Playbook1.yml # One playbook per use case |----tasks/ # Contains task files for everything I want to do |------install/ # All task files related to installing software |------apt-update.yml # For example, a script to run apt update |------iptables-flush.yml # Disable iptables
With this approach, it basically means that when I get a requirement for a new machine, I have to create a new Playbook42.yml, use
import_tasks for the tasks that I need, create any machine-specific tasks, and then provision and export.
Is there a more "Ansible official" or industry standard approach to doing this?