# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.
---
# This playbook will initialize the immortal DBs in the database account.
# This step is usually done only once per deployment.

- hosts: ansible
  tasks:
  - include_tasks: tasks/initdb.yml
