Как развернуть экземпляр Azure SQL S0 с доступной базой данных azure_rm_sqldatabase? - PullRequest
0 голосов
/ 14 июня 2019

На этой или на прошлой неделе MS изменила параметры развертывания Azure DB по умолчанию. Наш сценарий развертывания начал создавать экземпляры vcores общего назначения 2 вместо экземпляров S0. Я пытаюсь это исправить, но похоже, что либо документация неверна, либо я делаю что-то неправильно.

Наш начальный скрипт был:

  azure_rm_sqldatabase:
    resource_group: "{{ resource_group }}"
    server_name: "{{ db_server }}"
    name: "{{ item }}"
    location: "{{ location }}"
  with_items:
    - "{{ database_list }}"
  register: async_result
  async: 7200
  poll: 0

Согласно документации это должно быть решено добавлением 2 параметров.

  1. издание: стандарт

  2. max_size_bytes: 268435456000

но оказалось, что этого недостаточно.

Я пытался использовать create_mode или уменьшить max_size_bytes, но без удачи.

- name: Create SQL Database for "{{ stack_name }}"
  azure_rm_sqldatabase:
    resource_group: "{{ resource_group }}"
    server_name: "{{ db_server }}"
    name: "{{ item }}"
    location: "{{ location }}"
    create_mode: default
    edition: standard
    max_size_bytes: 268435456000‬ 

Во всех случаях я получаю сообщение об ошибке:

failed: [127.0.0.1] (item={'_ansible_parsed': True, '_ansible_item_result': True, '_ansible_item_label': u'authentication', 
u'ansible_job_id': u'701489864709.12193', 'failed': False, u'started': 1, 'changed': True, 'item': u'authentication', u'finished': 0, 
u'results_file': u'/home/vb/.ansible_async/701489864709.12193', '_ansible_ignore_errors': None, '_ansible_no_log': False}) => 
{"ansible_job_id": "701489864709.12193", "attempts": 2, "changed": false, "finished": 1, 
"item": {"ansible_job_id": "701489864709.12193", "changed": true, "failed": false, "finished": 0, "item": "authentication", 
"results_file": "/home/vb/.ansible_async/701489864709.12193", "started": 1}, "msg": 
"Error creating the SQL Database instance: 400 Client Error: 
Bad Request for url: https://management.azure.com/subscriptions/1bbba5c5-fbdb-18d7-8128-b4d403d7c6c5/resourceGroups/test_rg/providers/Microsoft.Sql/servers/testserver/databases/authentication?api-version=2014-04-01"}

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

Обновление: После обновления ansible до последней версии у меня есть другая ошибка:

DeserializationError: Unable to deserialize response data. Data: 268435456000‬, long, ValueError: invalid literal for long() with base 10: '268435456000\\xe2\\x80\\xac'"

Я уменьшил размер базы данных, база данных была создана, но вместо S0 она была создана как 2vcore.

Ответы [ 2 ]

0 голосов
/ 22 июля 2019

Как и вы, мы тоже это испытали. В моем случае: при создании базы данных Azure SQL Server по умолчанию использовались вычисления общего назначения 4 (что действительно дорого). Исходя из моего опыта, мы создавали нашу базу данных, используя код t-sql:

CREATE DATABASE 'dbName'

и это создает дорогие вычисления gen4 в лазури. Поэтому я искал некоторые документы и в соответствии с документацией для t-sql azure create database у него есть аргументы для создания определенных ценовых уровней: SERVICE_OBJECTIVE, например, для вычисления S2 мы теперь используем ниже t-sql:

CREATE DATABASE 'dbName' ( EDITION = 'standard', SERVICE_OBJECTIVE = 'S2' ) ;

Теперь это работает для нас. Хотя я не знаю, как эти параметры можно вызывать из сценариев или командных строк, должна быть возможность отправить SERVICE_OBJECTIVE, поскольку это может быть отсутствующий ключ.

0 голосов
/ 14 июня 2019

Мне не удалось решить проблему с помощью azure_rm_sqldatabase, поэтому мне пришлось обойти ее с помощью команды bash. Если я найду лучшее решение, я обновлю этот ответ. В случае, если кто-то столкнется с той же проблемой, вот пример кода:

- name: Create SQL Database for "{{ stack_name }}"
  command: bash -c "az sql db create --name {{ item }} --resource-group {{ resource_group }} --server {{ db_server }} --capacity 10 --edition Standard --service-objective S0"  
  with_items:
    - "{{ database_list }}"
  register: async_result
  async: 7200
  poll: 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...