Repository navigation
Expand file tree
/
Copy pathExample.hs
More file actions
80 lines (68 loc) · 1.92 KB
/
Copy pathExample.hs
File metadata and controls
80 lines (68 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Kerry.Example (
example
) where
import qualified Data.Map as Map
import Kerry
import Kerry.Builder.AmazonEC2 (AWS(..), Credentials(..))
import Kerry.Builder.AmazonEC2 (SourceAmi(..))
import Kerry.Builder.AmazonEC2 (blockDeviceMapping)
import Kerry.Builder.AmazonEC2 (EBS(..))
import Kerry.Provisioner.Shell (ShellType(..), shell)
import qualified Kerry.Engine as F
import Kerry.Internal.Prelude
example :: Packer
example =
Packer {
variables = [
UserVariable "name" "example-packer"
]
, builders = [
Builder (AmazonEBSBuilder $ aws builder) Nothing ssh
]
, provisioners = [
shellProvisioner
]
, postProcessors = []
}
ssh :: Communicator
ssh =
SSH $ defaultSSHCommunicator "ec2-user"
aws :: a -> AWS a
aws b =
AWS {
awsRegion = "us-west-2"
, awsCredentials = EnvironmentVariables
, awsBuilder = b
}
builder :: EBS
builder =
EBS {
ebsAmiName = "test"
, ebsSourceAmi = SourceAmiId "ami-fred"
, ebsInstanceType = "m4.xlarge"
, ebsAmiDescription = Nothing
, ebsAmiRegions = Nothing
, ebsAmiUsers = Nothing
, ebsAssociatePublicIpAddress = Just True
, ebsAvailabilityZone = Nothing
, ebsIAMInstanceProfile = Just "iam-fred"
, ebsInsecureSkipTLSVerify = Nothing
, ebsLaunchBlockDeviceMappings = [
blockDeviceMapping "/dev/xvda" "gp2" 200 True
]
, ebsRunTags = Map.fromList [
("name", F.renderRawTemplate $ F.user "name")
]
, ebsSubnetId = Nothing
, ebsTags = Map.fromList [
("created", F.renderRawTemplate F.timestamp)
]
, ebsVpcId = Nothing
}
shellProvisioner :: Provisioner
shellProvisioner =
provisioner . ShellProvisioner . shell $
Inline ["echo foo"]