# 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 deploys a CouchDB for Openwhisk.

- hosts: localhost
  tasks:
  - name: check if db_local.ini exists?
    tags: ini
    stat: path="{{ playbook_dir }}/db_local.ini"
    register: db

  - name: prepare db_local.ini
    tags: ini
    local_action: template src="db_local.ini.j2" dest="{{ playbook_dir }}/db_local.ini"
    when: not db.stat.exists

- hosts: db
  roles:
  - couchdb
