A good workflow would be using Packer to build your immutable images with Ansible. That way you don't need to log into the image, just make a new image with your changes using the same process, and then deploy those images with Terraform.
I tried Rundeck. It was more confusing than just using Ansible without a GUI. IMO, just having the playbook with yaml and jinja files is easier to read and use. GUIs always have at least one thing you need in a place you wouldn't think.
I guess I wouldn't mind having some reports in a GUI but I'll stick with just text files.