You can full well deploy docker stacks using ansible. This is what I used to do for rocket.chat: [1][2] (ditched it for Matrix/element without Docker, but the concept stays valid)
I’m not to the point where the specifics of every system is in Ansible yet.
What I suggest is writing a playbook that list the roles attached to your servers, even if the roles actually do nothing:
<pre style="background-color:#ffffff;">
<span style="font-style:italic;color:#969896;"># roles/application-x/tasks/main.yml
</span><span style="color:#323232;">- </span><span style="color:#63a35c;">name</span><span style="color:#323232;">: </span><span style="color:#183691;">setup application-x
</span><span style="color:#323232;"> </span><span style="color:#63a35c;">debug</span><span style="color:#323232;">:
</span><span style="color:#323232;"> </span><span style="color:#63a35c;">msg</span><span style="color:#323232;">: </span><span style="color:#183691;">"TODO This will one day deploy application-x. For now the setup is entirely manual and documented in roles/application-x/README.md"
</span>
<pre style="background-color:#ffffff;">
<span style="font-style:italic;color:#969896;"># roles/application-x/tasks/main.yml
</span><span style="color:#323232;">- </span><span style="color:#63a35c;">name</span><span style="color:#323232;">: </span><span style="color:#183691;">setup service-y
</span><span style="color:#323232;"> </span><span style="color:#63a35c;">debug</span><span style="color:#323232;">:
</span><span style="color:#323232;"> </span><span style="color:#63a35c;">msg</span><span style="color:#323232;">: </span><span style="color:#183691;">"TODO This will one day deploy service-y. For now the setup is entirely manual and documented in roles/service-y/README.md"
</span><span style="color:#323232;">
</span><span style="font-style:italic;color:#969896;">#...
</span>
This is a good start for a config management/automated deployment system. At least you will have an inventory of hosts and what’s running on them. Work your way from there, over time progressively convert your manual install/configuration steps to automated procedures. There are a few steps that even I didn’t automate (like configuring LDAP authentication for Nextcloud), but they are documented in the relevant role README [3]