Source

Implementation

Provisioner Type

Resource Type

Flavor

Tool

mssql

Provisions a dedicated database on a shared MS SQL server instance.

type: mssql
expected_outputs:
  - server
  - port
  - connection
  - database
  - username
  - password

provisioners.yaml (view on GitHub) :

- uri: template://default-provisioners/mssql
  type: mssql
  description: Provisions a dedicated database on a shared MS SQL server instance.
  init: |
    randomPassword: {{ randAlphaNum 16 | quote }}
    sk: default-provisioners-mssql
    publishPort: {{ dig "annotations" "compose.score.dev/publish-port" "0" .Metadata | quote }}    
  state: |
    service: {{ .Init.sk }}
    database: master
    username: sa
    password: {{ dig "password" .Init.randomPassword .State | quote }}
    publishPort: {{ .Init.publishPort }}    
  outputs: |
    server: {{ .State.service }}
    port: {{ .State.publishPort }}
    connection: "Server=tcp:{{ .State.service }},1433;Initial Catalog={{ .State.database }};User ID={{ .State.username }};Password={{ .State.password }};"
    database: {{ .State.database }}
    username: {{ .State.username }}
    password: {{ .State.password }}    
  volumes: |
    {{ .Init.sk }}-data:
      driver: local    
  services: |
    {{ .Init.sk }}:
      image: mcr.microsoft.com/mssql/server:latest
      restart: always
      environment:
        ACCEPT_EULA: "Y"
        MSSQL_ENABLE_HADR: "1"
        MSSQL_AGENT_ENABLED: "1"
        MSSQL_SA_PASSWORD: {{ .State.password }}
      {{ if ne .Init.publishPort "0" }}
      ports:
      - target: 1433
        published: {{ .Init.publishPort }}
      {{ end }}
      volumes:
      - type: volume
        source: {{ .Init.sk }}-data
        target: /var/opt/mssql    
  info_logs: |
    - "{{.Uid}}: To connect to mssql: \"docker run -it --network {{ .ComposeProjectName }}_default --rm mcr.microsoft.com/mssql/server:latest mysql /opt/mssql-tools/bin/sqlcmd -S localhost -U {{ .State.username }} -p {{ .State.password | squote }}\""
    {{ if ne .Init.publishPort "0" }}
    - "{{.Uid}}: Or connect your mssql client to \"
    Server=tcp:{{ .State.service }},1433;Initial Catalog={{ .State.database }};User ID={{ .State.username }};Password={{ .State.password }};\""
    {{ end }}    
  expected_outputs:
    - server
    - port
    - connection
    - database
    - username
    - password