Learn Idem

Learn Idem

Powered by Idem Project

AWS Instance VPC and Subnet Resources

This example uses Jinja Templating to set user input, and showcases how AWS VPC, Subnet and EC2 Instance can be created with Idem.

{% set requiredLocation = "us-east-1b" %}
{% set requiredState = "present" %}
{% set vmName = "i-00bbf5834a8395949" %}
{% set vmSubnet = "subnet-2c47c006" %}
{% set securityGroup = "sg-0e044e76" %}

my_idem_vpc:
  aws.ec2.vpc.{{ requiredState }}:
    - force_update: True
    - cidr_block_association_set:
      - CidrBlock: 10.0.0.1/24
    - tags:
      - Key: idem_demo
        Value: idem_vpc

my_idem_subnet:
  aws.ec2.subnet.{{ requiredState }}:
    - force_update: True
    - vpc_id: vpc-c96a60ad
    - cidr_block: 172.31.80.0/20
    - tags:
      - Key: idem_demo
        Value: idem_subnet

{{ vmName }}:
  aws.ec2.instance.{{ requiredState }}:
  - force_update: True
  - image_id: ami-07d0cf3af28718ef8
  - instance_type: t2.medium
  - placement:
      AvailabilityZone: {{ requiredLocation }}
      GroupName: ''
      Tenancy: default
  - subnet: {{ vmSubnet }}
  - ebs_optimized: false
  - security_group_ids:
    - {{ securityGroup }}
     {% endraw %}'

The State SLS file can be executed with:

idem state states/aws-test/instance_vpc_subnet.sls

You will see similar output to:

--------
      ID: my_idem_vpc
Function: aws.ec2.vpc.present
  Result: True
 Comment: ("Created aws.ec2.vpc 'my_idem_vpc'",)
 Changes: new:
    ----------
    name:
        my_idem_vpc
    resource_id:
        vpc-02dd1b3d1b133ee74
    instance_tenancy:
        default
    tags:
        |_
          ----------
          Key:
              idem_demo
          Value:
              idem_vpc
    cidr_block_association_set:
        |_
          ----------
          AssociationId:
              vpc-cidr-assoc-054174259def940c9
          CidrBlock:
              10.0.0.0/24
          CidrBlockState:
              ----------
              State:
                  associated
    enable_dns_hostnames:
        False
    enable_dns_support:
        True
--------
      ID: my_idem_subnet
Function: aws.ec2.subnet.present
  Result: True
 Comment: ("Created aws.ec2.subnet 'my_idem_subnet'",)
 Changes: new:
    ----------
    name:
        my_idem_subnet
    resource_id:
        subnet-01dbac229f2b5b1d3
    vpc_id:
        vpc-c96a60ad
    cidr_block:
        172.31.80.0/20
    availability_zone:
        us-east-1a
    map_public_ip_on_launch:
        False
    tags:
        |_
          ----------
          Key:
              idem_demo
          Value:
              idem_subnet
--------
      ID: i-00bbf5834a8395949
Function: aws.ec2.instance.present
  Result: True
 Comment: Created 'i-099f45dc4e9f5c972'
 Changes: 
Last updated on 29 Apr 2022
 Edit on GitHub