1. Answers
  2. Building Local Commands with Infrastructure as Code

How Do I Build Local Commands With Infrastructure as Code?

Introduction

In this tutorial, we will explore how to build and execute local commands using infrastructure as code (IaC). This technique is particularly beneficial for running scripts or commands that need to interact with your local system or CI/CD pipelines. By leveraging IaC, you can ensure that these tasks are seamlessly integrated into your infrastructure workflows, enhancing automation and consistency.

Step-by-Step Guide

  1. Defining a null_resource:
    We begin by defining a null_resource. This acts as a placeholder that allows us to attach provisioners or triggers without managing an actual resource. In this context, it facilitates the execution of local commands.

  2. Using the local-exec Provisioner:
    The local-exec provisioner is used to run commands on your local machine. It is attached to the null_resource to execute the desired command.

  3. Example Code Explanation:

    Below is the code example to illustrate the process:

    import * as pulumi from "@pulumi/pulumi";
    import * as _null from "@pulumi/null";
    import * as command from "@pulumi/command";
    import * as std from "@pulumi/std";
    
    // Define a null_resource to execute a local command
    const exampleCommand = new _null.Resource("example_command", {triggers: {
        always_run: std.timestampOutput({}).apply(invoke => invoke.result),
    }});
    const exampleCommandProvisioner0 = new command.local.Command("exampleCommandProvisioner0", {create: "echo Hello, World!"}, {
        dependsOn: [exampleCommand],
    });
    export const commandOutput = "Local command executed successfully!";
    
    • Provider Definition: This sets up the necessary provider for managing resources.
    • null_resource: Serves as a placeholder for executing local commands.
    • local-exec Provisioner: Executes the specified command on the local system.
    • Triggers: Utilizes timestamp changes to trigger command execution, ensuring the command runs whenever necessary.
    • Output: Provides confirmation that the local command was executed successfully.

Summary

By utilizing a null_resource with a local-exec provisioner, we can effectively run local commands as part of our infrastructure as code setup. This approach allows for seamless integration of local scripts and commands, automating tasks like configuration and initial setup. It ensures that these tasks are executed efficiently and consistently, enhancing the overall workflow in your infrastructure management.

Deploy this code

Want to deploy this code? Sign up for a free Pulumi account to deploy in a few clicks.

Sign up

New to Pulumi?

Want to deploy this code? Sign up with Pulumi to deploy in a few clicks.

Sign up