Experiment

class Experiment : KotlinCustomResource

Manages a Chaos Studio Experiment.

Example Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.authorization.UserAssignedIdentity;
import com.pulumi.azure.authorization.UserAssignedIdentityArgs;
import com.pulumi.azure.network.VirtualNetwork;
import com.pulumi.azure.network.VirtualNetworkArgs;
import com.pulumi.azure.network.Subnet;
import com.pulumi.azure.network.SubnetArgs;
import com.pulumi.azure.network.NetworkInterface;
import com.pulumi.azure.network.NetworkInterfaceArgs;
import com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;
import com.pulumi.azure.compute.LinuxVirtualMachine;
import com.pulumi.azure.compute.LinuxVirtualMachineArgs;
import com.pulumi.azure.compute.inputs.LinuxVirtualMachineOsDiskArgs;
import com.pulumi.azure.compute.inputs.LinuxVirtualMachineSourceImageReferenceArgs;
import com.pulumi.azure.chaosstudio.Target;
import com.pulumi.azure.chaosstudio.TargetArgs;
import com.pulumi.azure.chaosstudio.Capability;
import com.pulumi.azure.chaosstudio.CapabilityArgs;
import com.pulumi.azure.chaosstudio.Experiment;
import com.pulumi.azure.chaosstudio.ExperimentArgs;
import com.pulumi.azure.chaosstudio.inputs.ExperimentIdentityArgs;
import com.pulumi.azure.chaosstudio.inputs.ExperimentSelectorArgs;
import com.pulumi.azure.chaosstudio.inputs.ExperimentStepArgs;
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) {
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("example")
.location("westeurope")
.build());
var exampleUserAssignedIdentity = new UserAssignedIdentity("exampleUserAssignedIdentity", UserAssignedIdentityArgs.builder()
.resourceGroupName(example.name())
.location(example.location())
.name("example")
.build());
var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
.name("example")
.addressSpaces("10.0.0.0/16")
.location(example.location())
.resourceGroupName(example.name())
.build());
var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
.name("internal")
.resourceGroupName(example.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("10.0.2.0/24")
.build());
var exampleNetworkInterface = new NetworkInterface("exampleNetworkInterface", NetworkInterfaceArgs.builder()
.name("example")
.location(example.location())
.resourceGroupName(example.name())
.ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()
.name("example")
.subnetId(exampleSubnet.id())
.privateIpAddressAllocation("Dynamic")
.build())
.build());
var exampleLinuxVirtualMachine = new LinuxVirtualMachine("exampleLinuxVirtualMachine", LinuxVirtualMachineArgs.builder()
.name("example")
.resourceGroupName(example.name())
.location(example.location())
.size("Standard_F2")
.adminUsername("adminuser")
.adminPassword("example")
.disablePasswordAuthentication(false)
.networkInterfaceIds(exampleNetworkInterface.id())
.osDisk(LinuxVirtualMachineOsDiskArgs.builder()
.caching("ReadWrite")
.storageAccountType("Standard_LRS")
.build())
.sourceImageReference(LinuxVirtualMachineSourceImageReferenceArgs.builder()
.publisher("Canonical")
.offer("0001-com-ubuntu-server-jammy")
.sku("22_04-lts")
.version("latest")
.build())
.build());
var exampleTarget = new Target("exampleTarget", TargetArgs.builder()
.location(example.location())
.targetResourceId(exampleLinuxVirtualMachine.id())
.targetType("Microsoft-VirtualMachine")
.build());
var exampleCapability = new Capability("exampleCapability", CapabilityArgs.builder()
.chaosStudioTargetId(exampleTarget.id())
.capabilityType("Shutdown-1.0")
.build());
var exampleExperiment = new Experiment("exampleExperiment", ExperimentArgs.builder()
.location(example.location())
.name("example")
.resourceGroupName(example.name())
.identity(ExperimentIdentityArgs.builder()
.type("SystemAssigned")
.build())
.selectors(ExperimentSelectorArgs.builder()
.name("Selector1")
.chaosStudioTargetIds(exampleTarget.id())
.build())
.steps(ExperimentStepArgs.builder()
.name("example")
.branches(ExperimentStepBranchArgs.builder()
.name("example")
.actions(ExperimentStepBranchActionArgs.builder()
.urn(exampleCapability.capabilityUrn())
.selectorName("Selector1")
.parameters(Map.of("abruptShutdown", "false"))
.actionType("continuous")
.duration("PT10M")
.build())
.build())
.build())
.build());
}
}

Import

Chaos Studio Experiments can be imported using the resource id, e.g.

$ pulumi import azure:chaosstudio/experiment:Experiment example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Chaos/experiments/experiment1

Properties

Link copied to clipboard
val id: Output<String>
Link copied to clipboard

A identity block as defined below.

Link copied to clipboard
val location: Output<String>

The Azure Region where the Chaos Studio Experiment should exist. Changing this forces a new Chaos Studio Experiment to be created.

Link copied to clipboard
val name: Output<String>

The name which should be used for this Chaos Studio Experiment. Changing this forces a new Chaos Studio Experiment to be created.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

The name of the Resource Group where the Chaos Studio Experiment should exist. Changing this forces a new Chaos Studio Experiment to be created.

Link copied to clipboard

One or more selectors blocks as defined below.

Link copied to clipboard
val steps: Output<List<ExperimentStep>>

One or more steps blocks as defined below.

Link copied to clipboard
val urn: Output<String>