我有一项任务必须检查.ini文件中的商店数据库列表,如果它不存在,请从文件中创建它。
目前我有这个检查数据库存在的任务:
- name: Check DB (if necessary)
mysql_db:
name: "{{ item }}"
state=present
register: db_created
with_ini:
- databases[1-100]
- section: sites
- file: "lookup.ini"
- re: true
但它只是检查db的存在并保持上升事件“db_created”。
我需要使用以下任务创建新数据库:
- name: Import DB (if it was created)
mysql_db:
name=my_database
state=import
target=/tmp/database.sql
when: db_created.changed
但是通过这个任务,它将被调用一次,而不是我需要创建的所有数据库。我需要确切地知道需要创建哪个数据库。
您能帮助,如何使用正确的数据库名称调用第二个,如果有多个数据库则调用所有数据库?
答案 0 :(得分:1)
错误的语法,你的第一个任务不仅仅是检查,而是确保存在db(如果找不到则创建新的db)。
在db_created
结果中,您有每个项目changed
的状态
这样的事情应该可以胜任:
- name: Check DB (if necessary)
mysql_db:
name: "{{ item }}"
state: present
register: db_created
with_ini:
- databases[1-100]
- section: sites
- file: "lookup.ini"
- re: true
- name: Import DB (if it was created)
mysql_db:
name: "{{ item.item }}"
state: import
target: /tmp/database.sql
when: item is changed
with_items: "{{ db_created.results }}"
或者这样的事件(仅迭代更改的项目):
- name: Import DB (if it was created)
mysql_db:
name: "{{ item.item }}"
state: import
target: /tmp/database.sql
with_items: "{{ db_created.results | select('changed') | list }}"
注意:关于您的语法 - 忘记=
,请始终使用:
。