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 }}" 

注意:有关你的语法 - 忘记=,始终使用:

+0

非常感谢您的帮助。 –