我是使用Ansible的新手,我希望了解如何编写一个Ansible Playbook,它将作为特定用户在postgres SQL db实例上运行查询,并在终端中显示输出。
例如:
SELECT * FROM example_db;
有人可以提供一个简单的例子吗?
答案 0 :(得分:3)
基于@Christofides的例子。我做了一些修改和测试。
这有效:
- hosts: all
sudo: yes
sudo_user: postgres
tasks:
- name: Select all from example table
command: psql -c "SELECT * FROM example_table" example_db
register: select_all_from_example
- name : Display example table contents
debug: msg="{{ select_all_from_example.stdout }}"
答案 1 :(得分:2)
这是一个未经测试的示例,显示了基本要素。根据您的设置,可能需要调整。
- name: Select all from example table
sudo: yes
sudo_user: postgres
command: psql -c "SELECT * FROM example_table" example_db
register: select_all_from_example
- name: Display example table contents
debug: msg="{{ select_all_from_example.stdout }}"
答案 2 :(得分:0)
您可以使用提供四个新模块的新角色:
在这里查看文档:{{3}}
答案 3 :(得分:0)
使用 Ansible Shell 模块
创建数据库和用户
我在这里创建:airflow
db,用户 airflow_user
和密码 airflow_password
在 PGPASSWORD
变量中设置 postgres_user(主用户)密码
- name: Created Airflow Database and User in Postgres
shell: /usr/bin/psql --host=10.0.0.39 --dbname=postgres --username=postgres -c "CREATE DATABASE airflow" ; /usr/bin/psql --host=10.0.0.39 --dbname=postgres --username=postgres -c "CREATE USER airflow_user WITH PASSWORD 'airflow_password'" ; /usr/bin/psql --host=10.0.0.39 --dbname=postgres --username=postgres -c "GRANT ALL PRIVILEGES ON DATABASE airflow TO airflow_user " ;
environment:
PGPASSWORD: postgres_password
register: postgres_query_status
failed_when: "'already exists' not in postgres_query_status.stderr and 'CREATE' not in postgres_query_status.stdout"
tags:
- postgres