Sequentially initialise ec2 via cft
I am trying to create a cft where due to some reason I want sequential initialisation of ec2 instances via cft.
Is it even possible?
amazon-ec2 ansible amazon-cloudformation aws-cli
add a comment |
I am trying to create a cft where due to some reason I want sequential initialisation of ec2 instances via cft.
Is it even possible?
amazon-ec2 ansible amazon-cloudformation aws-cli
Define sequential initialisation on this context. If you want one EC2 instance to be launched after another, you can chain them with theDependsOn
attribute from CloudFormation. If you want them to be launched at the same time but have initialisation scripts/steps to be taken in a certain order, you will need something like cfn-init and use WaitConditions and WaitHandlers.
– tyron
Nov 21 '18 at 17:57
I am writing cft to install rabbitmq and then add exiting cluster.My EC2s are part of ASG so DependsOn has LaunchConfiguration dependency. I want parallel installation of Rabbitmq on each EC2 node but sequential execution of cluster join scripts on each EC2 instance.
– jasmeet kaur
Jan 17 at 7:11
add a comment |
I am trying to create a cft where due to some reason I want sequential initialisation of ec2 instances via cft.
Is it even possible?
amazon-ec2 ansible amazon-cloudformation aws-cli
I am trying to create a cft where due to some reason I want sequential initialisation of ec2 instances via cft.
Is it even possible?
amazon-ec2 ansible amazon-cloudformation aws-cli
amazon-ec2 ansible amazon-cloudformation aws-cli
asked Nov 21 '18 at 2:22
jasmeet kaurjasmeet kaur
11
11
Define sequential initialisation on this context. If you want one EC2 instance to be launched after another, you can chain them with theDependsOn
attribute from CloudFormation. If you want them to be launched at the same time but have initialisation scripts/steps to be taken in a certain order, you will need something like cfn-init and use WaitConditions and WaitHandlers.
– tyron
Nov 21 '18 at 17:57
I am writing cft to install rabbitmq and then add exiting cluster.My EC2s are part of ASG so DependsOn has LaunchConfiguration dependency. I want parallel installation of Rabbitmq on each EC2 node but sequential execution of cluster join scripts on each EC2 instance.
– jasmeet kaur
Jan 17 at 7:11
add a comment |
Define sequential initialisation on this context. If you want one EC2 instance to be launched after another, you can chain them with theDependsOn
attribute from CloudFormation. If you want them to be launched at the same time but have initialisation scripts/steps to be taken in a certain order, you will need something like cfn-init and use WaitConditions and WaitHandlers.
– tyron
Nov 21 '18 at 17:57
I am writing cft to install rabbitmq and then add exiting cluster.My EC2s are part of ASG so DependsOn has LaunchConfiguration dependency. I want parallel installation of Rabbitmq on each EC2 node but sequential execution of cluster join scripts on each EC2 instance.
– jasmeet kaur
Jan 17 at 7:11
Define sequential initialisation on this context. If you want one EC2 instance to be launched after another, you can chain them with the
DependsOn
attribute from CloudFormation. If you want them to be launched at the same time but have initialisation scripts/steps to be taken in a certain order, you will need something like cfn-init and use WaitConditions and WaitHandlers.– tyron
Nov 21 '18 at 17:57
Define sequential initialisation on this context. If you want one EC2 instance to be launched after another, you can chain them with the
DependsOn
attribute from CloudFormation. If you want them to be launched at the same time but have initialisation scripts/steps to be taken in a certain order, you will need something like cfn-init and use WaitConditions and WaitHandlers.– tyron
Nov 21 '18 at 17:57
I am writing cft to install rabbitmq and then add exiting cluster.My EC2s are part of ASG so DependsOn has LaunchConfiguration dependency. I want parallel installation of Rabbitmq on each EC2 node but sequential execution of cluster join scripts on each EC2 instance.
– jasmeet kaur
Jan 17 at 7:11
I am writing cft to install rabbitmq and then add exiting cluster.My EC2s are part of ASG so DependsOn has LaunchConfiguration dependency. I want parallel installation of Rabbitmq on each EC2 node but sequential execution of cluster join scripts on each EC2 instance.
– jasmeet kaur
Jan 17 at 7:11
add a comment |
1 Answer
1
active
oldest
votes
You will need to use a combination of cfn-init and cfn-signal to orchestrate this.
Follow below a sample that should give you a good idea on how to do that.
Resources:
Server1:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c primary -s ${AWS::StackId} -r Server1 --region ${AWS::Region}
yum -y update
Metadata:
AWS::CloudFormation::Init:
configSets:
primary:
- InstallPreRequisites
- CreateCluster # will be run only in master node
secondary:
- InstallPreRequisites
- JoinCluster # will be run in each secondary node
InstallPreRequisites:
commands:
a-install-app:
command:
"install apps on each server"
b-signal-node-ready-join-cluster:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref AllNodesReadyToJoinClusterWaitHandle
CreateCluster:
commands:
a-create-cluster:
command:
"your commands to create the cluster"
b-signal-cluster-created:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref ClusterCreatedWaitHandle
JoinCluster:
a-wait-cluster-created:
command: !Sub >-
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
while [ "$output" != "CREATE_COMPLETE" ] && [ "$output" != "UPDATE_COMPLETE" ];
do
sleep 10
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
done
waitAfterCompletion: '0'
b-join-cluster:
command:
"your commands to join the cluster"
waitAfterCompletion: '0'
Server2:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server2 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...] # exactly same as above... one will be primary, the other secondary, due to UserData cfn-init parameter
Server3:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server3 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...]
AllNodesReadyToJoinClusterWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref AllNodesReadyToJoinClusterWaitHandle
Count: 3 # this should match the number of nodes on your cluster
Timeout: '7200'
AllNodesReadyToJoinClusterWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
ClusterCreatedWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref ClusterCreatedWaitHandle
Count: 1 # only one node (master) will signal this
Timeout: '7200'
ClusterCreatedWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53404462%2fsequentially-initialise-ec2-via-cft%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You will need to use a combination of cfn-init and cfn-signal to orchestrate this.
Follow below a sample that should give you a good idea on how to do that.
Resources:
Server1:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c primary -s ${AWS::StackId} -r Server1 --region ${AWS::Region}
yum -y update
Metadata:
AWS::CloudFormation::Init:
configSets:
primary:
- InstallPreRequisites
- CreateCluster # will be run only in master node
secondary:
- InstallPreRequisites
- JoinCluster # will be run in each secondary node
InstallPreRequisites:
commands:
a-install-app:
command:
"install apps on each server"
b-signal-node-ready-join-cluster:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref AllNodesReadyToJoinClusterWaitHandle
CreateCluster:
commands:
a-create-cluster:
command:
"your commands to create the cluster"
b-signal-cluster-created:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref ClusterCreatedWaitHandle
JoinCluster:
a-wait-cluster-created:
command: !Sub >-
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
while [ "$output" != "CREATE_COMPLETE" ] && [ "$output" != "UPDATE_COMPLETE" ];
do
sleep 10
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
done
waitAfterCompletion: '0'
b-join-cluster:
command:
"your commands to join the cluster"
waitAfterCompletion: '0'
Server2:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server2 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...] # exactly same as above... one will be primary, the other secondary, due to UserData cfn-init parameter
Server3:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server3 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...]
AllNodesReadyToJoinClusterWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref AllNodesReadyToJoinClusterWaitHandle
Count: 3 # this should match the number of nodes on your cluster
Timeout: '7200'
AllNodesReadyToJoinClusterWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
ClusterCreatedWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref ClusterCreatedWaitHandle
Count: 1 # only one node (master) will signal this
Timeout: '7200'
ClusterCreatedWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
add a comment |
You will need to use a combination of cfn-init and cfn-signal to orchestrate this.
Follow below a sample that should give you a good idea on how to do that.
Resources:
Server1:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c primary -s ${AWS::StackId} -r Server1 --region ${AWS::Region}
yum -y update
Metadata:
AWS::CloudFormation::Init:
configSets:
primary:
- InstallPreRequisites
- CreateCluster # will be run only in master node
secondary:
- InstallPreRequisites
- JoinCluster # will be run in each secondary node
InstallPreRequisites:
commands:
a-install-app:
command:
"install apps on each server"
b-signal-node-ready-join-cluster:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref AllNodesReadyToJoinClusterWaitHandle
CreateCluster:
commands:
a-create-cluster:
command:
"your commands to create the cluster"
b-signal-cluster-created:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref ClusterCreatedWaitHandle
JoinCluster:
a-wait-cluster-created:
command: !Sub >-
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
while [ "$output" != "CREATE_COMPLETE" ] && [ "$output" != "UPDATE_COMPLETE" ];
do
sleep 10
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
done
waitAfterCompletion: '0'
b-join-cluster:
command:
"your commands to join the cluster"
waitAfterCompletion: '0'
Server2:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server2 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...] # exactly same as above... one will be primary, the other secondary, due to UserData cfn-init parameter
Server3:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server3 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...]
AllNodesReadyToJoinClusterWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref AllNodesReadyToJoinClusterWaitHandle
Count: 3 # this should match the number of nodes on your cluster
Timeout: '7200'
AllNodesReadyToJoinClusterWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
ClusterCreatedWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref ClusterCreatedWaitHandle
Count: 1 # only one node (master) will signal this
Timeout: '7200'
ClusterCreatedWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
add a comment |
You will need to use a combination of cfn-init and cfn-signal to orchestrate this.
Follow below a sample that should give you a good idea on how to do that.
Resources:
Server1:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c primary -s ${AWS::StackId} -r Server1 --region ${AWS::Region}
yum -y update
Metadata:
AWS::CloudFormation::Init:
configSets:
primary:
- InstallPreRequisites
- CreateCluster # will be run only in master node
secondary:
- InstallPreRequisites
- JoinCluster # will be run in each secondary node
InstallPreRequisites:
commands:
a-install-app:
command:
"install apps on each server"
b-signal-node-ready-join-cluster:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref AllNodesReadyToJoinClusterWaitHandle
CreateCluster:
commands:
a-create-cluster:
command:
"your commands to create the cluster"
b-signal-cluster-created:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref ClusterCreatedWaitHandle
JoinCluster:
a-wait-cluster-created:
command: !Sub >-
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
while [ "$output" != "CREATE_COMPLETE" ] && [ "$output" != "UPDATE_COMPLETE" ];
do
sleep 10
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
done
waitAfterCompletion: '0'
b-join-cluster:
command:
"your commands to join the cluster"
waitAfterCompletion: '0'
Server2:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server2 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...] # exactly same as above... one will be primary, the other secondary, due to UserData cfn-init parameter
Server3:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server3 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...]
AllNodesReadyToJoinClusterWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref AllNodesReadyToJoinClusterWaitHandle
Count: 3 # this should match the number of nodes on your cluster
Timeout: '7200'
AllNodesReadyToJoinClusterWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
ClusterCreatedWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref ClusterCreatedWaitHandle
Count: 1 # only one node (master) will signal this
Timeout: '7200'
ClusterCreatedWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
You will need to use a combination of cfn-init and cfn-signal to orchestrate this.
Follow below a sample that should give you a good idea on how to do that.
Resources:
Server1:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c primary -s ${AWS::StackId} -r Server1 --region ${AWS::Region}
yum -y update
Metadata:
AWS::CloudFormation::Init:
configSets:
primary:
- InstallPreRequisites
- CreateCluster # will be run only in master node
secondary:
- InstallPreRequisites
- JoinCluster # will be run in each secondary node
InstallPreRequisites:
commands:
a-install-app:
command:
"install apps on each server"
b-signal-node-ready-join-cluster:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref AllNodesReadyToJoinClusterWaitHandle
CreateCluster:
commands:
a-create-cluster:
command:
"your commands to create the cluster"
b-signal-cluster-created:
command: !Join
- ''
- - '/opt/aws/bin/cfn-signal -e 0 '
- Fn::Base64: !Ref ClusterCreatedWaitHandle
JoinCluster:
a-wait-cluster-created:
command: !Sub >-
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
while [ "$output" != "CREATE_COMPLETE" ] && [ "$output" != "UPDATE_COMPLETE" ];
do
sleep 10
output=$(aws cloudformation describe-stack-resource
--region=${AWS::Region}
--stack-name=${AWS::StackName}
--logical-resource-id=ClusterCreatedWaitCondition
--output=text
--query=StackResourceDetail.ResourceStatus)
done
waitAfterCompletion: '0'
b-join-cluster:
command:
"your commands to join the cluster"
waitAfterCompletion: '0'
Server2:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server2 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...] # exactly same as above... one will be primary, the other secondary, due to UserData cfn-init parameter
Server3:
Type: AWS::EC2::Instance
Properties:
[...]
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum update -y aws-cfn-bootstrap # good practice - always do this.
/opt/aws/bin/cfn-init -v -c secondary -s ${AWS::StackId} -r Server3 --region ${AWS::Region} # Resource was updated here
yum -y update
Metadata:
AWS::CloudFormation::Init:
[...]
AllNodesReadyToJoinClusterWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref AllNodesReadyToJoinClusterWaitHandle
Count: 3 # this should match the number of nodes on your cluster
Timeout: '7200'
AllNodesReadyToJoinClusterWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
ClusterCreatedWaitCondition:
Type: 'AWS::CloudFormation::WaitCondition'
Properties:
Handle: !Ref ClusterCreatedWaitHandle
Count: 1 # only one node (master) will signal this
Timeout: '7200'
ClusterCreatedWaitHandle:
Type: 'AWS::CloudFormation::WaitConditionHandle'
answered Jan 18 at 15:52
tyrontyron
1,053925
1,053925
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53404462%2fsequentially-initialise-ec2-via-cft%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Define sequential initialisation on this context. If you want one EC2 instance to be launched after another, you can chain them with the
DependsOn
attribute from CloudFormation. If you want them to be launched at the same time but have initialisation scripts/steps to be taken in a certain order, you will need something like cfn-init and use WaitConditions and WaitHandlers.– tyron
Nov 21 '18 at 17:57
I am writing cft to install rabbitmq and then add exiting cluster.My EC2s are part of ASG so DependsOn has LaunchConfiguration dependency. I want parallel installation of Rabbitmq on each EC2 node but sequential execution of cluster join scripts on each EC2 instance.
– jasmeet kaur
Jan 17 at 7:11