Releases: Dynatrace/dynatrace-configuration-as-code
2.13.0
🚀 New Features
New supported configuration:
- Added support for managing Key User Actions for Web Applications
⚙️ Improvements and 🐛 Bug Fixes
- Monaco now supports specifying "federatedAttributeValues" within account groups. Adding values will transition the group owner to "SAML", while removing all values will transition the group owner to "LOCAL".
- Monaco now correctly handles read-only group updates - When managing groups owned by “SCIM” or "ALL_USERS", updates to group properties such as
name
anddescription
are not allowed, which previously caused Monaco to fail during account management deployments. To bypass attempts to update these types of groups, you can set the environment variableMONACO_SKIP_READ_ONLY_ACCOUNT_GROUP_UPDATES
totrue
or1
. Permissions and policies are deployed as normal.
Full Changelog: v2.12.0...v2.13.0
2.12.0
🚀 New Features
New scoped Config API types are supported by Monaco:
- Key User Actions for Mobile Applications
- User Actions And Session Properties for Mobile Applications
- Dashboard Share settings for classic Dashboards
See the documentation for details on configuring these new types.
🐛 Bug Fixes
builtin:oneagent.features
settings 2.0 objects can not be deleted #1427- HTTP 403 error when handling automation resources as non admin Dynatrace/dynatrace-configuration-as-code-core#89
🧹 Other
- Monaco now uses GO 1.22 #1391
- SBOM format has been changed from XML to JSON #1411
- Allow structured JSON format for DOT files to ease parsing that information for further processing #1423
- Added Snyk security scan #1392
New Contributors
Full Changelog: v2.11.0...v2.12.0
2.11.0
What's Changed
🚀 New Features
Monaco now supports the management of users, groups, and policies.
Have a look at our documentation on how to configure and use them.
🔧 Improvements
- Projects are now optional in the manifest. #1368
- Print a helpful message if a wrong URL is used in the manifest #1386
🐛 Fixes
- The property
entityId
is no longer removed forcalculated-metrics-service
configs #1364 - Fixed potential duplication of configurations if some special characters are used. #1373
- Fixed potential duplication of configurations if multiple environments are used at once. #1380
🧹 Other
- chore(deps): bump golang from 1.21.6-alpine to 1.22.0-alpine by @dependabot in #1363
- chore(deps): bump golang.org/x/net from 0.20.0 to 0.21.0 by @dependabot in #1362
- chore(deps): bump golang.org/x/oauth2 from 0.16.0 to 0.17.0 by @dependabot in #1367
- chore(deps): bump go.uber.org/zap from 1.26.0 to 1.27.0 by @dependabot in #1378
New Contributors
- @arthurpitman made their first contribution in #1368
Full Changelog: v2.10.1...v2.11.0
2.10.1
What's Changed
🔧 Improvements
We've removed the fallback to the deprecated and soon to be removed API endpoint used for querying classic Dynatrace URLs from platform environments. The revamped endpoint now requires a dedicated scope, app-engine:apps:run
, to be assigned to the OAuth client. While this constitutes a breaking change from a technical standpoint, it's unlikely to affect most Monaco users. However, if you encounter an error, we suggest updating your OAuth client secret to include this scope. Please consult the public documentation for more information on how to set up an OAuth client for Monaco.
🐛 Fixes
- Special handling for network zone deployment errors that can occur when the feature for network zones is not (yet) enabled #1340
- Fixed ID extraction logic to handle possible overflows #1335
Full Changelog: v2.10.0...v2.10.1
2.10.0
What's Changed
🚀 New Features
Network zones support
Monaco now supports Dynatrace network zones.
You can configure them using api: network-zone
in your configs.
For example:
configs:
- id: my-monaco-network-zone
config:
name: My zone
template: zone.json
type:
api: network-zone
Generate json/yaml schemas
Monaco now allows to generate json/yaml schemas for the current version that you have.
By invoking monaco generate schemas
(see available options using the -h
flag), Monaco generates the json/schema definition you can use in your IDE.
You can find more information in our documentation.
🐛 Fixes
- We're no longer failing when three curly braces are used in the template files
🔧 Improvements
- Added deprecation notices for deprecated settings schemas.
The settings schemasbuiltin:span-attribute
,builtin:span-event-attribute
, andbuiltin:resource-attribute
are now deprecated. - Improved logging during download
Other improvements
- chore(deps): bump github.com/dynatrace/dynatrace-configuration-as-code-core from 0.4.1-0.20231114144451-a2144bd75dcc to 0.5.0
- chore(deps): bump github.com/google/uuid from 1.4.0 to 1.5.0
- chore(deps): bump actions/upload-artifact from 3.1.3 to 4.0.0
- chore(deps): bump go.uber.org/mock from 0.3.0 to 0.4.0
- chore(deps): bump github.com/go-logr/logr from 1.3.0 to 1.4.1
- chore(deps): bump EnricoMi/publish-unit-test-result-action from 2.11.0 to 2.12.0
- chore(deps): bump reviewdog/action-golangci-lint from 2.5.0 to 2.5.1
- chore(deps): bump actions/upload-artifact from 4.0.0 to 4.1.0
- chore(deps): bump golang from 1.21.5-alpine to 1.21.6-alpine
- chore(deps): bump golang.org/x/oauth2 from 0.15.0 to 0.16.0
- chore(deps): bump github.com/invopop/jsonschema from 0.7.0 to 0.12.0
Full Changelog: v2.9.3...v2.10.0
Get Monaco
Installation instructions for Windows, Linux, and MacOs as well as Docker are available in our documentation.
2.9.3
What's Changed
🐛 Fixes
- Fixed error when deploying some pre-configured Settings objects, wrongly reporting
… ExternalID … already exists
errors. - We're no longer skipping the download of Settings objects that are partially modifiable.
- We're now correctly supporting compound parameters for a config's name.
- Extraction of IDs when downloading is improved - no longer wrongly extracting partial IDs.
- Buckets are no longer downloaded if download is limited to other types via flags.
🔧 Improvements
- Native Monaco Docker image for
linux/arm64
is now available. - Increased timeout for Grail bucket operations to 5 minutes.
- Reduced docker permissions.
Other improvements
- Update to Go 1.21
- bump golang from 1.21.4-alpine to 1.21.5-alpine
- bump actions/setup-go from 4.1.0 to 5.0.0
- bump golang.org/x/oauth2 from 0.13.0 to 0.14.0
- bump github.com/spf13/afero from 1.10.0 to 1.11.0
- bump golang.org/x/oauth2 from 0.14.0 to 0.15.0
- Docker: bump alpine from 3.18 to 3.19
Full Changelog: v2.9.2...v2.9.3
Get Monaco
Installation instructions for Windows, Linux, and MacOs as well as Docker are available in our documentation.
2.9.2
What's Changed
🐛 Fixes
Fix failing to deploy multiple non-unique name configs having the same name.
Previous versions of Monaco would fail to deploy multiple non-unique name configurations with the same name.
If such overlapping configurations were defined, the end result would be a single configuration on the environment.
This was due to a feature ensuring non-unique name configs are updated instead of duplicated if only a single one is found in the environment.
The fix retains that handling which increases usability in cases that users keep names unique, but deactivates it, if a deployment defines several configurations with the same name.
Fix sometimes failing Grail Bucket updates
Previous versions relied on retries to handle state changes of Grail Buckets, however it was found that in some cases, especially if create and update actions happen in quick success this does not resolve all errors and can lead to failed deployments.
The Grail Bucket API client is reworked to await the desired bucket state for each operation. This makes deployments and deletions slightly slower, but ensures that Buckets are always ready to use/modify or fully removed before monaco continues to deploy/delete possibly dependent configurations.
🔧 Improvements
Notify when new versions are available
From this version on, the monaco CLI performs a background version check and will print a message at the end of each command execution if a new version is available for download.
This is implemented by connecting to GitHub. If no connection can be established, the check will silently fail in the background, without impacting the command you're executing.
This behavior is turned ON by default and can be disabled by setting MONACO_SKIP_VERSION_CHECK
if needed.
Other improvements
- Bump dependency github.com/go-logr/zapr from 1.2.4 to 1.3.0
- Bump dependency github.com/spf13/cobra from 1.7.0 to 1.8.0
Container image
Images are available on DockerHub.
The image can be used directly, passing command arguments to the CLI directly or in CI with a monaco
executable available in the container.
docker pull dynatrace/dynatrace-configuration-as-code:2.9.2
Verifying Signature
The Image is signed, and its signature can be verified using cosign and the cosign.pub
key that can be downloaded from this release.
cosign verify --key cosign.pub dynatrace/dynatrace-configuration-as-code:2.9.2
Full Changelog: v2.9.1...v2.9.2
2.9.1
What's Changed
🐛 Fixes
Allow deactivating updates of single non-unique-name configs by name
This feature can break the deployment of projects containing several configurations with the same name
You may be affected by this if you're configuration projects contain e.g. several dashboards of the same name, but you only find a single one in the environment after running `monaco deploy.
To deactivate the update logic, set the following environment variable:
MONACO_FEAT_UPDATE_SINGLE_NON_UNIQUE_BY_NAME=false
Deactivating this feature is recommended when using monaco to migrate configurations from one environment to an empty new environment.
This is a temporary workaround! We're working on a fix addressing both edge-cases of having a single configuration you want to update and many configurations that should be created individually.
Other fixes
- Consider environment overrides when generating delete files.
- Do not download Grail buckets that are currently being deleted.
- Remove unnecessary
curl
andjq
dependencies from the Docker container.
🔧 Improvements
Defer loading of JSON templates to the point they are needed
This change, combined with previously released changes, vastly improves Monaco's runtime memory consumption.
For details, refer to the documentation: Monaco hardware requirements
Other improvements
- Allow generating delete files for a specific environment
- Improve some log messages
Container image
⚠️ As of this version the container image only includes the monaco CLI!⚠️
The previously containedcurl
andjq
utilities are removed to ensure the image does not contain unnecessary, potentially vulnerable components.
If you require a container with utility programs, please build your own based on this container image.
Images are available on DockerHub.
The image can be used directly, passing command arguments to the CLI directly or in CI with a monaco
executable available in the container.
docker pull dynatrace/dynatrace-configuration-as-code:2.9.1
Verifying Signature
The Image is signed, and its signature can be verified using cosign and the cosign.pub
key that can be downloaded from this release.
cosign verify --key cosign.pub dynatrace/dynatrace-configuration-as-code:2.9.1
Full Changelog: v2.9.0...v2.9.1
2.9.0
What's Changed
🚀 Features
Support for custom Grail buckets
Custom Grail buckets can now also be managed as configuration as code.
The best way to get started is to download configurations from a Platform environment where you have configured a custom Grail bucket.
You can find the documentation here.
You can also look at this sample project.
Container image
Images are available on DockerHub.
The image can be used directly, passing command arguments to the CLI directly or in CI with a monaco
executable available in the container.
docker pull dynatrace/dynatrace-configuration-as-code:2.9.0
Verifying Signature
The Image is signed, and its signature can be verified using cosign and the cosign.pub
key that can be downloaded from this release.
cosign verify --key cosign.pub dynatrace/dynatrace-configuration-as-code:2.9.0
Full Changelog: v2.8.3...v2.9.0
2.8.3
🔧Improvements
- Added deploymentStatus field to structured logs #1201
- In addition to the existing log file, we're now writing log files only containing errors. This error file will be stored as .logs/[timestamp]-errors.log #1183
- When printing what configs are skipped, the structured logging now includes the child-field.
🐛Fixes
- Vulnerability: Mitigated the possibility of having credentials logged during the execution of a specific Monaco command.
- We're now matching Settings 2.0 key properties correctly. #1178
- We improved our memory footprint by not printing all errors at the end of the Monaco-execution. Errors are printed whenever they happen, and only a summary is printed how many errors happened for each environment at the end. #1185
- We're not reporting correctly whenever the property inside a reference is missing #1194
- We've also fixed several occurrences of unstructured logs inside the structured logging-mode. #1193
Container image
Images are available at https://hub.docker.com/r/dynatrace/dynatrace-configuration-as-code
The image can be used directly, passing command arguments to the CLI directly or in CI with a monaco
executable available in the container.
docker pull dynatrace/dynatrace-configuration-as-code:2.8.3
Verifying Signature
The Image is signed, and its signature can be verified using cosign and the cosign.pub
key that can be downloaded from this release.
cosign verify --key cosign.pub dynatrace/dynatrace-configuration-as-code:2.8.3