|
| 1 | +package webserver; |
| 2 | + |
| 3 | +import com.pulumi.Context; |
| 4 | +import com.pulumi.Pulumi; |
| 5 | +import com.pulumi.aws.ec2.Ec2Functions; |
| 6 | +import com.pulumi.aws.ec2.Instance; |
| 7 | +import com.pulumi.aws.ec2.InstanceArgs; |
| 8 | +import com.pulumi.aws.ec2.SecurityGroup; |
| 9 | +import com.pulumi.aws.ec2.SecurityGroupArgs; |
| 10 | +import com.pulumi.aws.ec2.inputs.GetAmiArgs; |
| 11 | +import com.pulumi.aws.ec2.inputs.GetAmiFilter; |
| 12 | +import com.pulumi.aws.ec2.inputs.SecurityGroupIngressArgs; |
| 13 | +import com.pulumi.aws.ec2.outputs.GetAmiResult; |
| 14 | +import com.pulumi.core.Output; |
| 15 | + |
| 16 | +import java.util.List; |
| 17 | +import java.util.Map; |
| 18 | + |
| 19 | +public class App { |
| 20 | + public static void main(String[] args) { |
| 21 | + Pulumi.run(App::stack); |
| 22 | + } |
| 23 | + |
| 24 | + public static void stack(Context ctx) { |
| 25 | + final var ami = Ec2Functions.getAmi(GetAmiArgs.builder() |
| 26 | + .filters(GetAmiFilter.builder() |
| 27 | + .name("name") |
| 28 | + .values("amzn-ami-hvm-*-x86_64-ebs") |
| 29 | + .build()) |
| 30 | + .owners("137112412989") |
| 31 | + .mostRecent(true) |
| 32 | + .build() |
| 33 | + ).thenApply(GetAmiResult::id); |
| 34 | + |
| 35 | + final var group = new SecurityGroup("web-secgrp", SecurityGroupArgs.builder() |
| 36 | + .ingress(SecurityGroupIngressArgs.builder() |
| 37 | + .protocol("tcp") |
| 38 | + .fromPort(80) |
| 39 | + .toPort(80) |
| 40 | + .cidrBlocks("0.0.0.0/0") |
| 41 | + .build()) |
| 42 | + .build() |
| 43 | + ); |
| 44 | + |
| 45 | + // (optional) create a simple web server using the startup |
| 46 | + // script for the instance |
| 47 | + |
| 48 | + final var userData = |
| 49 | + "#!/bin/bash\n" + |
| 50 | + "echo \"Hello, World!\" > index.html\n" + |
| 51 | + "nohup python -m SimpleHTTPServer 80 &"; |
| 52 | + |
| 53 | + final var server = new Instance("web-server-www", InstanceArgs.builder() |
| 54 | + .tags(Map.of("Name", "web-server-www")) |
| 55 | + .instanceType(Output.ofRight(com.pulumi.aws.ec2.enums.InstanceType.T2_Micro)) |
| 56 | + .vpcSecurityGroupIds(group.getId().applyValue(List::of)) |
| 57 | + .ami(Output.of(ami)) |
| 58 | + .userData(userData) |
| 59 | + .build() |
| 60 | + ); |
| 61 | + |
| 62 | + ctx.export("publicIp", server.publicIp()); |
| 63 | + ctx.export("publicHostName", server.publicDns()); |
| 64 | + } |
| 65 | +} |
0 commit comments