Created
December 1, 2015 13:41
-
-
Save ObjectIsAdvantag/a996f902608a7ab59983 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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