Viewing docs for juju 1.3.1
published on Tuesday, Mar 10, 2026 by juju
published on Tuesday, Mar 10, 2026 by juju
Viewing docs for juju 1.3.1
published on Tuesday, Mar 10, 2026 by juju
published on Tuesday, Mar 10, 2026 by juju
A data source representing a Juju Secret.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as juju from "@pulumi/juju";
const myModel = juju.getModel({
name: "default",
});
const mySecretDataSource = myModel.then(myModel => juju.getSecret({
name: "my_secret",
modelUuid: myModel.uuid,
}));
const ubuntu = new juju.Application("ubuntu", {
modelUuid: myModel.then(myModel => myModel.uuid),
name: "ubuntu",
charms: [{
name: "ubuntu",
}],
config: {
secret: mySecretDataSource.then(mySecretDataSource => mySecretDataSource.secretId),
},
});
const mySecretAccess = new juju.AccessSecret("my_secret_access", {
modelUuid: myModel.then(myModel => myModel.uuid),
applications: [ubuntu.name],
secretId: mySecretDataSource.then(mySecretDataSource => mySecretDataSource.secretId),
});
import pulumi
import pulumi_juju as juju
my_model = juju.get_model(name="default")
my_secret_data_source = juju.get_secret(name="my_secret",
model_uuid=my_model.uuid)
ubuntu = juju.Application("ubuntu",
model_uuid=my_model.uuid,
name="ubuntu",
charms=[{
"name": "ubuntu",
}],
config={
"secret": my_secret_data_source.secret_id,
})
my_secret_access = juju.AccessSecret("my_secret_access",
model_uuid=my_model.uuid,
applications=[ubuntu.name],
secret_id=my_secret_data_source.secret_id)
package main
import (
"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
myModel, err := juju.LookupModel(ctx, &juju.LookupModelArgs{
Name: pulumi.StringRef("default"),
}, nil)
if err != nil {
return err
}
mySecretDataSource, err := juju.LookupSecret(ctx, &juju.LookupSecretArgs{
Name: "my_secret",
ModelUuid: myModel.Uuid,
}, nil)
if err != nil {
return err
}
ubuntu, err := juju.NewApplication(ctx, "ubuntu", &juju.ApplicationArgs{
ModelUuid: pulumi.String(myModel.Uuid),
Name: pulumi.String("ubuntu"),
Charms: juju.ApplicationCharmArray{
&juju.ApplicationCharmArgs{
Name: pulumi.String("ubuntu"),
},
},
Config: pulumi.StringMap{
"secret": pulumi.String(mySecretDataSource.SecretId),
},
})
if err != nil {
return err
}
_, err = juju.NewAccessSecret(ctx, "my_secret_access", &juju.AccessSecretArgs{
ModelUuid: pulumi.String(myModel.Uuid),
Applications: pulumi.StringArray{
ubuntu.Name,
},
SecretId: pulumi.String(mySecretDataSource.SecretId),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Juju = Pulumi.Juju;
return await Deployment.RunAsync(() =>
{
var myModel = Juju.GetModel.Invoke(new()
{
Name = "default",
});
var mySecretDataSource = Juju.GetSecret.Invoke(new()
{
Name = "my_secret",
ModelUuid = myModel.Apply(getModelResult => getModelResult.Uuid),
});
var ubuntu = new Juju.Application("ubuntu", new()
{
ModelUuid = myModel.Apply(getModelResult => getModelResult.Uuid),
Name = "ubuntu",
Charms = new[]
{
new Juju.Inputs.ApplicationCharmArgs
{
Name = "ubuntu",
},
},
Config =
{
{ "secret", mySecretDataSource.Apply(getSecretResult => getSecretResult.SecretId) },
},
});
var mySecretAccess = new Juju.AccessSecret("my_secret_access", new()
{
ModelUuid = myModel.Apply(getModelResult => getModelResult.Uuid),
Applications = new[]
{
ubuntu.Name,
},
SecretId = mySecretDataSource.Apply(getSecretResult => getSecretResult.SecretId),
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.juju.JujuFunctions;
import com.pulumi.juju.inputs.GetModelArgs;
import com.pulumi.juju.inputs.GetSecretArgs;
import com.pulumi.juju.Application;
import com.pulumi.juju.ApplicationArgs;
import com.pulumi.juju.inputs.ApplicationCharmArgs;
import com.pulumi.juju.AccessSecret;
import com.pulumi.juju.AccessSecretArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var myModel = JujuFunctions.getModel(GetModelArgs.builder()
.name("default")
.build());
final var mySecretDataSource = JujuFunctions.getSecret(GetSecretArgs.builder()
.name("my_secret")
.modelUuid(myModel.uuid())
.build());
var ubuntu = new Application("ubuntu", ApplicationArgs.builder()
.modelUuid(myModel.uuid())
.name("ubuntu")
.charms(ApplicationCharmArgs.builder()
.name("ubuntu")
.build())
.config(Map.of("secret", mySecretDataSource.secretId()))
.build());
var mySecretAccess = new AccessSecret("mySecretAccess", AccessSecretArgs.builder()
.modelUuid(myModel.uuid())
.applications(ubuntu.name())
.secretId(mySecretDataSource.secretId())
.build());
}
}
resources:
ubuntu:
type: juju:Application
properties:
modelUuid: ${myModel.uuid}
name: ubuntu
charms:
- name: ubuntu
config:
secret: ${mySecretDataSource.secretId}
mySecretAccess:
type: juju:AccessSecret
name: my_secret_access
properties:
modelUuid: ${myModel.uuid}
applications:
- ${ubuntu.name}
secretId: ${mySecretDataSource.secretId}
variables:
myModel:
fn::invoke:
function: juju:getModel
arguments:
name: default
mySecretDataSource:
fn::invoke:
function: juju:getSecret
arguments:
name: my_secret
modelUuid: ${myModel.uuid}
Using getSecret
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getSecret(args: GetSecretArgs, opts?: InvokeOptions): Promise<GetSecretResult>
function getSecretOutput(args: GetSecretOutputArgs, opts?: InvokeOptions): Output<GetSecretResult>def get_secret(model_uuid: Optional[str] = None,
name: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetSecretResult
def get_secret_output(model_uuid: Optional[pulumi.Input[str]] = None,
name: Optional[pulumi.Input[str]] = None,
opts: Optional[InvokeOptions] = None) -> Output[GetSecretResult]func LookupSecret(ctx *Context, args *LookupSecretArgs, opts ...InvokeOption) (*LookupSecretResult, error)
func LookupSecretOutput(ctx *Context, args *LookupSecretOutputArgs, opts ...InvokeOption) LookupSecretResultOutput> Note: This function is named LookupSecret in the Go SDK.
public static class GetSecret
{
public static Task<GetSecretResult> InvokeAsync(GetSecretArgs args, InvokeOptions? opts = null)
public static Output<GetSecretResult> Invoke(GetSecretInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetSecretResult> getSecret(GetSecretArgs args, InvokeOptions options)
public static Output<GetSecretResult> getSecret(GetSecretArgs args, InvokeOptions options)
fn::invoke:
function: juju:index/getSecret:getSecret
arguments:
# arguments dictionaryThe following arguments are supported:
- model_
uuid str - The uuid of the model containing the secret.
- name str
- The name of the secret.
getSecret Result
The following output properties are available:
- id str
- The provider-assigned unique ID for this managed resource.
- model_
uuid str - The uuid of the model containing the secret.
- name str
- The name of the secret.
- secret_
id str - The ID of the secret.
Package Details
- Repository
- juju juju/terraform-provider-juju
- License
- Notes
- This Pulumi package is based on the
jujuTerraform Provider.
Viewing docs for juju 1.3.1
published on Tuesday, Mar 10, 2026 by juju
published on Tuesday, Mar 10, 2026 by juju
