使用 Ansible 任务运行 SELECT 查询

2021-11-11 00:00:00 ansible ansible-playbook mysql

在 this 的 Ansbile mysql 数据库模块列表中,有一个用于创建数据库,或者创建用户等

In this list of mysql db modules for Ansbile, there's one for creating a db, or creating a user, etc.

我想对预先存在的表运行查询,并使用该查询的结果来填充 Ansible 变量(IP 地址列表和节点类型),我将根据节点类型运行不同的任务.

I would like to run a query against a pre-existing table and use the results of that query to populate an Ansible variable (list of IP addresses, and node type) upon which I would run different tasks, depending on node type.

在 Ansible 中如何做到这一点?

How can that be done in Ansible?

推荐答案

这大概是怎么做的(但未经测试):

This is approximately how to do it (but it is untested):

- name: Retrieve stuff from mysql
  command: >
    mysql --user=alice --password=topsecret dbname
    --host=147.102.160.1 --batch --skip-column-names
    --execute="SELECT stuff from stuff_table"
  register: stuff
  check_mode: no
  changed_when: False

- name: Do something with stuff
  debug: "{{ item }}"
  with_items: stuff.stdout_lines

记录在此处.

相关文章