Spec-Zone.ru › Ansible

Модуль 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
END_OF_DOCUMENT_MARKER

Параметры

Параметр

Комментарии

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

Устанавливает кодировку клиента для текущего сеанса (например, UTF-8).

По умолчанию используется кодировка, определенная базой данных.

login_host

aliases: host

string

Хост, на котором работает база данных.

Если у вас возникли проблемы с подключением при использовании localhost, попробуйте использовать 127.0.0.1 вместо этого.

Default: ""

login_password

string

Пароль, который должен использовать этот модуль для установления сеанса PostgreSQL.

Default: ""

login_unix_socket

aliases: unix_socket

string

Путь к сокету домена Unix для локальных подключений.

Default: ""

login_user

aliases: login

string

Имя пользователя, которое должен использовать этот модуль для установления сеанса PostgreSQL.

Default: "postgres"

named_args

dictionary

Словарь аргументов «ключ-значение» для замены заполнителей переменных в содержимом файла.

Если значение является списком, он будет преобразован в массив PostgreSQL.

Взаимоисключающий с positional_args.

path

path

Путь к SQL-скрипту на целевой машине.

Для загрузки дампов предпочтительнее использовать модуль community.postgresql.postgresql_db с state=restore.

port

aliases: login_port

integer

Порт базы данных для подключения.

Default: 5432

positional_args

list / elements=any

Список значений для замены заполнителей переменных в содержимом файла.

Если значение является списком, он будет преобразован в массив PostgreSQL.

Взаимоисключающий с named_args.

search_path

list / elements=string

Переопределяет список схем для поиска объектов базы данных в.

session_role

string

Переключиться на session_role после подключения. Указанная роль должна быть ролью, членом которой является текущий login_user.

Проверка прав для SQL-команд выполняется так, как будто session_role был тем, кто вошел в систему изначально.

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 для получения дополнительной информации о режимах.

Значение по умолчанию prefer соответствует значению по умолчанию libpq.

Choices:

  • "allow"
  • "disable"
  • "prefer" ← (default)
  • "require"
  • "verify-ca"
  • "verify-full"

trust_input

boolean

Если false, проверьте, является ли значение session_role потенциально опасным.

Использование false имеет смысл только в случае, если возможны SQL-инъекции через session_role.

Выбоёр:

  • false
  • true ← (по умолчанию)

Атрибуты

Атрибут

Поддержка

Описание

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

строка

Выполненный запрос.

Когда используются опции positional_args или named_args, запрос содержит все переменные, которые были подставлены внутри коннектора базы данных.

Возвращается: success

Пример: "SELECT * FROM bar"

query_result

список / элементы=словарь

Список словарей в формате столбец:значение, представляющий возвращённые строки.

Когда в скрипте несколько инструкций, возвращает результат последней инструкции.

Возвращается: success

Пример: [{"Column": "Value1"}, {"Column": "Value2"}]

rowcount

целое число

Количество созданных или затронутых строк.

Когда в скрипте несколько инструкций, возвращает количество строк, затронутых последней инструкцией.

Возвращается: changed

Пример: 5

statusmessage

строка

Атрибут, содержащий сообщение, возвращённое коннектором базы данных после выполнения содержимого скрипта.

Когда в скрипте несколько инструкций, возвращает сообщение, относящееся к последней инструкции.

Возвращается: success

Пример: "INSERT 0 1"

Авторы

  • Douglas J Hunley (@hunleyd)
    1. Hart (@jtelcontar)
  • Daniel Scharon (@DanScharon)
  • Andrew Klychkov (@Andersson007)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (источники)
  • Сообщить об ошибке
  • Связь

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API