Ansible。为每个更改调用函数
问题描述:
我有一个任务必须检查.ini文件中的存储数据库列表,如果它不存在 - 从文件创建它。Ansible。为每个更改调用函数
目前我有这个任务,检查当前数据库:
- 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_created”。
,我需要创建任务的新的数据库是这样的:
- name: Import DB (if it was created)
mysql_db:
name=my_database
state=import
target=/tmp/database.sql
when: db_created.changed
但是,这项任务将调用一次,不是为我需要创建的所有数据库。我需要确切知道需要创建哪个数据库。
你能帮忙吗,如何用正确的数据库名称来调用第二个数据库,以及如果有多个数据库,你可以帮忙吗?
答
不好的语法分开,你的第一个任务不仅仅是检查,而是确保数据库存在(如果没有找到,创建新的数据库)。
在你的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 }}"
注意:有关你的语法 - 忘记=
,始终使用:
。
非常感谢您的帮助。 –