Ansible is a deployment solution that favors simplicity.
The Ansible architecture is agentless; it doesn't need a running daemon on the client-side like Puppet does. Instead, the Ansible server logs into the Ansible node and issues commands over SSH in order to install the required configuration.
While Ansible's agentless architecture does make things simpler, you need a Python interpreter installed on the Ansible nodes. Ansible is somewhat more lenient about the Python version required for its code to run than Puppet is for its Ruby code to run, so this dependence on Python being available is not a great hassle in practice.
Like Puppet and others, Ansible focuses on configuration descriptors that are idempotent. This basically means that the descriptors are declarative and the Ansible system figures out how to bring the server to the desired state. You can rerun...