Модуль community.postgresql.postgresql_script – Выполнение PostgreSQL-команд из файла
Примечание
Этот модуль является частью коллекции community.postgresql (версия 3.6.1).
Эта коллекция может быть уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install community.postgresql. Для использования этого модуля необходимы дополнительные требования. Подробности см. в разделе Требования.
Чтобы использовать его в книге задач, укажите: community.postgresql.postgresql_script.
Добавлена в community.postgresql 2.1.0
Описание
- Выполняет произвольные PostgreSQL-команды из файла.
- Модуль всегда сообщает, что состояние изменилось.
- Не выполняется над резервными файлами. Используйте community.postgresql.postgresql_db со значением state=restore для выполнения запросов к файлам, созданным средствами pg_dump/pg_dumpall.
Требования
Ниже приведены требования, необходимые на хосте, на котором выполняется этот модуль.
- psycopg2 >= 2.5.1
Параметры
Параметр | Комментарии |
|---|---|
ca_cert aliases: ssl_rootcert string | Указывает имя файла, содержащего сертификат(ы) центра сертификации (CA). Если файл существует, сертификат сервера будет проверен на наличие подписи одного из этих центров. |
connect_params dictionary added in community.postgresql 2.3.0 | Любые дополнительные параметры, которые необходимо передать в libpg. Эти параметры имеют приоритет. Default: |
db aliases: login_db string | Имя базы данных для подключения и выполнения запросов. |
encoding string | Устанавливает кодировку клиента для текущего сеанса (например, По умолчанию используется кодировка, определенная базой данных. |
login_host aliases: host string | Хост, на котором работает база данных. Если у вас возникли проблемы с подключением при использовании Default: |
login_password string | Пароль, который должен использовать этот модуль для установления сеанса PostgreSQL. Default: |
login_unix_socket aliases: unix_socket string | Путь к сокету домена Unix для локальных подключений. Default: |
login_user aliases: login string | Имя пользователя, которое должен использовать этот модуль для установления сеанса PostgreSQL. Default: |
named_args dictionary | Словарь аргументов «ключ-значение» для замены заполнителей переменных в содержимом файла. Если значение является списком, он будет преобразован в массив PostgreSQL. Взаимоисключающий с positional_args. |
path path | Путь к SQL-скрипту на целевой машине. Для загрузки дампов предпочтительнее использовать модуль community.postgresql.postgresql_db с state=restore. |
port aliases: login_port integer | Порт базы данных для подключения. Default: |
positional_args list / elements=any | Список значений для замены заполнителей переменных в содержимом файла. Если значение является списком, он будет преобразован в массив PostgreSQL. Взаимоисключающий с named_args. |
search_path list / elements=string | Переопределяет список схем для поиска объектов базы данных в. |
session_role string | Переключиться на Проверка прав для SQL-команд выполняется так, как будто |
ssl_cert path added in community.postgresql 2.4.0 | Указывает имя файла клиентского SSL-сертификата. |
ssl_key path added in community.postgresql 2.4.0 | Указывает местоположение секретного ключа, используемого для клиентского сертификата. |
ssl_mode string | Определяет, будет ли и с каким приоритетом устанавливаться защищенное SSL TCP/IP-подключение с сервером. См. https://www.postgresql.org/docs/current/static/libpq-ssl.html для получения дополнительной информации о режимах. Значение по умолчанию Choices:
|
trust_input boolean | Если Использование Выбоёр:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: нет | Может работать в режиме check_mode и возвращать прогноз о статусе изменения без модификации целевого объекта. |
Примечания
Примечание
- По умолчанию используется авторизация, предполагающая, что вы вошли как или используете sudo для учетной записи
postgresна хосте. - Чтобы избежать ошибки «Ошибка проверки подлинности peer для пользователя postgres», используйте пользователя postgres в качестве become_user.
- Этот модуль использует
psycopg, адаптер базы данных Python PostgreSQL. Необходимо убедиться, чтоpsycopg2 >= 2.5.1илиpsycopg3 >= 3.1.8установлены на хосте перед использованием этого модуля. - Если удалённый хост является сервером PostgreSQL (что является стандартным случаем), то PostgreSQL также должен быть установлен на удалённом хосте.
- Для систем на основе Ubuntu, установите пакеты
postgresql,libpq-dev, иpython3-psycopg2на удалённом хосте перед использованием этого модуля.
См. также
См. также
- community.postgresql.postgresql_db
-
Добавление или удаление баз данных PostgreSQL на удаленном хосте.
- community.postgresql.postgresql_query
-
Выполнение PostgreSQL запросов.
- Справочник по схеме PostgreSQL
-
Полное описание документации по схеме PostgreSQL.
Примеры
# Assuming that the file contains
# SELECT * FROM id_talbe WHERE id = %s,
# '%s' will be substituted with 1
- name: Run query from SQL script using UTF-8 client encoding for session and positional args
community.postgresql.postgresql_script:
db: test_db
path: /var/lib/pgsql/test.sql
positional_args:
- 1
encoding: UTF-8
# Assuming that the file contains
# SELECT * FROM test WHERE id = %(id_val)s AND story = %(story_val)s,
# %-values will be substituted with 1 and 'test'
- name: Select query to test_db with named_args
community.postgresql.postgresql_script:
db: test_db
path: /var/lib/pgsql/test.sql
named_args:
id_val: 1
story_val: test
- block:
# Assuming that the the file contains
# SELECT * FROM test_array_table WHERE arr_col1 = %s AND arr_col2 = %s
# Pass list and string vars as positional_args
- name: Set vars
ansible.builtin.set_fact:
my_list:
- 1
- 2
- 3
my_arr: '{1, 2, 3}'
- name: Passing positional_args as arrays
community.postgresql.postgresql_script:
path: /var/lib/pgsql/test.sql
positional_args:
- '{{ my_list }}'
- '{{ my_arr|string }}'
# Assuming that the the file contains
# SELECT * FROM test_table,
# look into app1 schema first, then,
# if the schema doesn't exist or the table hasn't been found there,
# try to find it in the schema public
- name: Select from test using search_path
community.postgresql.postgresql_script:
path: /var/lib/pgsql/test.sql
search_path:
- app1
- public
- block:
# If you use a variable in positional_args/named_args that can
# be undefined and you wish to set it as NULL, constructions like
# "{{ my_var if (my_var is defined) else none | default(none) }}"
# will not work as expected substituting an empty string instead of NULL.
# If possible, we suggest using Ansible's DEFAULT_JINJA2_NATIVE configuration
# (https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-jinja2-native).
# Enabling it fixes this problem. If you cannot enable it, the following workaround
# can be used.
# You should precheck such a value and define it as NULL when undefined.
# For example:
- name: When undefined, set to NULL
set_fact:
my_var: NULL
when: my_var is undefined
# Then, assuming that the file contains
# INSERT INTO test_table (col1) VALUES (%s)
- name: Insert a value using positional arguments
community.postgresql.postgresql_script:
path: /var/lib/pgsql/test.sql
positional_args:
- '{{ my_var }}'
Возвращаемые значения
Общие значения возвращаемых данных описаны здесь, следующие являются полями, уникальными для этого модуля:
Ключ | Описание |
|---|---|
query строка | Выполненный запрос. Когда используются опции Возвращается: success Пример: |
query_result список / элементы=словарь | Список словарей в формате столбец:значение, представляющий возвращённые строки. Когда в скрипте несколько инструкций, возвращает результат последней инструкции. Возвращается: success Пример: |
rowcount целое число | Количество созданных или затронутых строк. Когда в скрипте несколько инструкций, возвращает количество строк, затронутых последней инструкцией. Возвращается: changed Пример: |
statusmessage строка | Атрибут, содержащий сообщение, возвращённое коннектором базы данных после выполнения содержимого скрипта. Когда в скрипте несколько инструкций, возвращает сообщение, относящееся к последней инструкции. Возвращается: success Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/postgresql/postgresql_script_module.html