diff --git a/SUMMARY.md b/SUMMARY.md index 13d843b6..8dc616aa 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -15,6 +15,7 @@ * [On-premise agent](how-to/on-premise-agent/README.md) * [Configure an agent with Bitbucket access](how-to/on-premise-agent/configure-bitbucket-to-agent.md) * [Configure an agent with GitHub](how-to/on-premise-agent/configure-an-agent-with-github.md) + * [Configure an agent with Artifactory access](how-to/on-premise-agent/configure-an-agent-with-artifactory-access.md) * [🚀 Accessing the Moderne API](how-to/accessing-the-moderne-api.md) ## Releases diff --git a/how-to/on-premise-agent/README.md b/how-to/on-premise-agent/README.md index 3dbb312e..506851fb 100644 --- a/how-to/on-premise-agent/README.md +++ b/how-to/on-premise-agent/README.md @@ -36,11 +36,6 @@ docker run \ -e MODERNE_AGENT_API_GATEWAY_RSOCKET_URI=https://api.tenant.moderne.io/rsocket \ -e MODERNE_AGENT_TOKEN=W43qp4h952T4w2qV \ -e MODERNE_AGENT_CRYPTO_SYMMETRICKEY=546A576E5A7234753778217A25432A462D4A614E645267556B58703273357638 \ --e MODERNE_AGENT_ARTIFACTORY_0_URL=https://myartifactory.example.com/artifactory/ \ --e MODERNE_AGENT_ARTIFACTORY_0_USERNAME=admin \ --e MODERNE_AGENT_ARTIFACTORY_0_PASSWORD=password \ --e MODERNE_AGENT_ARTIFACTORY_0_ASTSQUERYFILTERS_0='{"name":{"$match":"*-ast.jar"}}' \ --e MODERNE_AGENT_ARTIFACTORY_0_ASTSQUERYFILTERS_1='{"repo":{"$eq":"example-maven"}}' \ ${MODERNE_AGENT_IMAGE_NAME} ``` {% endtab %} @@ -52,10 +47,6 @@ The agent application requires several arguments: * `--moderne.agent.token` - Moderne SaaS agent connection token, provided by Moderne * `--moderne.agent.crypto.symmetricKey` - 256 bit AES encryption key, hex encoded * example openssl command to generate: `openssl enc -aes-256-cbc -k secret -P` (use key from the output) -* `--moderne.agent.artifactory[0].url` - Artifactory URL -* `--moderne.agent.artifactory[0].username` - username used to connect to Artifactory, requires permission to run AQL queries -* `--moderne.agent.artifactory[0].password` - password used to connect to Artifactory -* `--moderne.agent.artifactory[0].astQueryFilters[0]` - AQL query fragment used to select AST artifacts to send to Moderne Note: system properties can be used in place of arguments. As an example, use `-Dmoderne.agent.token={token_value}` as an argument instead of `--moderne.agent.token={token_value}` as an argument. @@ -65,12 +56,7 @@ Example (note that agent token and symmetric key are random examples) java -jar moderne-agent-{version}.jar \ --moderne.agent.api-gateway-roscket-uri==https://api.tenant.moderne.io/rsocket \ --moderne.agent.token=W43qp4h952T4w2qV \ ---moderne.agent.crypto.symmetricKey=546A576E5A7234753778217A25432A462D4A614E645267556B58703273357638 \ ---moderne.agent.artifactory[0].url=https://myartifactory.example.com/artifactory/ \ ---moderne.agent.artifactory[0].username=admin \ ---moderne.agent.artifactory[0].password=password \ ---moderne.agent.artifactory[0].astQueryFilters[0]='{"name":{"$match":"*-ast.jar"}}' \ ---moderne.agent.artifactory[0].astQueryFilters[1]='{"repo":{"$eq":"example-maven"}}' +--moderne.agent.crypto.symmetricKey=546A576E5A7234753778217A25432A462D4A614E645267556B58703273357638 ``` {% endtab %} {% endtabs %} @@ -86,34 +72,3 @@ To upgrade your version of the OCI container, just follow the instructions above To update your version of the Executable JAR, change the numbered version of {agent} in the instructions above to the latest on [the releases page](../../releases/releases.md). {% endtab %} {% endtabs %} - -### Advanced Usage - -#### Hashicorp Vault - -The Moderne agent optionally fetches secret configuration from Vault. It reads from a KV secret engine named "secret", and reads secret keys at path "moderne-agent". To configure the secret key/value pairs, follow the following procedure: - -1. In the Vault management web application, go to Secrets. If there's not already a KV engine named "secret", create it. -2. In the "secret" KV secrets engine, create a new secret using "moderne-agent" as the "Path for this secret". -3. Add the following keys to the moderne-agent secret: - * `moderne.agent.token` - Moderne SaaS agent connection token, provided by Moderne - * `moderne.agent.crypto.symmetricKey` - 256 bit AES encryption key, hex encoded - * `moderne.agent.artifactory[0].password` - Artifactory user password - -{% tabs %} -{% tab title="OCI Container" %} -To enable vault integration in the agent, omit environment variables that match keys specified in vault, and specify the following additional environment variables for the agent container: - -* `SPRING_PROFILES_ACTIVE` - `vault` -* `SPRING_CLOUD_VAULT_URI` - Vault URI used to retrieve the secret configuration properties below -* `SPRING_CLOUD_VAULT_TOKEN` - Vault authentication token -{% endtab %} - -{% tab title="Executable JAR" %} -To enable vault integration in the agent, omit arguments that match keys specified in vault, and specify the following additional arguments for the agent application: - -* `spring.profiles.active` - vault -* `spring.cloud.vault.uri` `SPRING_CLOUD_VAULT_URI` - Vault URI used to retrieve the secret configuration properties below -* `SPRING_CLOUD_VAULT_TOKEN` - Vault authentication token -{% endtab %} -{% endtabs %} diff --git a/how-to/on-premise-agent/configure-an-agent-with-artifactory-access.md b/how-to/on-premise-agent/configure-an-agent-with-artifactory-access.md new file mode 100644 index 00000000..c0e1649b --- /dev/null +++ b/how-to/on-premise-agent/configure-an-agent-with-artifactory-access.md @@ -0,0 +1,70 @@ +# Configure an agent with Artifactory access + +Configuring your Moderne Agent instance with Artifactory is a prerequisite for viewing recipe results within the Moderne application.\ + + +This guide will walk you through configuring the Moderne on-premise agent connection to Artifactory. + +**Prerequisites** + +* Username and password for an Artifactory user that is allowed to issue the relevant AQL queries that will be configured + +{% tabs %} +{% tab title="OCI Container" %} +The following arguments must be provided in addition to the arguments provided in [.](./ "mention"). + + + +You can configure multiple Artifactory servers by including multiple entries with different indices. Within a given Artifactory server configuration, you can configure mulitple AST query filters by including multiple entries with difference indices. + +* `MODERNE_AGENT_ARTIFACTORY_0_URL` - Artifactory URL +* `MODERNE_AGENT_ARTIFACTORY_0_USERNAME` - username used to connect to Artifactory, requires permission to run AQL queries +* `MODERNE_AGENT_ARTIFACTORY_0_PASSWORD` - password used to connect to Artifactory +* `MODERNE_AGENT_ARTIFACTORY_0_ASTSQUERYFILTERS_0` - AQL query fragment used to select AST artifacts to send to Moderne + + + +Example + +``` +docker run \ +... +-e MODERNE_AGENT_ARTIFACTORY_0_URL=https://myartifactory.example.com/artifactory/ \ +-e MODERNE_AGENT_ARTIFACTORY_0_USERNAME=admin \ +-e MODERNE_AGENT_ARTIFACTORY_0_PASSWORD=password \ +-e MODERNE_AGENT_ARTIFACTORY_0_ASTSQUERYFILTERS_0='{"name":{"$match":"*-ast.jar"}}' \ +-e MODERNE_AGENT_ARTIFACTORY_0_ASTSQUERYFILTERS_1='{"repo":{"$eq":"example-maven"}}' \ +... +``` +{% endtab %} + +{% tab title="Executeable JAR" %} +The following arguments must be provided in addition to the arguments provided in [.](./ "mention"). + + + +You can configure multiple Artifactory servers by including multiple entries with different indices. Within a given Artifactory server configuration, you can configure mulitple AST query filters by including multiple entries with difference indices. + + + +* `--moderne.agent.artifactory[0].url` - Artifactory URL +* `--moderne.agent.artifactory[0].username` - username used to connect to Artifactory, requires permission to run AQL queries +* `--moderne.agent.artifactory[0].password` - password used to connect to Artifactory +* `--moderne.agent.artifactory[0].astQueryFilters[0]` - AQL query fragment used to select AST artifacts to send to Moderne + + + +Example + +``` +java -jar moderne-agent-{version}.jar \ +... +--moderne.agent.artifactory[0].url=https://myartifactory.example.com/artifactory/ \ +--moderne.agent.artifactory[0].username=admin \ +--moderne.agent.artifactory[0].password=password \ +--moderne.agent.artifactory[0].astQueryFilters[0]='{"name":{"$match":"*-ast.jar"}}' \ +--moderne.agent.artifactory[0].astQueryFilters[1]='{"repo":{"$eq":"example-maven"}}' \ +... +``` +{% endtab %} +{% endtabs %}