1) Ansible is an IT automation tool that allows users to provision, deploy, and manage applications and infrastructure through code with no agents required. It uses Python and SSH to run tasks on remote machines. 2) Ansible uses inventory files to group machines and configuration files to specify settings. Playbooks describe the desired state of systems and can be used to reliably and repeatedly deploy applications and setup infrastructure across multiple machines. 3) Roles in Ansible allow for reusable and dry pieces of playbooks focused on common tasks like setup or specific applications like nginx. This improves reusability and reduces duplication of infrastructure configuration and application deployment code.