Skip to content

Instantly share code, notes, and snippets.

@ObjectIsAdvantag
Created December 1, 2015 13:41
Show Gist options
  • Save ObjectIsAdvantag/a996f902608a7ab59983 to your computer and use it in GitHub Desktop.
Save ObjectIsAdvantag/a996f902608a7ab59983 to your computer and use it in GitHub Desktop.
{
"Outputs": {
"PublicSlaveDnsAddress": {
"Description": "Public slaves",
"Value": {
"Fn::GetAtt": [
"PublicSlaveLoadBalancer",
"DNSName"
]
}
},
"DnsAddress": {
"Description": "Mesos Master",
"Value": {
"Fn::GetAtt": [
"ElasticLoadBalancer",
"DNSName"
]
}
}
},
"Mappings": {
"RegionToAmi": {
"ap-northeast-1": {
"stable": "ami-6c5ac56c"
},
"sa-east-1": {
"stable": "ami-3396012e"
},
"eu-central-1": {
"stable": "ami-840a0899"
},
"ap-southeast-2": {
"stable": "ami-f5ace5cf"
},
"ap-southeast-1": {
"stable": "ami-46819614"
},
"us-west-2": {
"stable": "ami-ed8b90dd"
},
"us-west-1": {
"stable": "ami-2b29ee6f"
},
"us-gov-west-1": {
"stable": "ami-796a085a"
},
"us-east-1": {
"stable": "ami-05783d60"
},
"eu-west-1": {
"stable": "ami-eb97bc9c"
}
},
"Parameters": {
"PrivateSubnetRange": {
"default": "10.0.0.0/22"
},
"StackCreationTimeout": {
"default": "PT30M"
},
"PublicSubnetRange": {
"default": "10.0.4.0/22"
},
"SlaveInstanceType": {
"default": "m3.xlarge"
},
"PublicSlaveInstanceType": {
"default": "m3.xlarge"
},
"MasterInstanceType": {
"default": "m3.xlarge"
},
"VPCSubnetRange": {
"default": "10.0.0.0/16"
}
},
"NATAmi": {
"ap-northeast-1": {
"default": "ami-55c29e54"
},
"sa-east-1": {
"default": "ami-b972dba4"
},
"eu-central-1": {
"default": "ami-204c7a3d"
},
"ap-southeast-2": {
"default": "ami-996402a3"
},
"ap-southeast-1": {
"default": "ami-b082dae2"
},
"us-west-1": {
"default": "ami-2b2b296e"
},
"us-west-2": {
"default": "ami-bb69128b"
},
"us-east-1": {
"default": "ami-4c9e4b24"
},
"eu-west-1": {
"default": "ami-3760b040"
}
}
},
"Resources": {
"PublicSlaveIngressFour": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"CidrIp": "0.0.0.0/0",
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "21",
"IpProtocol": "udp",
"FromPort": "0"
}
},
"OutboundNetworkAclEntry": {
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"CidrBlock": "0.0.0.0/0",
"RuleAction": "allow",
"NetworkAclId": {
"Ref": "PublicNetworkAcl"
},
"PortRange": {
"To": "65535",
"From": "0"
},
"Egress": "true",
"Protocol": "-1",
"RuleNumber": "100"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "37c6e556-89b0-4753-9e37-f8db2a23ec83"
}
}
},
"Vpc": {
"Type": "AWS::EC2::VPC",
"Properties": {
"CidrBlock": {
"Fn::FindInMap": [
"Parameters",
"VPCSubnetRange",
"default"
]
},
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Public",
"Key": "Network"
}
],
"EnableDnsHostnames": "true",
"EnableDnsSupport": "true"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "10319917-4a50-4ae9-a87e-c5f3fae67ddf"
}
}
},
"PublicSubnetNetworkAclAssociation": {
"Type": "AWS::EC2::SubnetNetworkAclAssociation",
"Properties": {
"NetworkAclId": {
"Ref": "PublicNetworkAcl"
},
"SubnetId": {
"Ref": "PublicSubnet"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "e41f1425-c2c4-4f8d-b45e-d5c36b96c737"
}
}
},
"MasterInstanceProfile": {
"Type": "AWS::IAM::InstanceProfile",
"Properties": {
"Roles": [
{
"Ref": "MasterRole"
}
],
"Path": "/"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "55a5feed-d2c6-4dc9-83cf-94936ec806fe"
}
}
},
"SlaveToMasterIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "MasterSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "SlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "60db1cc3-c84b-42d4-bffa-d3689c7220a2"
}
}
},
"PublicSlaveToMasterIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "MasterSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "d76fcb83-c82d-4437-874c-a82b0ed0c49a"
}
}
},
"PublicNetworkAcl": {
"Type": "AWS::EC2::NetworkAcl",
"Properties": {
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Public",
"Key": "Network"
}
],
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "530df17a-6946-42d9-90fe-10d4120e60a6"
}
}
},
"PrivateInboundNetworkAclEntry": {
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"CidrBlock": "0.0.0.0/0",
"RuleAction": "allow",
"NetworkAclId": {
"Ref": "PrivateNetworkAcl"
},
"PortRange": {
"To": "65535",
"From": "0"
},
"Egress": "false",
"Protocol": "-1",
"RuleNumber": "100"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "84006722-d7ed-446e-a2eb-116a5b3c4f61"
}
}
},
"MasterLaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"ImageId": {
"Fn::FindInMap": [
"RegionToAmi",
{
"Ref": "AWS::Region"
},
"stable"
]
},
"InstanceType": {
"Fn::FindInMap": [
"Parameters",
"MasterInstanceType",
"default"
]
},
"SecurityGroups": [
{
"Ref": "MasterSecurityGroup"
},
{
"Ref": "AdminSecurityGroup"
}
],
"BlockDeviceMappings": [
{
"VirtualName": "ephemeral0",
"DeviceName": "/dev/sdb"
}
],
"KeyName": {
"Ref": "KeyName"
},
"IamInstanceProfile": {
"Ref": "MasterInstanceProfile"
},
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#cloud-config\n",
"\"coreos\":\n",
" \"units\":\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" etcd.service\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" update-engine.service\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" locksmithd.service\n",
" - \"command\": |-\n",
" stop\n",
" \"name\": |-\n",
" systemd-resolved.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |\n",
" [Unit]\n",
" Description=Formats the /var/lib ephemeral drive\n",
" Before=var-lib.mount dbus.service\n",
" [Service]\n",
" Type=oneshot\n",
" RemainAfterExit=yes\n",
" ExecStart=/bin/bash -c \"(blkid -t TYPE=ext4 | grep xvdb) || (/usr/sbin/mkfs.ext4 -F /dev/xvdb)\"\n",
" \"name\": |-\n",
" format-var-lib-ephemeral.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Mount /var/lib\n",
" Before=dbus.service\n",
" [Mount]\n",
" What=/dev/xvdb\n",
" Where=/var/lib\n",
" Type=ext4\n",
" \"name\": |-\n",
" var-lib.mount\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |\n",
" [Unit]\n",
" Before=dcos.target\n",
" [Service]\n",
" Type=oneshot\n",
" ExecStartPre=/usr/bin/mkdir -p /etc/profile.d\n",
" ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh\n",
" \"name\": |-\n",
" dcos-link-env.service\n",
" - \"content\": |\n",
" [Unit]\n",
" Description=Download the DCOS\n",
" After=network-online.target\n",
" Wants=network-online.target\n",
" ConditionPathExists=!/opt/mesosphere/\n",
" [Service]\n",
" EnvironmentFile=/etc/mesosphere/setup-flags/bootstrap-id\n",
" Type=oneshot\n",
" ExecStartPre=/usr/bin/curl -f --retry 20 -C - -o /tmp/bootstrap.tar.xz https://downloads.mesosphere.com/dcos/stable/bootstrap/${BOOTSTRAP_ID}.bootstrap.tar.xz\n",
" ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere\n",
" ExecStart=/usr/bin/tar -axf /tmp/bootstrap.tar.xz -C /opt/mesosphere\n",
" ExecStartPost=-/usr/bin/rm -f /tmp/bootstrap.tar.xz\n",
" \"name\": |-\n",
" dcos-download.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Prep the Pkgpanda working directories for this host.\n",
" Requires=dcos-download.service\n",
" After=dcos-download.service\n",
" [Service]\n",
" Type=oneshot\n",
" EnvironmentFile=/opt/mesosphere/environment\n",
" ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd\n",
" [Install]\n",
" WantedBy=multi-user.target\n",
" \"enable\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" dcos-setup.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Signal CloudFormation Success\n",
" After=dcos.target\n",
" Requires=dcos.target\n",
" ConditionPathExists=!/var/lib/dcos-cfn-signal\n",
" [Service]\n",
" Type=simple\n",
" Restart=on-failure\n",
" StartLimitInterval=0\n",
" RestartSec=15s\n",
" ExecStartPre=/usr/bin/docker pull mbabineau/cfn-bootstrap\n",
" ExecStartPre=/bin/ping -c1 leader.mesos\n",
" ExecStartPre=/usr/bin/docker run --rm mbabineau/cfn-bootstrap \\\n",
" cfn-signal -e 0 \\\n",
" --resource MasterServerGroup \\\n",
" --stack ",
{
"Ref": "AWS::StackName"
},
" \\",
"\n",
" --region ",
{
"Ref": "AWS::Region"
},
"",
"\n",
" ExecStart=/usr/bin/touch /var/lib/dcos-cfn-signal\n",
" \"name\": |-\n",
" dcos-cfn-signal.service\n",
" \"update\":\n",
" \"reboot-strategy\": |-\n",
" off\n",
"\"write_files\":\n",
"- \"content\": |\n",
" {\n",
" \"environment\": {\n",
" \"PROVIDER\": \"aws\"\n",
" }\n",
" }\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/pkginfo.json\n",
"- \"content\": |\n",
" AWS_REGION=",
{
"Ref": "AWS::Region"
},
"",
"\n",
" AWS_STACK_ID=",
{
"Ref": "AWS::StackId"
},
"",
"\n",
" AWS_STACK_NAME=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" AWS_ACCESS_KEY_ID=",
{
"Ref": "HostKeys"
},
"",
"\n",
" AWS_SECRET_ACCESS_KEY=",
{
"Fn::GetAtt": [
"HostKeys",
"SecretAccessKey"
]
},
"",
"\n",
" ZOOKEEPER_CLUSTER_SIZE=1\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/cloudenv\n",
"- \"content\": |\n",
" MESOS_CLUSTER=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/mesos-master-provider\n",
"- \"content\": |\n",
" EXHIBITOR_BACKEND=AWS_S3\n",
" AWS_REGION=",
{
"Ref": "AWS::Region"
},
"",
"\n",
" AWS_S3_BUCKET=",
{
"Ref": "ExhibitorS3Bucket"
},
"",
"\n",
" AWS_S3_PREFIX=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/exhibitor\n",
"- \"content\": |\n",
" com.netflix.exhibitor.s3.access-key-id=",
{
"Ref": "HostKeys"
},
"",
"\n",
" com.netflix.exhibitor.s3.access-secret-key=",
{
"Fn::GetAtt": [
"HostKeys",
"SecretAccessKey"
]
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/exhibitor.properties\n",
"- \"content\": |-\n",
" MASTER_SOURCE=exhibitor\n",
" EXHIBITOR_ADDRESS=",
{
"Fn::GetAtt": [
"InternalMasterLoadBalancer",
"DNSName"
]
},
"",
"\n",
" RESOLVERS=10.0.0.2\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/dns_config\n",
"- \"content\": |\n",
" https://downloads.mesosphere.com/dcos/stable\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/repository-url\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": |\n",
" BOOTSTRAP_ID=6b0e032309ca50105edf3871182b8c9c1b27837e\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/bootstrap-id\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": |-\n",
" [\"dcos-config--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\", \"dcos-detect-ip--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\", \"dcos-metadata--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\"]\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/cluster-packages.json\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": \"\"\n",
" \"path\": |-\n",
" /etc/mesosphere/roles/master\n",
"- \"content\": \"\"\n",
" \"path\": |-\n",
" /etc/mesosphere/roles/aws_master\n",
"- \"content\": \"\"\n",
" \"path\": |-\n",
" /etc/mesosphere/roles/aws\n"
]
]
}
},
"AssociatePublicIpAddress": "true"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "3221f40f-91c0-42cb-bb9e-8d2050b46b9c"
}
}
},
"SlaveToSlaveIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "SlaveSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "SlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
}
},
"PrivateRoute": {
"Type": "AWS::EC2::Route",
"Properties": {
"DestinationCidrBlock": "0.0.0.0/0",
"RouteTableId": {
"Ref": "PrivateRouteTable"
},
"InstanceId": {
"Ref": "NATInstance"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "d3c02a9a-f43a-4ca4-97c6-f99b0df678c9"
}
}
},
"AdminSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"SecurityGroupIngress": [
{
"CidrIp": {
"Ref": "AdminLocation"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
}
],
"VpcId": {
"Ref": "Vpc"
},
"GroupDescription": "Enable admin access to servers"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "d10b7d99-2bab-4c27-a2d0-fd18023484c9"
}
}
},
"InternetGateway": {
"Type": "AWS::EC2::InternetGateway",
"Properties": {
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Public",
"Key": "Network"
}
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "6c3d4028-8b1b-4bf5-87cc-ba97e3674ba3"
}
}
},
"PublicSlaveIngressThree": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"CidrIp": "0.0.0.0/0",
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "tcp",
"FromPort": "5052"
}
},
"MasterSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"SecurityGroupIngress": [
{
"SourceSecurityGroupId": {
"Ref": "LbSecurityGroup"
},
"ToPort": "5050",
"IpProtocol": "tcp",
"FromPort": "5050"
},
{
"SourceSecurityGroupId": {
"Ref": "LbSecurityGroup"
},
"ToPort": "80",
"IpProtocol": "tcp",
"FromPort": "80"
},
{
"SourceSecurityGroupId": {
"Ref": "LbSecurityGroup"
},
"ToPort": "8080",
"IpProtocol": "tcp",
"FromPort": "8080"
},
{
"SourceSecurityGroupId": {
"Ref": "LbSecurityGroup"
},
"ToPort": "8181",
"IpProtocol": "tcp",
"FromPort": "8181"
},
{
"SourceSecurityGroupId": {
"Ref": "LbSecurityGroup"
},
"ToPort": "2181",
"IpProtocol": "tcp",
"FromPort": "2181"
}
],
"VpcId": {
"Ref": "Vpc"
},
"GroupDescription": "Mesos Masters"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "ee7e8d47-2cb1-4a76-974e-1ff62016f00a"
}
}
},
"SlaveToPublicSlaveIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "SlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "f17c6df7-e176-4e00-881e-26236908b5ea"
}
}
},
"PublicSlaveSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"VpcId": {
"Ref": "Vpc"
},
"GroupDescription": "Mesos Slaves Public"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "2070df87-beb9-4529-9ca0-c70c67633969"
}
}
},
"PrivateSubnetNetworkAclAssociation": {
"Type": "AWS::EC2::SubnetNetworkAclAssociation",
"Properties": {
"NetworkAclId": {
"Ref": "PrivateNetworkAcl"
},
"SubnetId": {
"Ref": "PrivateSubnet"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "03b18577-608d-4b56-a014-efcd3e0353c1"
}
}
},
"MasterServerGroup": {
"CreationPolicy": {
"ResourceSignal": {
"Timeout": {
"Fn::FindInMap": [
"Parameters",
"StackCreationTimeout",
"default"
]
},
"Count": 1
}
},
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"LoadBalancerNames": [
{
"Ref": "ElasticLoadBalancer"
},
{
"Ref": "InternalMasterLoadBalancer"
}
],
"Tags": [
{
"Value": "mesos-master",
"Key": "role",
"PropagateAtLaunch": "true"
}
],
"AvailabilityZones": [
{
"Fn::GetAtt": [
"PublicSubnet",
"AvailabilityZone"
]
}
],
"LaunchConfigurationName": {
"Ref": "MasterLaunchConfig"
},
"MaxSize": 1,
"MinSize": 1,
"VPCZoneIdentifier": [
{
"Ref": "PublicSubnet"
}
],
"DesiredCapacity": 1
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "7e733802-8c7c-4c57-a5bc-805247d2ae0b"
}
}
},
"PublicSlaveIngressOne": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"CidrIp": "0.0.0.0/0",
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "21",
"IpProtocol": "tcp",
"FromPort": "0"
}
},
"MasterToPublicSlaveIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "MasterSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "0263ccb5-a02e-4ccb-9622-1e678bac9d20"
}
}
},
"PublicSlaveLaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"ImageId": {
"Fn::FindInMap": [
"RegionToAmi",
{
"Ref": "AWS::Region"
},
"stable"
]
},
"InstanceType": {
"Fn::FindInMap": [
"Parameters",
"PublicSlaveInstanceType",
"default"
]
},
"SecurityGroups": [
{
"Ref": "PublicSlaveSecurityGroup"
}
],
"BlockDeviceMappings": [
{
"VirtualName": "ephemeral0",
"DeviceName": "/dev/sdb"
}
],
"KeyName": {
"Ref": "KeyName"
},
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#cloud-config\n",
"\"coreos\":\n",
" \"units\":\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" etcd.service\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" update-engine.service\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" locksmithd.service\n",
" - \"command\": |-\n",
" stop\n",
" \"name\": |-\n",
" systemd-resolved.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |\n",
" [Unit]\n",
" Description=Formats the /var/lib ephemeral drive\n",
" Before=var-lib.mount dbus.service\n",
" [Service]\n",
" Type=oneshot\n",
" RemainAfterExit=yes\n",
" ExecStart=/bin/bash -c \"(blkid -t TYPE=ext4 | grep xvdb) || (/usr/sbin/mkfs.ext4 -F /dev/xvdb)\"\n",
" \"name\": |-\n",
" format-var-lib-ephemeral.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Mount /var/lib\n",
" Before=dbus.service\n",
" [Mount]\n",
" What=/dev/xvdb\n",
" Where=/var/lib\n",
" Type=ext4\n",
" \"name\": |-\n",
" var-lib.mount\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |\n",
" [Unit]\n",
" Before=dcos.target\n",
" [Service]\n",
" Type=oneshot\n",
" ExecStartPre=/usr/bin/mkdir -p /etc/profile.d\n",
" ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh\n",
" \"name\": |-\n",
" dcos-link-env.service\n",
" - \"content\": |\n",
" [Unit]\n",
" Description=Download the DCOS\n",
" After=network-online.target\n",
" Wants=network-online.target\n",
" ConditionPathExists=!/opt/mesosphere/\n",
" [Service]\n",
" EnvironmentFile=/etc/mesosphere/setup-flags/bootstrap-id\n",
" Type=oneshot\n",
" ExecStartPre=/usr/bin/curl -f --retry 20 -C - -o /tmp/bootstrap.tar.xz https://downloads.mesosphere.com/dcos/stable/bootstrap/${BOOTSTRAP_ID}.bootstrap.tar.xz\n",
" ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere\n",
" ExecStart=/usr/bin/tar -axf /tmp/bootstrap.tar.xz -C /opt/mesosphere\n",
" ExecStartPost=-/usr/bin/rm -f /tmp/bootstrap.tar.xz\n",
" \"name\": |-\n",
" dcos-download.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Prep the Pkgpanda working directories for this host.\n",
" Requires=dcos-download.service\n",
" After=dcos-download.service\n",
" [Service]\n",
" Type=oneshot\n",
" EnvironmentFile=/opt/mesosphere/environment\n",
" ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd\n",
" [Install]\n",
" WantedBy=multi-user.target\n",
" \"enable\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" dcos-setup.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Signal CloudFormation Success\n",
" After=dcos.target\n",
" Requires=dcos.target\n",
" ConditionPathExists=!/var/lib/dcos-cfn-signal\n",
" [Service]\n",
" Type=simple\n",
" Restart=on-failure\n",
" StartLimitInterval=0\n",
" RestartSec=15s\n",
" ExecStartPre=/usr/bin/docker pull mbabineau/cfn-bootstrap\n",
" ExecStartPre=/bin/ping -c1 leader.mesos\n",
" ExecStartPre=/usr/bin/docker run --rm mbabineau/cfn-bootstrap \\\n",
" cfn-signal -e 0 \\\n",
" --resource PublicSlaveServerGroup \\\n",
" --stack ",
{
"Ref": "AWS::StackName"
},
" \\",
"\n",
" --region ",
{
"Ref": "AWS::Region"
},
"",
"\n",
" ExecStart=/usr/bin/touch /var/lib/dcos-cfn-signal\n",
" \"name\": |-\n",
" dcos-cfn-signal.service\n",
" \"update\":\n",
" \"reboot-strategy\": |-\n",
" off\n",
"\"write_files\":\n",
"- \"content\": |\n",
" {\n",
" \"environment\": {\n",
" \"PROVIDER\": \"aws\"\n",
" }\n",
" }\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/pkginfo.json\n",
"- \"content\": |\n",
" AWS_REGION=",
{
"Ref": "AWS::Region"
},
"",
"\n",
" AWS_STACK_ID=",
{
"Ref": "AWS::StackId"
},
"",
"\n",
" AWS_STACK_NAME=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" AWS_ACCESS_KEY_ID=",
{
"Ref": "HostKeys"
},
"",
"\n",
" AWS_SECRET_ACCESS_KEY=",
{
"Fn::GetAtt": [
"HostKeys",
"SecretAccessKey"
]
},
"",
"\n",
" ZOOKEEPER_CLUSTER_SIZE=1\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/cloudenv\n",
"- \"content\": |\n",
" MESOS_CLUSTER=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/mesos-master-provider\n",
"- \"content\": |\n",
" EXHIBITOR_BACKEND=AWS_S3\n",
" AWS_REGION=",
{
"Ref": "AWS::Region"
},
"",
"\n",
" AWS_S3_BUCKET=",
{
"Ref": "ExhibitorS3Bucket"
},
"",
"\n",
" AWS_S3_PREFIX=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/exhibitor\n",
"- \"content\": |\n",
" com.netflix.exhibitor.s3.access-key-id=",
{
"Ref": "HostKeys"
},
"",
"\n",
" com.netflix.exhibitor.s3.access-secret-key=",
{
"Fn::GetAtt": [
"HostKeys",
"SecretAccessKey"
]
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/exhibitor.properties\n",
"- \"content\": |-\n",
" MASTER_SOURCE=exhibitor\n",
" EXHIBITOR_ADDRESS=",
{
"Fn::GetAtt": [
"InternalMasterLoadBalancer",
"DNSName"
]
},
"",
"\n",
" RESOLVERS=10.0.0.2\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/dns_config\n",
"- \"content\": |\n",
" https://downloads.mesosphere.com/dcos/stable\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/repository-url\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": |\n",
" BOOTSTRAP_ID=6b0e032309ca50105edf3871182b8c9c1b27837e\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/bootstrap-id\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": |-\n",
" [\"dcos-config--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\", \"dcos-detect-ip--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\", \"dcos-metadata--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\"]\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/cluster-packages.json\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": \"\"\n",
" \"path\": |-\n",
" /etc/mesosphere/roles/slave_public\n",
"- \"content\": \"\"\n",
" \"path\": |-\n",
" /etc/mesosphere/roles/aws\n"
]
]
}
},
"AssociatePublicIpAddress": "true"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "f22cfe5e-d0b0-4a57-af70-a50863b08b41"
}
}
},
"PublicRoute": {
"DependsOn": "GatewayToInternet",
"Type": "AWS::EC2::Route",
"Properties": {
"GatewayId": {
"Ref": "InternetGateway"
},
"DestinationCidrBlock": "0.0.0.0/0",
"RouteTableId": {
"Ref": "PublicRouteTable"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "b3fba23a-d25b-4394-9a1b-80d875d04f54"
}
}
},
"PublicSlaveServerGroup": {
"CreationPolicy": {
"ResourceSignal": {
"Timeout": {
"Fn::FindInMap": [
"Parameters",
"StackCreationTimeout",
"default"
]
},
"Count": {
"Ref": "PublicSlaveInstanceCount"
}
}
},
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"LoadBalancerNames": [
{
"Ref": "PublicSlaveLoadBalancer"
}
],
"Tags": [
{
"Value": "mesos-slave",
"Key": "role",
"PropagateAtLaunch": "true"
}
],
"AvailabilityZones": [
{
"Fn::GetAtt": [
"PublicSubnet",
"AvailabilityZone"
]
}
],
"LaunchConfigurationName": {
"Ref": "PublicSlaveLaunchConfig"
},
"MaxSize": {
"Ref": "PublicSlaveInstanceCount"
},
"MinSize": {
"Ref": "PublicSlaveInstanceCount"
},
"VPCZoneIdentifier": [
{
"Ref": "PublicSubnet"
}
],
"DesiredCapacity": {
"Ref": "PublicSlaveInstanceCount"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "fa07b529-1c93-4d7b-96a9-fdab3eed647c"
}
}
},
"PublicRouteTable": {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Public",
"Key": "Network"
}
],
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "088607cd-8a6a-43c6-b020-57f3f7d617c0"
}
}
},
"PublicSlaveToPublicSlaveIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
}
},
"SlaveToMasterLBIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "LbSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "SlaveSecurityGroup"
},
"ToPort": "2181",
"IpProtocol": "tcp",
"FromPort": "2181"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "df0454a0-d0e5-4ea8-8f8f-882386f6b4bb"
}
}
},
"NATInstance": {
"DependsOn": "GatewayToInternet",
"Type": "AWS::EC2::Instance",
"Properties": {
"NetworkInterfaces": [
{
"GroupSet": [
{
"Ref": "SlaveSecurityGroup"
},
{
"Ref": "MasterSecurityGroup"
},
{
"Ref": "AdminSecurityGroup"
}
],
"DeleteOnTermination": "true",
"DeviceIndex": "0",
"SubnetId": {
"Ref": "PublicSubnet"
},
"AssociatePublicIpAddress": "true"
}
],
"InstanceType": "m3.medium",
"ImageId": {
"Fn::FindInMap": [
"NATAmi",
{
"Ref": "AWS::Region"
},
"default"
]
},
"KeyName": {
"Ref": "KeyName"
},
"SourceDestCheck": "false"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "e9b85a2c-0d9e-4ddc-969a-6a2e7810bfb1"
}
}
},
"DHCPOptions": {
"Type": "AWS::EC2::DHCPOptions",
"Properties": {
"DomainName": {
"Fn::If": [
"RegionIsUsEast1",
"ec2.internal",
{
"Fn::Join": [
"",
[
{
"Ref": "AWS::Region"
},
".compute.internal"
]
]
}
]
},
"DomainNameServers": [
"AmazonProvidedDNS"
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "6ddf6dd1-d3eb-4dd7-8388-5d37584e5a6c"
}
}
},
"PublicSubnetRouteTableAssociation": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",
"Properties": {
"RouteTableId": {
"Ref": "PublicRouteTable"
},
"SubnetId": {
"Ref": "PublicSubnet"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "7dbdc88c-6dcb-4b19-9b49-e13e253c12cb"
}
}
},
"InboundNetworkAclEntry": {
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"CidrBlock": "0.0.0.0/0",
"RuleAction": "allow",
"NetworkAclId": {
"Ref": "PublicNetworkAcl"
},
"PortRange": {
"To": "65535",
"From": "0"
},
"Egress": "false",
"Protocol": "-1",
"RuleNumber": "100"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "90e1ff39-e708-4dc5-903b-8be18449b676"
}
}
},
"PrivateSubnet": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"CidrBlock": {
"Fn::FindInMap": [
"Parameters",
"PrivateSubnetRange",
"default"
]
},
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Private",
"Key": "Network"
}
],
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "427a1d21-aab3-4a7a-8a0e-d86cd280d45d"
}
}
},
"HostKeys": {
"Type": "AWS::IAM::AccessKey",
"Properties": {
"UserName": {
"Ref": "IAMUser"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "56670de6-7357-44cb-b398-eeb02110c4f0"
}
}
},
"PrivateRouteTable": {
"Type": "AWS::EC2::RouteTable",
"Properties": {
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Public",
"Key": "Network"
}
],
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "8b1ef20d-49d6-4bba-9738-cd6565cd7336"
}
}
},
"PrivateOutboundNetworkAclEntry": {
"Type": "AWS::EC2::NetworkAclEntry",
"Properties": {
"CidrBlock": "0.0.0.0/0",
"RuleAction": "allow",
"NetworkAclId": {
"Ref": "PrivateNetworkAcl"
},
"PortRange": {
"To": "65535",
"From": "0"
},
"Egress": "true",
"Protocol": "-1",
"RuleNumber": "100"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "fa5b6adf-76c8-4322-a9cb-e4598fca9b93"
}
}
},
"SlaveServerGroup": {
"CreationPolicy": {
"ResourceSignal": {
"Timeout": {
"Fn::FindInMap": [
"Parameters",
"StackCreationTimeout",
"default"
]
},
"Count": {
"Ref": "SlaveInstanceCount"
}
}
},
"Type": "AWS::AutoScaling::AutoScalingGroup",
"Properties": {
"Tags": [
{
"Value": "mesos-slave",
"Key": "role",
"PropagateAtLaunch": "true"
}
],
"AvailabilityZones": [
{
"Fn::GetAtt": [
"PrivateSubnet",
"AvailabilityZone"
]
}
],
"LaunchConfigurationName": {
"Ref": "SlaveLaunchConfig"
},
"MaxSize": {
"Ref": "SlaveInstanceCount"
},
"MinSize": {
"Ref": "SlaveInstanceCount"
},
"VPCZoneIdentifier": [
{
"Ref": "PrivateSubnet"
}
],
"DesiredCapacity": {
"Ref": "SlaveInstanceCount"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "0afaac9e-bd8f-4b1a-a664-661534372905"
}
}
},
"SlaveLaunchConfig": {
"Type": "AWS::AutoScaling::LaunchConfiguration",
"Properties": {
"ImageId": {
"Fn::FindInMap": [
"RegionToAmi",
{
"Ref": "AWS::Region"
},
"stable"
]
},
"InstanceType": {
"Fn::FindInMap": [
"Parameters",
"SlaveInstanceType",
"default"
]
},
"SecurityGroups": [
{
"Ref": "SlaveSecurityGroup"
}
],
"BlockDeviceMappings": [
{
"VirtualName": "ephemeral0",
"DeviceName": "/dev/sdb"
}
],
"KeyName": {
"Ref": "KeyName"
},
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#cloud-config\n",
"\"coreos\":\n",
" \"units\":\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" etcd.service\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" update-engine.service\n",
" - \"command\": |-\n",
" stop\n",
" \"mask\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" locksmithd.service\n",
" - \"command\": |-\n",
" stop\n",
" \"name\": |-\n",
" systemd-resolved.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |\n",
" [Unit]\n",
" Description=Formats the /var/lib ephemeral drive\n",
" Before=var-lib.mount dbus.service\n",
" [Service]\n",
" Type=oneshot\n",
" RemainAfterExit=yes\n",
" ExecStart=/bin/bash -c \"(blkid -t TYPE=ext4 | grep xvdb) || (/usr/sbin/mkfs.ext4 -F /dev/xvdb)\"\n",
" \"name\": |-\n",
" format-var-lib-ephemeral.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Mount /var/lib\n",
" Before=dbus.service\n",
" [Mount]\n",
" What=/dev/xvdb\n",
" Where=/var/lib\n",
" Type=ext4\n",
" \"name\": |-\n",
" var-lib.mount\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |\n",
" [Unit]\n",
" Before=dcos.target\n",
" [Service]\n",
" Type=oneshot\n",
" ExecStartPre=/usr/bin/mkdir -p /etc/profile.d\n",
" ExecStart=/usr/bin/ln -sf /opt/mesosphere/environment.export /etc/profile.d/dcos.sh\n",
" \"name\": |-\n",
" dcos-link-env.service\n",
" - \"content\": |\n",
" [Unit]\n",
" Description=Download the DCOS\n",
" After=network-online.target\n",
" Wants=network-online.target\n",
" ConditionPathExists=!/opt/mesosphere/\n",
" [Service]\n",
" EnvironmentFile=/etc/mesosphere/setup-flags/bootstrap-id\n",
" Type=oneshot\n",
" ExecStartPre=/usr/bin/curl -f --retry 20 -C - -o /tmp/bootstrap.tar.xz https://downloads.mesosphere.com/dcos/stable/bootstrap/${BOOTSTRAP_ID}.bootstrap.tar.xz\n",
" ExecStartPre=/usr/bin/mkdir -p /opt/mesosphere\n",
" ExecStart=/usr/bin/tar -axf /tmp/bootstrap.tar.xz -C /opt/mesosphere\n",
" ExecStartPost=-/usr/bin/rm -f /tmp/bootstrap.tar.xz\n",
" \"name\": |-\n",
" dcos-download.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Prep the Pkgpanda working directories for this host.\n",
" Requires=dcos-download.service\n",
" After=dcos-download.service\n",
" [Service]\n",
" Type=oneshot\n",
" EnvironmentFile=/opt/mesosphere/environment\n",
" ExecStart=/opt/mesosphere/bin/pkgpanda setup --no-block-systemd\n",
" [Install]\n",
" WantedBy=multi-user.target\n",
" \"enable\": !!bool |-\n",
" true\n",
" \"name\": |-\n",
" dcos-setup.service\n",
" - \"command\": |-\n",
" start\n",
" \"content\": |-\n",
" [Unit]\n",
" Description=Signal CloudFormation Success\n",
" After=dcos.target\n",
" Requires=dcos.target\n",
" ConditionPathExists=!/var/lib/dcos-cfn-signal\n",
" [Service]\n",
" Type=simple\n",
" Restart=on-failure\n",
" StartLimitInterval=0\n",
" RestartSec=15s\n",
" ExecStartPre=/usr/bin/docker pull mbabineau/cfn-bootstrap\n",
" ExecStartPre=/bin/ping -c1 leader.mesos\n",
" ExecStartPre=/usr/bin/docker run --rm mbabineau/cfn-bootstrap \\\n",
" cfn-signal -e 0 \\\n",
" --resource SlaveServerGroup \\\n",
" --stack ",
{
"Ref": "AWS::StackName"
},
" \\",
"\n",
" --region ",
{
"Ref": "AWS::Region"
},
"",
"\n",
" ExecStart=/usr/bin/touch /var/lib/dcos-cfn-signal\n",
" \"name\": |-\n",
" dcos-cfn-signal.service\n",
" \"update\":\n",
" \"reboot-strategy\": |-\n",
" off\n",
"\"write_files\":\n",
"- \"content\": |\n",
" {\n",
" \"environment\": {\n",
" \"PROVIDER\": \"aws\"\n",
" }\n",
" }\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/pkginfo.json\n",
"- \"content\": |\n",
" AWS_REGION=",
{
"Ref": "AWS::Region"
},
"",
"\n",
" AWS_STACK_ID=",
{
"Ref": "AWS::StackId"
},
"",
"\n",
" AWS_STACK_NAME=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" AWS_ACCESS_KEY_ID=",
{
"Ref": "HostKeys"
},
"",
"\n",
" AWS_SECRET_ACCESS_KEY=",
{
"Fn::GetAtt": [
"HostKeys",
"SecretAccessKey"
]
},
"",
"\n",
" ZOOKEEPER_CLUSTER_SIZE=1\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/cloudenv\n",
"- \"content\": |\n",
" MESOS_CLUSTER=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/mesos-master-provider\n",
"- \"content\": |\n",
" EXHIBITOR_BACKEND=AWS_S3\n",
" AWS_REGION=",
{
"Ref": "AWS::Region"
},
"",
"\n",
" AWS_S3_BUCKET=",
{
"Ref": "ExhibitorS3Bucket"
},
"",
"\n",
" AWS_S3_PREFIX=",
{
"Ref": "AWS::StackName"
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/exhibitor\n",
"- \"content\": |\n",
" com.netflix.exhibitor.s3.access-key-id=",
{
"Ref": "HostKeys"
},
"",
"\n",
" com.netflix.exhibitor.s3.access-secret-key=",
{
"Fn::GetAtt": [
"HostKeys",
"SecretAccessKey"
]
},
"",
"\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/exhibitor.properties\n",
"- \"content\": |-\n",
" MASTER_SOURCE=exhibitor\n",
" EXHIBITOR_ADDRESS=",
{
"Fn::GetAtt": [
"InternalMasterLoadBalancer",
"DNSName"
]
},
"",
"\n",
" RESOLVERS=10.0.0.2\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-packages/dcos-provider-aws--setup/etc/dns_config\n",
"- \"content\": |\n",
" https://downloads.mesosphere.com/dcos/stable\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/repository-url\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": |\n",
" BOOTSTRAP_ID=6b0e032309ca50105edf3871182b8c9c1b27837e\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/bootstrap-id\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": |-\n",
" [\"dcos-config--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\", \"dcos-detect-ip--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\", \"dcos-metadata--setup_41d8ad6c80ab8e4291fa76f04e0c0c99f6892eea\"]\n",
" \"owner\": |-\n",
" root\n",
" \"path\": |-\n",
" /etc/mesosphere/setup-flags/cluster-packages.json\n",
" \"permissions\": !!int |-\n",
" 420\n",
"- \"content\": \"\"\n",
" \"path\": |-\n",
" /etc/mesosphere/roles/slave\n",
"- \"content\": \"\"\n",
" \"path\": |-\n",
" /etc/mesosphere/roles/aws\n"
]
]
}
},
"AssociatePublicIpAddress": "false"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "daa41454-b9f5-4dd4-a698-05197f830a06"
}
}
},
"ElasticLoadBalancer": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"Subnets": [
{
"Ref": "PublicSubnet"
}
],
"HealthCheck": {
"HealthyThreshold": "2",
"Target": "HTTP:5050/health",
"Timeout": "5",
"UnhealthyThreshold": "2",
"Interval": "30"
},
"SecurityGroups": [
{
"Ref": "LbSecurityGroup"
},
{
"Ref": "AdminSecurityGroup"
}
],
"Listeners": [
{
"Protocol": "HTTP",
"InstanceProtocol": "HTTP",
"LoadBalancerPort": "80",
"InstancePort": "80"
},
{
"Protocol": "TCP",
"InstanceProtocol": "TCP",
"LoadBalancerPort": "443",
"InstancePort": "443"
}
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "3317afa8-2d5d-4b57-9aee-8e4d785ab8e9"
}
}
},
"MasterToSlaveIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "SlaveSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "MasterSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "ab504899-5150-4672-8369-6a23c4b2f54c"
}
}
},
"PublicSlaveLoadBalancer": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"Subnets": [
{
"Ref": "PublicSubnet"
}
],
"HealthCheck": {
"HealthyThreshold": "2",
"Target": "HTTP:80/",
"Timeout": "5",
"UnhealthyThreshold": "2",
"Interval": "30"
},
"SecurityGroups": [
{
"Ref": "PublicSlaveSecurityGroup"
}
],
"Listeners": [
{
"Protocol": "HTTP",
"InstanceProtocol": "HTTP",
"LoadBalancerPort": "80",
"InstancePort": "80"
},
{
"Protocol": "TCP",
"InstanceProtocol": "TCP",
"LoadBalancerPort": "443",
"InstancePort": "443"
}
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "5f209750-8f12-4ffd-bc63-05b99969d758"
}
}
},
"PublicSlaveToSlaveIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "SlaveSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "3dbece30-bb85-4e68-95c1-10579f0b5afc"
}
}
},
"PublicSlaveIngressTwo": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"CidrIp": "0.0.0.0/0",
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "5050",
"IpProtocol": "tcp",
"FromPort": "23"
}
},
"SlaveSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"VpcId": {
"Ref": "Vpc"
},
"GroupDescription": "Mesos Slaves"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "88522464-ab02-4ffc-860a-82f064794212"
}
}
},
"VPCDHCPOptionsAssociation": {
"Type": "AWS::EC2::VPCDHCPOptionsAssociation",
"Properties": {
"DhcpOptionsId": {
"Ref": "DHCPOptions"
},
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "6aae04ac-fd70-4270-bf84-ebd53142efba"
}
}
},
"PrivateSubnetRouteTableAssociation": {
"Type": "AWS::EC2::SubnetRouteTableAssociation",
"Properties": {
"RouteTableId": {
"Ref": "PrivateRouteTable"
},
"SubnetId": {
"Ref": "PrivateSubnet"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "f56b491f-ee44-4ea7-a1d4-94281bb818f6"
}
}
},
"InternalMasterLoadBalancer": {
"Type": "AWS::ElasticLoadBalancing::LoadBalancer",
"Properties": {
"Subnets": [
{
"Ref": "PublicSubnet"
}
],
"HealthCheck": {
"HealthyThreshold": "2",
"Target": "HTTP:5050/health",
"Timeout": "5",
"UnhealthyThreshold": "2",
"Interval": "30"
},
"Scheme": "internal",
"SecurityGroups": [
{
"Ref": "LbSecurityGroup"
},
{
"Ref": "AdminSecurityGroup"
},
{
"Ref": "SlaveSecurityGroup"
},
{
"Ref": "PublicSlaveSecurityGroup"
},
{
"Ref": "MasterSecurityGroup"
}
],
"Listeners": [
{
"Protocol": "HTTP",
"InstanceProtocol": "HTTP",
"LoadBalancerPort": "5050",
"InstancePort": "5050"
},
{
"Protocol": "TCP",
"InstanceProtocol": "TCP",
"LoadBalancerPort": "2181",
"InstancePort": "2181"
},
{
"Protocol": "HTTP",
"InstanceProtocol": "HTTP",
"LoadBalancerPort": "8181",
"InstancePort": "8181"
},
{
"Protocol": "HTTP",
"InstanceProtocol": "HTTP",
"LoadBalancerPort": "80",
"InstancePort": "80"
},
{
"Protocol": "TCP",
"InstanceProtocol": "TCP",
"LoadBalancerPort": "443",
"InstancePort": "443"
},
{
"Protocol": "HTTP",
"InstanceProtocol": "HTTP",
"LoadBalancerPort": "8080",
"InstancePort": "8080"
}
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "8be6a4d0-cfc6-426e-ba6f-87d15f3ee7ea"
}
}
},
"GatewayToInternet": {
"Type": "AWS::EC2::VPCGatewayAttachment",
"Properties": {
"InternetGatewayId": {
"Ref": "InternetGateway"
},
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "351a27dd-5a11-4c21-9084-c9e5ff39bafd"
}
}
},
"IAMUser": {
"Type": "AWS::IAM::User",
"Properties": {
"Policies": [
{
"PolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Resource": [
{
"Fn::Join": [
"",
[
"arn:aws:s3:::",
{
"Ref": "ExhibitorS3Bucket"
},
"/*"
]
]
},
{
"Fn::Join": [
"",
[
"arn:aws:s3:::",
{
"Ref": "ExhibitorS3Bucket"
}
]
]
}
],
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetBucketAcl",
"s3:GetBucketPolicy",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:PutObjectAcl"
]
},
{
"Effect": "Allow",
"Resource": [
{
"Ref": "AWS::StackId"
},
{
"Fn::Join": [
"",
[
{
"Ref": "AWS::StackId"
},
"/*"
]
]
}
],
"Action": [
"cloudformation:*"
]
},
{
"Effect": "Allow",
"Resource": "*",
"Action": [
"ec2:DescribeKeyPairs",
"ec2:DescribeSubnets",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:UpdateAutoScalingGroup",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeScalingActivities",
"elasticloadbalancing:DescribeLoadBalancers"
]
}
],
"Version": "2012-10-17"
},
"PolicyName": "root"
}
]
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "ad4d94e0-ad01-495c-936a-5fc3b9568c95"
}
}
},
"MasterToMasterIngress": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"GroupId": {
"Ref": "MasterSecurityGroup"
},
"SourceSecurityGroupId": {
"Ref": "MasterSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "-1",
"FromPort": "0"
}
},
"PrivateNetworkAcl": {
"Type": "AWS::EC2::NetworkAcl",
"Properties": {
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Public",
"Key": "Network"
}
],
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "2afc78ac-5037-4622-bfb3-732e48f44c11"
}
}
},
"ExhibitorS3Bucket": {
"DeletionPolicy": "Retain",
"Type": "AWS::S3::Bucket",
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "86a487f2-2709-4ca1-a1d4-9fae522eb073"
}
}
},
"PublicSlaveIngressSix": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"CidrIp": "0.0.0.0/0",
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "65535",
"IpProtocol": "udp",
"FromPort": "5052"
}
},
"PublicSubnet": {
"Type": "AWS::EC2::Subnet",
"Properties": {
"CidrBlock": {
"Fn::FindInMap": [
"Parameters",
"PublicSubnetRange",
"default"
]
},
"Tags": [
{
"Value": {
"Ref": "AWS::StackName"
},
"Key": "Application"
},
{
"Value": "Public",
"Key": "Network"
}
],
"VpcId": {
"Ref": "Vpc"
}
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "5cc252ad-a5f9-4a76-9459-946779c512b2"
}
}
},
"MasterRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"ec2.amazonaws.com"
]
},
"Action": [
"sts:AssumeRole"
]
}
],
"Version": "2012-10-17"
},
"Policies": [
{
"PolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Resource": [
{
"Fn::Join": [
"",
[
"arn:aws:s3:::",
{
"Ref": "ExhibitorS3Bucket"
},
"/*"
]
]
},
{
"Fn::Join": [
"",
[
"arn:aws:s3:::",
{
"Ref": "ExhibitorS3Bucket"
}
]
]
}
],
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject",
"s3:GetBucketAcl",
"s3:GetBucketPolicy",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:PutObjectAcl"
]
},
{
"Effect": "Allow",
"Resource": [
{
"Ref": "AWS::StackId"
},
{
"Fn::Join": [
"",
[
{
"Ref": "AWS::StackId"
},
"/*"
]
]
}
],
"Action": [
"cloudformation:*"
]
},
{
"Effect": "Allow",
"Resource": "*",
"Action": [
"ec2:DescribeKeyPairs",
"ec2:DescribeSubnets",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:UpdateAutoScalingGroup",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeScalingActivities",
"elasticloadbalancing:DescribeLoadBalancers"
]
}
],
"Version": "2012-10-17"
},
"PolicyName": "root"
}
],
"Path": "/"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "d640f387-3376-4263-acc1-3db83a600aa6"
}
}
},
"PublicSlaveIngressFive": {
"Type": "AWS::EC2::SecurityGroupIngress",
"Properties": {
"CidrIp": "0.0.0.0/0",
"GroupId": {
"Ref": "PublicSlaveSecurityGroup"
},
"ToPort": "5050",
"IpProtocol": "udp",
"FromPort": "23"
}
},
"LbSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"VpcId": {
"Ref": "Vpc"
},
"GroupDescription": "Mesos Master LB"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "e2590da3-90ae-4501-b928-6d23c7b0a0d2"
}
}
}
},
"Description": "Launching the Mesosphere DCOS cluster",
"AWSTemplateFormatVersion": "2010-09-09",
"Conditions": {
"RegionIsUsEast1": {
"Fn::Equals": [
{
"Ref": "AWS::Region"
},
"us-east-1"
]
}
},
"Parameters": {
"SlaveInstanceCount": {
"Default": "5",
"Description": "Number of slave nodes to launch",
"Type": "Number"
},
"AdminLocation": {
"Default": "0.0.0.0/0",
"AllowedPattern": "^([0-9]+\\.){3}[0-9]+\\/[0-9]+$",
"Type": "String",
"MaxLength": "18",
"MinLength": "9",
"Description": "The IP range to whitelist for admin access.",
"ConstraintDescription": "must be a valid CIDR."
},
"KeyName": {
"Description": "Name of SSH key to link",
"Type": "AWS::EC2::KeyPair::KeyName"
},
"AcceptEULA": {
"Description": "Please read and agree to our EULA: https://docs.mesosphere.com/community-edition-eula/",
"AllowedValues": [
"Yes"
],
"Type": "String"
},
"PublicSlaveInstanceCount": {
"Default": "1",
"Description": "Number of public slave nodes to launch",
"Type": "Number"
}
},
"Metadata": {
"DcosImageCommit": "4f65fe21c539b5e7234672d2b7a78f211890b5fc",
"TemplateGenerationDate": "2015-11-12 01:12:11.034661",
"AWS::CloudFormation::Designer": {
"86a487f2-2709-4ca1-a1d4-9fae522eb073": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 90
},
"z": 1,
"embeds": []
},
"d640f387-3376-4263-acc1-3db83a600aa6": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 210
},
"z": 1,
"embeds": [],
"isrelatedto": [
"86a487f2-2709-4ca1-a1d4-9fae522eb073"
]
},
"ad4d94e0-ad01-495c-936a-5fc3b9568c95": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 330
},
"z": 1,
"embeds": [],
"isrelatedto": [
"86a487f2-2709-4ca1-a1d4-9fae522eb073"
]
},
"56670de6-7357-44cb-b398-eeb02110c4f0": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 450
},
"z": 1,
"embeds": [],
"isrelatedto": [
"ad4d94e0-ad01-495c-936a-5fc3b9568c95"
]
},
"6ddf6dd1-d3eb-4dd7-8388-5d37584e5a6c": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 570
},
"z": 1,
"embeds": []
},
"6c3d4028-8b1b-4bf5-87cc-ba97e3674ba3": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 690
},
"z": 1,
"embeds": []
},
"55a5feed-d2c6-4dc9-83cf-94936ec806fe": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 810
},
"z": 1,
"embeds": [],
"isassociatedwith": [
"d640f387-3376-4263-acc1-3db83a600aa6"
]
},
"10319917-4a50-4ae9-a87e-c5f3fae67ddf": {
"size": {
"width": 930,
"height": 930
},
"position": {
"x": 220,
"y": 100
},
"z": 1,
"embeds": [
"e2590da3-90ae-4501-b928-6d23c7b0a0d2",
"5cc252ad-a5f9-4a76-9459-946779c512b2",
"2afc78ac-5037-4622-bfb3-732e48f44c11",
"88522464-ab02-4ffc-860a-82f064794212",
"8b1ef20d-49d6-4bba-9738-cd6565cd7336",
"427a1d21-aab3-4a7a-8a0e-d86cd280d45d",
"088607cd-8a6a-43c6-b020-57f3f7d617c0",
"2070df87-beb9-4529-9ca0-c70c67633969",
"ee7e8d47-2cb1-4a76-974e-1ff62016f00a",
"d10b7d99-2bab-4c27-a2d0-fd18023484c9",
"530df17a-6946-42d9-90fe-10d4120e60a6"
]
},
"e2590da3-90ae-4501-b928-6d23c7b0a0d2": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 880,
"y": 340
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": []
},
"5cc252ad-a5f9-4a76-9459-946779c512b2": {
"size": {
"width": 210,
"height": 210
},
"position": {
"x": 250,
"y": 700
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": [
"e9b85a2c-0d9e-4ddc-969a-6a2e7810bfb1"
]
},
"2afc78ac-5037-4622-bfb3-732e48f44c11": {
"size": {
"width": 300,
"height": 210
},
"position": {
"x": 250,
"y": 430
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": [
"fa5b6adf-76c8-4322-a9cb-e4598fca9b93",
"84006722-d7ed-446e-a2eb-116a5b3c4f61"
]
},
"fa5b6adf-76c8-4322-a9cb-e4598fca9b93": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 280,
"y": 490
},
"z": 3,
"parent": "2afc78ac-5037-4622-bfb3-732e48f44c11",
"embeds": []
},
"84006722-d7ed-446e-a2eb-116a5b3c4f61": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 400,
"y": 490
},
"z": 3,
"parent": "2afc78ac-5037-4622-bfb3-732e48f44c11",
"embeds": []
},
"351a27dd-5a11-4c21-9084-c9e5ff39bafd": {
"source": {
"id": "6c3d4028-8b1b-4bf5-87cc-ba97e3674ba3"
},
"target": {
"id": "10319917-4a50-4ae9-a87e-c5f3fae67ddf"
},
"z": 1
},
"6aae04ac-fd70-4270-bf84-ebd53142efba": {
"source": {
"id": "6ddf6dd1-d3eb-4dd7-8388-5d37584e5a6c"
},
"target": {
"id": "10319917-4a50-4ae9-a87e-c5f3fae67ddf"
},
"z": 1
},
"88522464-ab02-4ffc-860a-82f064794212": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1000,
"y": 340
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": []
},
"df0454a0-d0e5-4ea8-8f8f-882386f6b4bb": {
"source": {
"id": "e2590da3-90ae-4501-b928-6d23c7b0a0d2"
},
"target": {
"id": "88522464-ab02-4ffc-860a-82f064794212"
},
"z": 2
},
"8b1ef20d-49d6-4bba-9738-cd6565cd7336": {
"size": {
"width": 210,
"height": 210
},
"position": {
"x": 610,
"y": 430
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": [
"d3c02a9a-f43a-4ca4-97c6-f99b0df678c9"
]
},
"427a1d21-aab3-4a7a-8a0e-d86cd280d45d": {
"size": {
"width": 120,
"height": 120
},
"position": {
"x": 880,
"y": 160
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": []
},
"f56b491f-ee44-4ea7-a1d4-94281bb818f6": {
"source": {
"id": "8b1ef20d-49d6-4bba-9738-cd6565cd7336"
},
"target": {
"id": "427a1d21-aab3-4a7a-8a0e-d86cd280d45d"
},
"z": 2
},
"03b18577-608d-4b56-a014-efcd3e0353c1": {
"source": {
"id": "2afc78ac-5037-4622-bfb3-732e48f44c11"
},
"target": {
"id": "427a1d21-aab3-4a7a-8a0e-d86cd280d45d"
},
"z": 2
},
"088607cd-8a6a-43c6-b020-57f3f7d617c0": {
"size": {
"width": 210,
"height": 210
},
"position": {
"x": 610,
"y": 160
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": [
"b3fba23a-d25b-4394-9a1b-80d875d04f54"
]
},
"7dbdc88c-6dcb-4b19-9b49-e13e253c12cb": {
"source": {
"id": "088607cd-8a6a-43c6-b020-57f3f7d617c0"
},
"target": {
"id": "5cc252ad-a5f9-4a76-9459-946779c512b2"
},
"z": 2
},
"b3fba23a-d25b-4394-9a1b-80d875d04f54": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 640,
"y": 220
},
"z": 3,
"parent": "088607cd-8a6a-43c6-b020-57f3f7d617c0",
"embeds": [],
"references": [
"6c3d4028-8b1b-4bf5-87cc-ba97e3674ba3"
],
"dependson": [
"351a27dd-5a11-4c21-9084-c9e5ff39bafd"
]
},
"2070df87-beb9-4529-9ca0-c70c67633969": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 880,
"y": 460
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": []
},
"3dbece30-bb85-4e68-95c1-10579f0b5afc": {
"source": {
"id": "88522464-ab02-4ffc-860a-82f064794212"
},
"target": {
"id": "2070df87-beb9-4529-9ca0-c70c67633969"
},
"z": 2
},
"5f209750-8f12-4ffd-bc63-05b99969d758": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 930
},
"z": 1,
"embeds": [],
"isconnectedto": [
"5cc252ad-a5f9-4a76-9459-946779c512b2"
],
"ismemberof": [
"2070df87-beb9-4529-9ca0-c70c67633969"
]
},
"f17c6df7-e176-4e00-881e-26236908b5ea": {
"source": {
"id": "2070df87-beb9-4529-9ca0-c70c67633969"
},
"target": {
"id": "88522464-ab02-4ffc-860a-82f064794212"
},
"z": 2
},
"ee7e8d47-2cb1-4a76-974e-1ff62016f00a": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1000,
"y": 460
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": [],
"isrelatedto": [
"e2590da3-90ae-4501-b928-6d23c7b0a0d2"
]
},
"ab504899-5150-4672-8369-6a23c4b2f54c": {
"source": {
"id": "88522464-ab02-4ffc-860a-82f064794212"
},
"target": {
"id": "ee7e8d47-2cb1-4a76-974e-1ff62016f00a"
},
"z": 2
},
"0263ccb5-a02e-4ccb-9622-1e678bac9d20": {
"source": {
"id": "2070df87-beb9-4529-9ca0-c70c67633969"
},
"target": {
"id": "ee7e8d47-2cb1-4a76-974e-1ff62016f00a"
},
"z": 2
},
"d76fcb83-c82d-4437-874c-a82b0ed0c49a": {
"source": {
"id": "ee7e8d47-2cb1-4a76-974e-1ff62016f00a"
},
"target": {
"id": "2070df87-beb9-4529-9ca0-c70c67633969"
},
"z": 2
},
"60db1cc3-c84b-42d4-bffa-d3689c7220a2": {
"source": {
"id": "ee7e8d47-2cb1-4a76-974e-1ff62016f00a"
},
"target": {
"id": "88522464-ab02-4ffc-860a-82f064794212"
},
"z": 2
},
"d10b7d99-2bab-4c27-a2d0-fd18023484c9": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 880,
"y": 580
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": []
},
"8be6a4d0-cfc6-426e-ba6f-87d15f3ee7ea": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 1050,
"y": 1050
},
"z": 1,
"embeds": [],
"isconnectedto": [
"5cc252ad-a5f9-4a76-9459-946779c512b2"
],
"ismemberof": [
"e2590da3-90ae-4501-b928-6d23c7b0a0d2",
"d10b7d99-2bab-4c27-a2d0-fd18023484c9",
"88522464-ab02-4ffc-860a-82f064794212",
"2070df87-beb9-4529-9ca0-c70c67633969",
"ee7e8d47-2cb1-4a76-974e-1ff62016f00a"
]
},
"daa41454-b9f5-4dd4-a698-05197f830a06": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 60,
"y": 1080
},
"z": 1,
"embeds": [],
"ismemberof": [
"88522464-ab02-4ffc-860a-82f064794212"
],
"isrelatedto": [
"56670de6-7357-44cb-b398-eeb02110c4f0",
"86a487f2-2709-4ca1-a1d4-9fae522eb073",
"8be6a4d0-cfc6-426e-ba6f-87d15f3ee7ea"
]
},
"0afaac9e-bd8f-4b1a-a664-661534372905": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": -240,
"y": 270
},
"z": 1,
"embeds": [],
"isconnectedto": [
"427a1d21-aab3-4a7a-8a0e-d86cd280d45d"
],
"isassociatedwith": [
"daa41454-b9f5-4dd4-a698-05197f830a06"
]
},
"f22cfe5e-d0b0-4a57-af70-a50863b08b41": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": -280,
"y": 670
},
"z": 1,
"embeds": [],
"ismemberof": [
"2070df87-beb9-4529-9ca0-c70c67633969"
],
"isrelatedto": [
"56670de6-7357-44cb-b398-eeb02110c4f0",
"86a487f2-2709-4ca1-a1d4-9fae522eb073",
"8be6a4d0-cfc6-426e-ba6f-87d15f3ee7ea"
]
},
"fa07b529-1c93-4d7b-96a9-fdab3eed647c": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 420,
"y": 1080
},
"z": 1,
"embeds": [],
"isconnectedto": [
"5cc252ad-a5f9-4a76-9459-946779c512b2",
"5f209750-8f12-4ffd-bc63-05b99969d758"
],
"isassociatedwith": [
"f22cfe5e-d0b0-4a57-af70-a50863b08b41"
]
},
"3317afa8-2d5d-4b57-9aee-8e4d785ab8e9": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 540,
"y": 1080
},
"z": 1,
"embeds": [],
"isconnectedto": [
"5cc252ad-a5f9-4a76-9459-946779c512b2"
],
"ismemberof": [
"e2590da3-90ae-4501-b928-6d23c7b0a0d2",
"d10b7d99-2bab-4c27-a2d0-fd18023484c9"
]
},
"e9b85a2c-0d9e-4ddc-969a-6a2e7810bfb1": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 280,
"y": 760
},
"z": 3,
"parent": "5cc252ad-a5f9-4a76-9459-946779c512b2",
"embeds": [],
"dependson": [
"351a27dd-5a11-4c21-9084-c9e5ff39bafd"
],
"isrelatedto": [
"88522464-ab02-4ffc-860a-82f064794212",
"ee7e8d47-2cb1-4a76-974e-1ff62016f00a",
"d10b7d99-2bab-4c27-a2d0-fd18023484c9"
]
},
"d3c02a9a-f43a-4ca4-97c6-f99b0df678c9": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 640,
"y": 490
},
"z": 3,
"parent": "8b1ef20d-49d6-4bba-9738-cd6565cd7336",
"embeds": [],
"references": [
"e9b85a2c-0d9e-4ddc-969a-6a2e7810bfb1"
]
},
"3221f40f-91c0-42cb-bb9e-8d2050b46b9c": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 660,
"y": 1080
},
"z": 1,
"embeds": [],
"ismemberof": [
"ee7e8d47-2cb1-4a76-974e-1ff62016f00a",
"d10b7d99-2bab-4c27-a2d0-fd18023484c9"
],
"isrelatedto": [
"55a5feed-d2c6-4dc9-83cf-94936ec806fe",
"56670de6-7357-44cb-b398-eeb02110c4f0",
"86a487f2-2709-4ca1-a1d4-9fae522eb073",
"8be6a4d0-cfc6-426e-ba6f-87d15f3ee7ea"
]
},
"7e733802-8c7c-4c57-a5bc-805247d2ae0b": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 780,
"y": 1080
},
"z": 1,
"embeds": [],
"isconnectedto": [
"5cc252ad-a5f9-4a76-9459-946779c512b2",
"3317afa8-2d5d-4b57-9aee-8e4d785ab8e9",
"8be6a4d0-cfc6-426e-ba6f-87d15f3ee7ea"
],
"isassociatedwith": [
"3221f40f-91c0-42cb-bb9e-8d2050b46b9c"
]
},
"530df17a-6946-42d9-90fe-10d4120e60a6": {
"size": {
"width": 300,
"height": 210
},
"position": {
"x": 250,
"y": 160
},
"z": 2,
"parent": "10319917-4a50-4ae9-a87e-c5f3fae67ddf",
"embeds": [
"90e1ff39-e708-4dc5-903b-8be18449b676",
"37c6e556-89b0-4753-9e37-f8db2a23ec83"
]
},
"90e1ff39-e708-4dc5-903b-8be18449b676": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 280,
"y": 220
},
"z": 3,
"parent": "530df17a-6946-42d9-90fe-10d4120e60a6",
"embeds": []
},
"e41f1425-c2c4-4f8d-b45e-d5c36b96c737": {
"source": {
"id": "530df17a-6946-42d9-90fe-10d4120e60a6"
},
"target": {
"id": "5cc252ad-a5f9-4a76-9459-946779c512b2"
},
"z": 2
},
"37c6e556-89b0-4753-9e37-f8db2a23ec83": {
"size": {
"width": 60,
"height": 60
},
"position": {
"x": 400,
"y": 220
},
"z": 3,
"parent": "530df17a-6946-42d9-90fe-10d4120e60a6",
"embeds": []
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment