Hi -
I worked with Ansible many months ago (pre 1.0?) and now I'm back, catching up on the new features, including roles.
My question is about the best practice structure for the core setup of a server. What I want to do is get on a clean Ubuntu install (such as from Digital Ocean) and perform a low level "setup". This includes changing SSH to port 2222, setting up some common accounts, installing a firewall, etc. I only need to do this once for each machine coming on line. And once finished I'll have locked down root password access, SSH will be on a new port, etc. A lot of non-idempotent things.
What I am wondering is how I should encapsulate this. Should this be a module which when run a second time can check that a machine has been "setup" (probably by checking for the existence of an empty file) or should this be a role, or something else?
The solution I worked out when I first started using Ansible was to have a group in my inventory file called "setup" and I'd put new machines in that group, run playbooks and then remove those machines from [setup]. That approach works, but it doesn't scale and requires a manual editing step.
Thank you -- Randy