Mụ na ya malitere ịrụ ọrụ igwe ojii Afọ 4 gara aga. Kemgbe ahụ, agbajiela m ọtụtụ akụrụngwa, ọbụlagodi ndị na-emepụtalarị. Ma mgbe ọ bụla m mejọrọ ihe, m na-amụta ihe ọhụrụ. Site na ahụmịhe a, a ga m ekekọrịta ụfọdụ nkuzi kacha mkpa m mụtara.
Ihe ọmụmụ 1: Nyochaa mgbanwe tupu ibunye ha
Amụtara m nkuzi a obere oge ka mụ na ya malitechara ọrụ igwe ojii. Anaghị m echeta ihe m mebiri mgbe ahụ, mana m na-echeta nke ọma na m ji iwu ahụ aws cloudformation update. Iwu a na-ebupụ ndebiri na-enweghị nkwado ọ bụla nke mgbanwe ndị a ga-ebuga. Echeghị m na nkọwa ọ bụla achọrọ maka ihe kpatara ị ga-eji nwalee mgbanwe niile tupu ibuga ha.
Mgbe ọdịda a gasịrị, m gbanwere ozugbo usoro ntinye ego, na-eji iwu dochie iwu mmelite mepụta-ngbanwe-nhazi
# OPERATION is either "UPDATE" or "CREATE"
changeset_id=$(aws cloudformation create-change-set
--change-set-name "$CHANGE_SET_NAME"
--stack-name "$STACK_NAME"
--template-body "$TPL_PATH"
--change-set-type "$OPERATION"
--parameters "$PARAMETERS"
--output text
--query Id)
aws cloudformation wait
change-set-create-complete --change-set-name "$changeset_id"
Ozugbo emepụtara ihe mgbanwe, ọ nweghị mmetụta na ngwugwu dị adị. N'adịghị ka iwu nwelite, ụzọ Changeet adịghị akpalite n'ezie nbunye. Kama, ọ na-emepụta ndepụta mgbanwe nke ị nwere ike nyochaa tupu ebuga ya. Ị nwere ike ịlele mgbanwe na interface aws console. Mana ọ bụrụ na ịchọrọ ịmegharị ihe niile ị nwere ike, lelee ha na CLI:
# this command is presented only for demonstrational purposes.
# the real command should take pagination into account
aws cloudformation describe-change-set
--change-set-name "$changeset_id"
--query 'Changes[*].ResourceChange.{Action:Action,Resource:ResourceType,ResourceId:LogicalResourceId,ReplacementNeeded:Replacement}'
--output table
Iwu a kwesịrị iwepụta mmepụta yiri nke a:
--------------------------------------------------------------------
| DescribeChangeSet |
+---------+--------------------+----------------------+------------+
| Action | ReplacementNeeded | Resource | ResourceId |
+---------+--------------------+----------------------+------------+
| Modify | True | AWS::ECS::Cluster | MyCluster |
| Replace| True | AWS::RDS::DBInstance| MyDB |
| Add | None | AWS::SNS::Topic | MyTopic |
+---------+--------------------+----------------------+------------+
Lezienụ anya na mgbanwe ebe Action dị Dochie, Hichapụ ma ọ bụ ebe Achọrọ Nnọchi - Eziokwu. Ndị a bụ mgbanwe kachasị dị ize ndụ ma na-edugakarị na enweghị ozi.
Ozugbo enyochala mgbanwe ndị a, enwere ike ibunye ha
aws cloudformation execute-change-set --change-set-name "$changeset_id"
operation_lowercase=$(echo "$OPERATION" | tr '[:upper:]' '[:lower:]')
aws cloudformation wait "stack-${operation_lowercase}-complete"
--stack-name "$STACK_NAME"
Ihe ọmụmụ 2: Jiri amụma nchịkọta iji gbochie dochie ma ọ bụ wepụ akụrụngwa steeti
Mgbe ụfọdụ naanị ile mgbanwe ndị ahụ ezughị. Anyị niile bụ mmadụ, anyị niile na-emehiekwa ihe. N'oge na-adịghị ka anyị malitere iji Changeets, onye otu m na-amaghị ama mere mbugharị nke butere mmelite nchekwa data. Ọ dịghị ihe ọjọọ mere n'ihi na ọ bụ ebe a na-anwale ule.
N'agbanyeghị na scripts anyị gosipụtara ndepụta mgbanwe wee rịọ maka nkwenye, agbanwere mgbanwe mgbanwe n'ihi na ndepụta mgbanwe buru ibu nke na ọ dabara na ihuenyo. Ma ebe ọ bụ na nke a bụ mmelite nkịtị na gburugburu ebe a na-anwale, a naghị elebara mgbanwe anya anya.
Enwere akụrụngwa ndị ị na-achọghị iji dochie ma ọ bụ wepu. Ndị a bụ ọrụ steeti zuru oke, dị ka ihe atụ nchekwa data RDS ma ọ bụ ụyọkọ elasticsearch, wdg. Ọ ga-adị mma ma ọ bụrụ na aws ga-ajụ ibunye ya ozugbo ma ọ bụrụ na ọrụ a na-arụ ga-achọ ihichapụ ụdị akụrụngwa ahụ. Luckily, ígwé ojii nwere ụzọ arụpụtara iji mee nke a. A na-akpọ nke a amụma stack, ma ị nwere ike ịgụkwu gbasara ya na ya
STACK_NAME=$1
RESOURCE_ID=$2
POLICY_JSON=$(cat <<EOF
{
"Statement" : [{
"Effect" : "Deny",
"Action" : [
"Update:Replace",
"Update:Delete"
],
"Principal": "*",
"Resource" : "LogicalResourceId/$RESOURCE_ID"
}]
}
EOF
)
aws cloudformation set-stack-policy --stack-name "$STACK_NAME"
--stack-policy-body "$POLICY_JSON"
Ihe nkuzi 3: Jiri UsePreviousValue mgbe ị na-emelite ngwugwu nwere paramita nzuzo
Mgbe ị mepụtara ihe RDS mysql, AWS chọrọ ka ịnye MasterUsername na MasterUserPassword. Ebe ọ bụ na ọ ka mma ịghara idebe ihe nzuzo na koodu isi na achọrọ m ịmegharị ihe niile, etinyere m "smart method" ebe tupu ntinye akwụkwọ ga-enweta nzere site na s3, ma ọ bụrụ na achọtaghị nzere ahụ, a na-emepụta nzere ọhụrụ na echekwara na s3.
A ga-ebufe nzere ndị a dị ka paramita na iwu Cloudformation create-change-set Command. Mgbe ị na-anwale edemede ahụ, o mere na njikọ ahụ na s3 furu efu, na "usoro smart" m mesoro ya dị ka ihe mgbaàmà iji mepụta nzere ọhụrụ.
Ọ bụrụ na m malitere iji edemede a na mmepụta na nsogbu njikọ ahụ mere ọzọ, ọ ga-eji nzere ọhụrụ kwalite nchịkọta ahụ. N'okwu a, ọ dịghị ihe ọjọọ ga-eme. Agbanyeghị, m hapụrụ usoro a wee malite iji nke ọzọ, na-enye nzere naanị otu ugboro - mgbe ị na-eke mkpokọta. Ma emesịa, mgbe nchịkọta ahụ chọrọ imelite, kama ịkọwa uru nzuzo nke paramita ahụ, m ga-eji ya. JiriPreviousValue=ezi:
aws cloudformation create-change-set
--change-set-name "$CHANGE_SET_NAME"
--stack-name "$STACK_NAME"
--template-body "$TPL_PATH"
--change-set-type "UPDATE"
--parameters "ParameterKey=MasterUserPassword,UsePreviousValue=true"
Ihe ọmụmụ 4: Jiri nhazigharị azụ
Otu ọzọ mụ na ya rụkọrọ ọrụ ji ọrụ ahụ igwe ojii, akpọ nhazigharị mpịakọta. Ahụbeghị m ya mbụ wee chọpụta ngwa ngwa na ọ ga-eme ka mwepu mkpọ mkpọ dị jụụ karị. Ugbu a, m na-eji ya oge ọ bụla m na-ebuga koodu m na lambda ma ọ bụ ECS site na iji igwe ojii.
Ka o si arụ ọrụ: ị kọwapụta CloudWatch mkpu na paramita --rollback-nhazimgbe ị mepụtara Changeset. Mgbe emechara, mgbe ịmere usoro mgbanwe, aws na-enyocha mkpu ma ọ dịkarịa ala otu nkeji. Ọ na-atụgharị mbugharị ahụ ma ọ bụrụ na oti mkpu na-agbanwe ọnọdụ ka ọ bụrụ Mkpuchi n'oge a.
N'okpuru bụ ọmụmaatụ nke ndebiri ndebiri igwe ojiinke m na-eke igwe elekere mkpu, nke na-eso metric onye ọrụ igwe ojii dị ka ọnụọgụ njehie dị na ndekọ igwe ojii (a na-emepụta metric ahụ site na MetricFilter):
Resources:
# this metric tracks number of errors in the cloudwatch logs. In this
# particular case it's assumed logs are in json format and the error logs are
# identified by level "error". See FilterPattern
ErrorMetricFilter:
Type: AWS::Logs::MetricFilter
Properties:
LogGroupName: !Ref LogGroup
FilterPattern: !Sub '{$.level = "error"}'
MetricTransformations:
- MetricNamespace: !Sub "${AWS::StackName}-log-errors"
MetricName: Errors
MetricValue: 1
DefaultValue: 0
ErrorAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: !Sub "${AWS::StackName}-errors"
Namespace: !Sub "${AWS::StackName}-log-errors"
MetricName: Errors
Statistic: Maximum
ComparisonOperator: GreaterThanThreshold
Period: 1 # 1 minute
EvaluationPeriods: 1
Threshold: 0
TreatMissingData: notBreaching
ActionsEnabled: yes
Ugbu a Mkpu enwere ike iji ya ahaghachi kpalite mgbe ị na-eme igbe ngwaọrụ:
ALARM_ARN=$1
ROLLBACK_TRIGGER=$(cat <<EOF
{
"RollbackTriggers": [
{
"Arn": "$ALARM_ARN",
"Type": "AWS::CloudWatch::Alarm"
}
],
"MonitoringTimeInMinutes": 1
}
EOF
)
aws cloudformation create-change-set
--change-set-name "$CHANGE_SET_NAME"
--stack-name "$STACK_NAME"
--template-body "$TPL_PATH"
--change-set-type "UPDATE"
--rollback-configuration "$ROLLBACK_TRIGGER"
Ihe ọmụmụ 5: Gbaa mbọ hụ na ị na-ebunye ụdị ndebiri kachasị ọhụrụ
Ọ dị mfe ibugharị ụdị nke igwe ojii na-adịchaghị ọhụrụ, mana ime nke a ga-akpata nnukwu mmebi. Nke a mere anyị otu ugboro: onye nrụpụta ebugharịghị mgbanwe ndị ọhụrụ sitere na Git wee bufee ụdị ngwugwu ahụ n'amaghị ama. Nke a butere mbelata oge maka ngwa nke ji nchịkọta a.
Ihe dị mfe dị ka ịgbakwunye nlele iji hụ ma alaka ụlọ ọrụ adịla ọhụrụ tupu ịme ya ga-adị mma (na-eche na git bụ ngwa njikwa ụdị gị):
git fetch
HEADHASH=$(git rev-parse HEAD)
UPSTREAMHASH=$(git rev-parse master@{upstream})
if [[ "$HEADHASH" != "$UPSTREAMHASH" ]] ; then
echo "Branch is not up to date with origin. Aborting"
exit 1
fi
Ihe omumu nke 6: Emeghachila wheel
Ọ nwere ike ịdị ka ibugharị ya na igwe ojii - ọ dị mfe. Naanị ị chọrọ ụyọkọ scripts bash na-emezu iwu aws cli.
Afọ 4 gara aga amalitere m site na edemede dị mfe a na-akpọ iwu aws cloudformation create-stack Command. N'oge na-adịghị anya, edemede adịkwaghị mfe. Ihe ọmụmụ ọ bụla a mụtara mere ka edemede ahụ dịkwuo mgbagwoju anya. Ọ bụghị naanị na ọ siri ike, kamakwa juputara na ahụhụ.
Ana m arụ ọrụ ugbu a na obere ngalaba IT. Ahụmahụ egosila na otu ọ bụla nwere ụzọ nke ya si ebubata nchịkọta igwe ojii. Nke ahụ dịkwa njọ. Ọ ga-aka mma ma ọ bụrụ na onye ọ bụla na-eme otu ụzọ ahụ. Ọ dabara nke ọma, enwere ọtụtụ ngwaọrụ dị iji nyere gị aka ibugharị na hazie nchịkọta igwe ojii.
Ihe mmụta ndị a ga-enyere gị aka izere mmejọ.
isi: www.habr.com