https://github.com/dynatrace-oss/dt-cli
Command line tool for Dynatrace
https://github.com/dynatrace-oss/dt-cli
cli dynatrace extensions
Last synced: 9 months ago
JSON representation
Command line tool for Dynatrace
- Host: GitHub
- URL: https://github.com/dynatrace-oss/dt-cli
- Owner: dynatrace-oss
- License: apache-2.0
- Created: 2021-04-09T07:54:32.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-11-13T17:11:52.000Z (over 1 year ago)
- Last Synced: 2025-06-16T08:07:59.225Z (about 1 year ago)
- Topics: cli, dynatrace, extensions
- Language: Python
- Homepage: https://pypi.org/project/dt-cli/
- Size: 369 KB
- Stars: 17
- Watchers: 5
- Forks: 12
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# dt-cli — Dynatrace developer's toolbox
Dynatrace CLI is a command line utility that assists in signing, building and uploading
extensions for Dynatrace Extension Framework 2.0.
## Features
* Work with Extensions 2.0
* Build and sign extensions from source
* Generate CA certificates for development
* Generate development certificates for extension signing
* Validate and upload extension to Dynatrace
* *(planned) Perform various API requests from command line*
## FAQ
**What's the difference between monaco and dt-cli?**
* [Monaco](https://github.com/Dynatrace/dynatrace-configuration-as-code) is a **mon**itoring configuration **a**s **co**de solution that allows you to configure Dynatrace environment using GitOps approach. It follows a declarative approach: define what you need and the tool will ensure the correct configuration.
* `dt` command line, on the other hand, is a tool for performing imperative step-by-step configuration. You explicitly invoke commands to modify the state.
## Installation
```shell
pip install dt-cli
```
## Usage
1. *(optional) If you don't already have a developer certificate*
1. Generate CA key and certificate
```shell
$ dt ext genca
CA private key passphrase []:
Repeat for confirmation:
Generating CA...
Wrote CA private key: ./ca.key
Wrote CA certificate: ./ca.pem
```
1. Generate developer key and certificate from the CA
```shell
$ dt ext generate-developer-pem --ca-crt ca.pem --ca-key ca.key -o dev.pem
Name: Ext
Loading CA private key ca.key
Loading CA certificate ca.pem
Generating developer certificate...
Wrote developer certificate: dev.pem
Wrote developer private key: dev.pem
```
1. Upload your CA certificate to the Dynatrace credential vault
See: [Add your root certificate to the Dynatrace credential vault](https://www.dynatrace.com/support/help/extend-dynatrace/extensions20/sign-extension/#add-your-root-certificate-to-the-dynatrace-credential-vault)
1. Upload your CA certificate to OneAgent or ActiveGate hosts that will run your extension
See: [Uplaod your root certificate to OneAgent or ActiveGate](https://docs.dynatrace.com/docs/extend-dynatrace/extensions20/sign-extension#upload)
1. Build and sign the extension
```shell
$ dt ext assemble
Building extension.zip from extension/
Adding file: extension/dashboards/overview_dashboard.json as dashboards/overview_dashboard.json
Adding file: extension/extension.yaml as extension.yaml
Adding file: extension/activationSchema.json as activationSchema.json
$ dt ext sign --key dev.pem
Successfully signed the extension bundle at bundle.zip
```
1. *(optional) Validate the assembled and signed bundle with your Dynatrace tenant*
```shell
$ dt ext validate bundle.zip --tenant-url https://.live.dynatrace.com --api-token
Extension validation successful!
```
1. Upload the extension to your Dynatrace tenant
```shell
$ dt ext upload bundle.zip --tenant-url https://.live.dynatrace.com --api-token
Extension upload successful!
```
## Using dt-cli from your Python code
You may want to use some commands implemented by `dt-cli` directly in your Python code, e.g. to automatically sign your extension in a CI environment.
Here's an example of building an extension programatically, it assumes `dtcli` package is already installed and available in your working environment.
```python
from dtcli import building
building.build_extension(
extension_dir_path = './extension',
extension_zip_path = './extension.zip',
extension_zip_sig_path = './extension.zip.sig',
target_dir_path = './dist',
certificate_file_path = './developer.crt',
private_key_file_path = './developer.key',
dev_passphrase=None,
keep_intermediate_files=False,
)
```
## Development
See our [CONTRIBUTING](CONTRIBUTING.md) guidelines and instructions.
## Contributions
You are welcome to contribute using Pull Requests to the respective
repository. Before contributing, please read our
[Code of Conduct](https://github.com/dynatrace-oss/dt-cli/blob/main/CODE_OF_CONDUCT.md).
## License
`dt-cli` is an Open Source Project. Please see
[LICENSE](https://github.com/dynatrace-oss/dt-cli/blob/main/LICENSE) for more information.