Why is this provider config```providers: - name: ...
# 🤖|ask-kapa
f
@microscopic-river-74022 Why is this provider config
Copy code
providers:
  - name: pulumi
    version: null  # use whatever is in path
    useNewPulumiVarfileSchema: true
  - name: exec
    preInit:
      runScript: mise run get kubecontext
  - name: kubernetes
    dependencies:
      - exec
    preInit:
      runScript: mise run write-kubeconfig
    buildMode: cluster-buildkit
    kubeconfig: ./infra/kubeconfig.yaml
    context: ${providers.exec.outputs.initScript.log}
giving me the following error?
Copy code
❯ garden validate --force-refresh
Validate ✔️ 

ℹ garden                    → Initializing...
ℹ garden                    → Running in environment dev.default in project pulumi
ℹ providers                 → Resolving providers (will force refresh statuses)...
ℹ exec                      → Configuring provider...
ℹ pulumi                    → Configuring provider...
✔ exec                      → Provider configured
✔ pulumi                    → Provider configured
ℹ exec                      → Running pre-init script
✔ pulumi                    → Provider is ready
ℹ exec                      → kubernetes-admin@huudot-dev-cluster
ℹ exec                      → Finished in 28.0ms
ℹ exec                      → Pre-init script completed successfully
✔ exec                      → Provider is ready
✖ providers                 → Failed processing resolve provider kubernetes (took 0.25 sec). This is what happened:

 
project.garden.yml:22
...
21  |     kubeconfig: ./infra/kubeconfig.yaml
22  |     context: ${providers.exec.outputs.initScript.log}
-------------------^
Could not find key initScript under providers.exec.outputs. Available keys: (none).
 
Failed resolving one or more providers:
- kubernetes
m
Please stand by @fresh-angle-76971 as I search the knowledge base. I normally take about 15 seconds or so. :wave:
---------------------- The error occurs because you are referencing
${providers.exec.outputs.initScript.log}
in your
kubernetes
provider's
context
field, but your
exec
provider is using the
preInit.runScript
field, not
initScript
. According to the documentation, the output key
initScript.log
is only populated when you use the
initScript
field, not
preInit.runScript
or
preInit
fields. In your configuration,
preInit.runScript
is set, so
${providers.exec.outputs.initScript.log}
is not available, resulting in the error: > Could not find key initScript under providers.exec.outputs. Available keys: (none). To fix this, you have two options: 1. Switch to using
initScript
(if supported by your Garden version):
Copy code
yaml
   providers:
     - name: exec
       initScript: mise run get kubecontext
This will populate
${providers.exec.outputs.initScript.log}
as expected. 2. If you must use
preInit.runScript
(recommended for newer versions):
The knowledge sources do not document an output variable for
preInit.runScript
analogous to
initScript.log
. Therefore, you cannot reference its output in the same way. You may need to adjust your workflow so that the value you need is written to a known file or environment variable, and reference that directly. Summary: The error is because
${providers.exec.outputs.initScript.log}
is only available when using
initScript
, not
preInit.runScript
. If you use
preInit.runScript
, there is no documented output key you can reference in this way, according to the current knowledge sources [[Reference > Providers > exec – Outputs]()].
If you need to access the output of a script run via
preInit.runScript
, you will need to find another way to pass that value to the
kubernetes
provider, as the template variable you are using will not be populated. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
message has been deleted
f
@microscopic-river-74022 I tried that but it did't work either:
Copy code
garden validate --force-refresh
Validate ✔️ 

ℹ garden                    → Initializing...
ℹ garden                    → Running in environment dev.default in project pulumi
ℹ providers                 → Resolving providers (will force refresh statuses)...
ℹ exec                      → Configuring provider...
ℹ pulumi                    → Configuring provider...
✔ exec                      → Provider configured
✔ pulumi                    → Provider configured
✔ pulumi                    → Provider is ready
⚠ exec                      → Provider is not ready (only checking status)
✖ providers                 → Failed processing resolve provider kubernetes (took 0.13 sec). This is what happened:

project.garden.yml:21
...
20  |     kubeconfig: ./infra/kubeconfig.yaml
21  |     context: ${providers.exec.outputs.initScript.log}
-------------------^
Could not find key initScript under providers.exec.outputs. Available keys: (none).
m
Let me check the knowledge base for you again. One moment! :books:
---------------------- Based on the knowledge sources, the
${providers.exec.outputs.initScript.log}
template variable is only available if you have configured the
initScript
field on the
exec
provider. However, your error message indicates that even when using
initScript
, the key is not available under
providers.exec.outputs
. The documentation confirms that the output key
${providers.exec.outputs.initScript.log}
should be available if
initScript
is set on the
exec
provider [[Reference > Providers > exec – Outputs]()]. If you are still seeing "Available keys: (none)" even with
initScript
configured, there are a few possible reasons: 1. The
initScript
field is not being picked up:
Double-check that your configuration is correct and that the
initScript
field is at the correct indentation and under the correct provider. 2. Garden version mismatch: The documentation notes that
initScript
is deprecated in favor of
preInit.runScript
in newer versions, but the output variable for
preInit.runScript
is not documented. If you are using a version of Garden where
initScript
is deprecated, it may not populate the output variable as expected. 3. No output is produced: If the script does not produce any output, the log may be empty, but the key should still exist.
Summary: If you have set
initScript
on the
exec
provider and still see "Available keys: (none)", it suggests that either the field is not being recognized by your Garden version, or there is a configuration issue. The knowledge sources do not provide further troubleshooting steps or alternative output keys for
preInit.runScript
. Therefore, based on the documentation, there is no other output key you can use for the result of
preInit.runScript
or
initScript
if it is not being populated [[Reference > Providers > exec – Outputs]()]. I'm sorry, but the knowledge sources do not contain enough information to resolve this issue beyond confirming the expected behavior for
initScript
. If you continue to encounter this problem, you may need to consult Garden's support channels or issue tracker for further assistance. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ----------------------
message has been deleted
f
Actually:
initScript
is working with
garden deploy
even though it's not working with
garden validate