SQL Сервер не разрешает обновление брандмауэра - Ошибка при создании экземпляра правила брандмауэра - PullRequest
4 голосов
/ 02 апреля 2020

Привет, сообщество. Я запускаю ниже ansible playbook до azure cli. Также я получаю аналогичные результаты от Ubuntu 18.04.4 LTS.

Также я поднял вопрос о github: https://github.com/Azure/Ansible/issues/21

Что я имею в виду, используя Azure CLI?

Go до Azure:

-> Создать новую облачную оболочку

-> Ansible уже установлен

-> создать новый файл yml. Скопируйте приведенный ниже сценарий.

-> Запустите указанную ниже книгу. С помощью этой команды ansible-playbook nameofyourfile.yml

-> следующий скрипт завершается ошибкой

- hosts: localhost
  connection: local
  vars:
    resource_group: ansibleResourceGroupName
    webapp_name: ansibleWebAppName
    plan_name: ansibleWebPlanName
    location: westeurope
    server_name: AnisbleDemoSqlServer
    database_name: AnsibleDemoSqlDatabase
  tasks:
    - name: Create a resource group
      azure_rm_resourcegroup:
        name: "{{ resource_group }}"
        location: "{{ location }}"

    - name: Create App Service on Linux with dotnetcore
      azure_rm_webapp:
        resource_group: "{{ resource_group }}"
        name: "{{ webapp_name }}"
        plan:
          resource_group: "{{ resource_group }}"
          name: "{{ plan_name }}"
          is_linux: true
          sku: S1
          number_of_workers: 1
        frameworks:
          - name: "dotnetcore"
            version: "3.1"

    - name: Create (or update) SQL Server
      azure_rm_sqlserver:
        resource_group: "{{ resource_group }}"
        name: "{{ server_name }}"
        location: "{{ location }}"
        admin_username: panoskarajohn
        admin_password: Testpasswordxyz12!

    - name: Create (or update) SQL Database
      azure_rm_sqldatabase:
        resource_group: "{{ resource_group }}"
        server_name: "{{ server_name }}"
        name: "{{ database_name }}"
        location: "{{ location }}"

    - name: Create (or update) Firewall Rule
      azure_rm_sqlfirewallrule:
        resource_group: "{{ resource_group }}"
        server_name: "{{ server_name }}"
        name: firewallruleAllowAll
        start_ip_address: 0.0.0.0.
        end_ip_address: 255.255.255.255

Мой sqlserver создан. Но правило брандмауэра не работает, с unauthorised error.

At the end i have provided the errors

Также, когда я пытаюсь сделать это вручную, чтобы добавить правило брандмауэра через портал azure. Все деактивировано. Кроме того, IP-адрес клиента добавления, по-видимому, неактивен.

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

См. Изображение для получения дополнительной информации.

Когда я создаю через портал azure новый сервер sql, все кажется работать .

Любая помощь приветствуется.

Firewall Rules

Ошибка, которую я получаю:

fatal: [localhost]: FAILED! => {"changed": false, "msg": "Error creating the Firewall Rule instance: 400 Client Error: Bad Request for url: -> Некоторые URL.

Когда я нажимаю на URL, я получаю json -> {"error":{"code":"AuthenticationFailed","message":"Authentication failed. The 'Authorization' header is missing."}}

Ansible Версия для моей машины Ubuntu

ansible 2.9.6 файл конфигурации = не настроен путь поиска модуля = [u '/ home / pkaragiannis / .ansible / plugins / modules', u '/ usr / share / ansible / plugins / modules '] ansible python расположение модуля = /usr/local/lib/python2.7/dist-packages/ansible расположение исполняемого файла = / usr / local / bin / ansible python версия = 2.7.17 (по умолчанию , 7 ноября 2019, 10:07:09) [G CC 7.4.0]

Ansible Выход из Ubuntu VM

PLAY [localhost] * ************************************************** ************************************

ЗАДАЧА [Сбор фактов] ******************************************** ************************************* ok: [localhost]

TASK [ Создать группу ресурсов] ********************************************* **************************** изменено: [localhost]

TASK [Создать службу приложения на Linux с помощью dotnetcore ] ************************************************* **** изменено: [localhost]

ЗАДАЧА [Создать (или обновить) SQL Сервер] *********************** ******************************************** [ВНИМАНИЕ]: Azure Последний профиль API не определяет запись для SqlManagementClient изменен: [localhost]

ЗАДАНИЕ [Создать (или обновить) SQL База данных] **************** ************************************************* изменен : [localhost]

TASK [Создать (или обновить) правило брандмауэра] ****************************** ********************************** фатально: [localhost]: FAILED! => {"change": false, "msg": "Ошибка создания экземпляра правила брандмауэра: 400 Ошибка клиента: неверный запрос URL: https://management.azure.com/subscriptions/****** - **** * - ******* / resourceGroups / ansibleResourceGroupName / provider / Microsoft.Sql / servers / AnisbleDemoSqlServer / firewallRules / firewallruleAllowAll? api-версия = 2014-04-01 "}

PLAY RECAP *** ************************************************** ********************************************** localhost: ok = 5 изменено = 4 недоступно = 0 не удалось = 1 пропущено = 0 спасено = 0 проигнорировано = 0

1 Ответ

1 голос
/ 06 мая 2020

Когда вы хотите создать сервер SQL и правила брандмауэра для него, я вижу, что вы используете субъект-службу для аутентификации. Поэтому, во-первых, у субъекта службы должна быть роль Contributor подписки или группы ресурсов, которые вы будете использовать.

Войдите в систему с помощью субъекта службы, а затем команду CLI Azure, чтобы создать * Сервер 1023 * и правила брандмауэра:

az sql server create -l westus -g mygroup -n myserver -u myadminuser -p myadminpassword
az sql server firewall-rule create -g mygroup -s myserver -n myrule --start-ip-address 1.2.3.4 --end-ip-address 5.6.7.8

С Ansible он также должен работать, и я не увидел никаких проблем в коде. Просто установите для него учетные данные правильно с субъектом службы.

Обновление:

Вот скриншот ansible:

enter image description here

Обновление-1:

Вот файл YAML из приведенного выше снимка экрана:

- hosts: localhost
  connection: local
  tasks:
    - name: Create (or update) SQL Server
      azure_rm_sqlserver:
        resource_group: mygroup
        name: mysqlname
        location: eastus
        admin_username: username
        admin_password: password

    - name: Create (or update) Firewall Rule
      azure_rm_sqlfirewallrule:
        resource_group: mygroup
        server_name: mysqlname
        name: FirewallRule1
        start_ip_address: 10.0.17.62
        end_ip_address: 10.0.17.62
...