Files

93 lines
1.9 KiB
YAML

---
# Sanitized fixture for Ansible parser tests
- import_playbook: base-setup.yml
- name: Configure web servers
hosts: webservers
become: true
gather_facts: true
vars_files:
- vars/common.yml
- vars/web.yml
pre_tasks:
- name: Verify connectivity
ansible.builtin.wait_for_connection:
timeout: 30
roles:
- common
- role: nginx
tags: [nginx]
tasks:
- name: Install packages
ansible.builtin.package:
name: "{{ item }}"
state: present
loop: [curl, rsync]
- name: Deploy config
template:
src: app.conf.j2
dest: /etc/app/app.conf
notify: restart app
- name: Run deploy tasks
ansible.builtin.include_tasks: deploy.yml
- name: Apply hardening role
ansible.builtin.import_role:
name: security
- name: Handle migration
block:
- name: Run migration script
command: /opt/app/migrate.sh
- name: Verify migration
ansible.builtin.stat:
path: /opt/app/.migrated
register: migration_stat
rescue:
- name: Log migration failure
debug:
msg: "Migration failed, check logs"
- name: Restart service if needed
service:
name: app
state: restarted
when: migration_stat.stat.exists | default(false)
post_tasks:
- name: Smoke test
uri:
url: http://localhost/health
status_code: 200
handlers:
- name: restart app
service:
name: app
state: restarted
listen: app restarted
- name: Configure database servers
hosts: dbservers
become: true
tasks:
- name: Install database
package:
name: postgresql
state: present
notify:
- restart db
- run migrations
handlers:
- name: restart db
service:
name: postgresql
state: restarted
- name: run migrations
command: /opt/db/migrate.sh