如何从ansible play中提取shell命令中的文件名

时间:2016-04-29 10:31:21

标签: mysql shell ansible ansible-playbook

我正在进行数据库转储,如下所示:

- name: create backup of the EMS database
  shell: " mysqldump --single-transaction --triggers --routines --events --hex-blob --complete-insert -h {{groups.db_name[0]}} -u {{ db_user }} -p{{ db_password }} {{ db_name }} > {{ vars.inventory_dir }}/../{{ db_name}}_backup-{{ ansible_date_time.iso8601 }}.sql"
  register: db_backup

现在如果你注意到最后的shell命令我转储了一个日期时间附加为{{ db_name}}_backup-{{ ansible_date_time.iso8601 }}.sql的mysql

我如何在下一场比赛中仅使用这个动态部分?

1 个答案:

答案 0 :(得分:2)

我建议您先将文件名存储为事实:

- set_fact:
    mysql_dump_file: "{{ db_name }}_backup-{{ ansible_date_time.iso8601 }}.sql"

然后在转储任务和您需要文件名的所有后续任务中使用该事实:{{ mysql_dump_file }}

- name: create backup of the EMS database
  shell: "mysqldump --single-transaction --triggers --routines --events --hex-blob --complete-insert -h {{ groups.db_name[0] }} -u {{ db_user }} -p{{ db_password }} {{ db_name }} > {{ vars.inventory_dir }}/../{{ mysql_dump_file }}"
  register: db_backup