SQL Ansible 中的服务器数据库查询

SQL Server database queries in Ansible

我想知道社区中是否有人使用 Ansible 来操作 Microsoft SQL 服务器数据库?

我们想在用 Ansible 编写的环境配置脚本中添加一个任务,将 INSERT 行放入 SQL 服务器 table。这些行将具有在我们的变量文件中指定的参数。

我一直无法找到实现此目的的特定 Ansible 模块,所以想听听是否有人以其他方式取得了成功?

Ansible db specific modules 但 none 可用于在 Microsoft SQL 服务器上启动查询。

win_shell 在这方面是你的朋友。

我从你的场景中看到的:

  • 使用您的变量为您的查询创建一个模板
  • 使用 template 模块将模板内容推送到您的服务器
  • 使用 win_shell 将该文件提供给您的 mssql 命令行执行。
  • 最终删除推送的文件。

为了完整性,这里是 Ansible 中使用的解决方案的语法 SELECT & INSERT for Microsoft SQL Server:

插入

- name: 'insert row to SQL server DB'
  win_shell: "invoke-sqlcmd -username \"{{db_user}}\" -password \"{{db_pass}}\" -Query \"INSERT INTO Addresses (DoorNum,Street,Town,PostCode) VALUES ({{ item.doornum }},'{{ item.street }}','{{ item.town }}''{{ item.postcode }}')\""

SELECT

- name: 'select from SQL server DB'
  win_shell: "invoke-sqlcmd -username \"{{db_user}}\" -password \"{{db_pass}}\" -Query \"SELECT ID FROM Addresses WHERE PostCode = '{{ item.postcode }}'\" | Select-Object * -ExcludeProperty ItemArray, Table, RowError, RowState, HasErrors | ConvertTo-Json"
  register: response

- set_fact:
    ids: "{{ response.stdout|from_json}}"

- debug:
    var: ids