Most shell commands are actually &quot;declarative&quot; in a sense.<p>If you run &quot;apt-get -y install foo&quot; that means that you want &quot;foo&quot; to be installed. If it&#x27;s already installed, it just does nothing.<p>In Ansible, you&#x27;d use &quot;apt: name=foo state=present&quot; which does exactly the same thing as the apt-get command, but requires a web search to figure out how to write (assuming you know normal Linux system usage but haven&#x27;t memorized Ansible).<p>The only differences seem to be that Ansible tells you whether the command made a change or not, and that you can parse the Ansible configuration with an external tool (assuming there are no loops&#x2F;variable&#x2F;etc.), but both of these things don&#x27;t really seem that useful in practice.