我有一个 ansible 脚本设置为使用 azure.azcollection.azure_rm_sqldatabase 自动创建 azure sql 数据库(不是托管实例,我知道有一个用于该类型的模块)。
由于已有标准,我们正在努力坚持使用 ansible 和 API,而不是将 powershell 之类的东西引入自动化。
有人在这方面取得了成功并可以分享他们所做的吗?
不幸的是,没有参数可以设置数据库的备份保留时间。我不能依赖天蓝色的默认设置,因为根据数据库是开发还是生产,我需要不同的时间。其他数据库风格在其 azcollection 模块中具有此参数,但没有此模块。我一直在尝试 azure_rm_resource 但还没有让它工作(它无法识别 backupRetentionDays)。
以下是我最好的尝试,但找不到资源
以下是我最好的尝试,但找不到资源
`- name: Create Azure SQL database retention
azure.azcollection.azure_rm_resource:
client_id: "{{ lookup('env', 'DB_USER') }}"
secret: "{{ lookup('env', 'DB_CRED') }}"
tenant: "{{ aztenant }}"
subscription_id: "{{ subscription_info_results['subscriptions'] | json_query('[0].subscription_id') }}"
resource_group: '{{ resource_group_name }}'
provider: 'Sql'
resource_type: 'servers/databases' #'servers/{{ server_name }}/databases'
resource_name: '{{ database_name }}'
api_version: '2024-05-01-preview'
method: '{{ method }}'
body:
properties:
backupRetentionDays: 14
idempotency: true`
`
应使用完整的命名空间指定提供程序。使用“Microsoft.Sql”代替“Sql”。
在处理SQL服务器和数据库等嵌套资源时,需要正确定义resource_type和resource_name。
resource_type:应包含完整路径,例如“服务器/数据库”。
resource_name:应包含服务器名称和数据库名称,以 / 分隔。
- name: Create Azure SQL database with custom backup retention
azure.azcollection.azure_rm_resource:
client_id: "{{ lookup('env', 'DB_USER') }}"
secret: "{{ lookup('env', 'DB_CRED') }}"
tenant: "{{ aztenant }}"
subscription_id: "{{ subscription_info_results['subscriptions'] |
json_query('[0].subscription_id') }}"
resource_group: "{{ resource_group_name }}"
provider: "Microsoft.Sql"
resource_type: "servers/databases"
resource_name: "{{ server_name }}/{{ database_name }}"
api_version: "2024-05-01-preview" # Ensure this version supports
backupRetentionDays
method: "PUT"
body:
location: "{{ location }}" # Ensure you specify the location
properties:
collation: "SQL_Latin1_General_CP1_CI_AS"
maxSizeBytes: "2147483648" # Example property; adjust as needed
backupRetentionDays: 14
state: present
idempotency: true