Ansible 12,177 (github.com/ansible/ansible (https://github.com/ansible/ansible 70,800 ), GPL 3.0, ansible-core 2.21.4) runs playbooks, ordered task lists, over SSH or against cloud APIs. Each module is idempotent, but a playbook keeps no state: deleting a task leaves its resource behind, while deleting a resource from a template removes it. So the two combine: CloudFormation 24 owns the infrastructure, Ansible configures servers, and the amazon.aws collection (11.4.0) can even deploy the stack:
- name: Deploy BookNest's catalog stack
hosts: localhost
gather_facts: false
tasks:
- name: Create or update the booknest-api stack
amazon.aws.cloudformation:
stack_name: booknest-api
state: present
region: us-east-1
template_body: "{{ lookup('file', '../packaged.yaml') }}"
capabilities: [CAPABILITY_IAM]With pip 21,050 install ansible-core==2.21.4 boto3 and ansible-galaxy collection install amazon.aws, boto3 follows AWS_ENDPOINT_URL to LocalStack 63,725 . Given the packaged.yaml of Lint, Package, Deploy, ansible-playbook deploy.yml reported changed, then ok on a second run. Red Hat sells Ansible Automation Platform on top of it.