如何使用sql查询的输出动态创建ansible列表

时间:2016-10-12 10:55:07

标签: postgresql ansible

我有一个剧本,我想备份,删除和导入一些表(作为更新它们的方法),不要问我为什么我不会只使用更新和插入,这是一个复杂的架构。

我想查询postgres数据库以确定来自特定数据库的哪些表来执行这些表的操作。

喜欢:

- name: Create a list of STATIC TABLES to import later
  command: psql -t -A -d {{ dbname }} -U {{ dbuser }} -c "SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE'"
  register: dbtables_data

- name: Backup all tables.
  shell: "pg_dump -U {{ dbuser }} {{ item.name }} -f {{ dbbackup_dir }}/{{ item.name }}.sql"
  with_items: "{{ dbtables_data.results }}"

这给了我:

fatal: [*.*.*.*] => with_items expects a list or a set

我想将此输出注册到列表变量中,以便我可以迭代并执行备份,删除和导入操作。

请帮忙

1 个答案:

答案 0 :(得分:0)

已注册变量包含可以使用的名为git-request-pull的字段:

我建议你暂时添加一个调试任务来显示输出:

git request-pull

要调试$ git request-pull origin/master myfork The following changes since commit 1edee6b1d61823a2de3b09c160d7080b8d1b3a40: John Smith (1): added a new function are available in the git repository at: git://githost/simplegit.git featureA Jessica Smith (2): add limit to log function change log output to 30 from 25 lib/simplegit.rb | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) 内容,您可以在两个现有任务之间插入以下任务:

stdout_lines

或者

- name: Create a list of STATIC TABLES to import later
  command: psql -t -A -d {{ dbname }} -U {{ dbuser }} -c "SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE'"
  register: dbtables_data

- name: Backup all tables.
  shell: "pg_dump -U {{ dbuser }} {{ item }} -f {{ dbbackup_dir }}/{{ item }}.sql"
  with_items: "{{ dbtables_data.stdout_lines }}"

另一个优雅的方法是,通过使用参数'with_lines'调用查找插件'lines',在一个任务中iterate directly over the results

stdout_lines