Ehhez az Amazon gyárt előreemésztett image-eket. Ezeket érdemes használni.
És a bökkenő itt jön. Ezek az image-ek pár havonta változnak, sőt az azonosítójuk más és más régiónként.
Az, hogy melyik az épp aktuálisan használandó darab, itt található:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html
Jó pár hónap után, meguntam, hogy amikor változtatok a CloudFormation scripteken, mindíg kézzel át kell írni ezt a legfrissebbre.
Jobban körülnézve ez automatizálható. Itt írnak róla, hogyan lehet hozzájutni a friss image azonosítójához:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_AMI.html
Ezt gyorsan ki is próbáltam:
Ez ugye két egymásba ágyazott JSON amiből nekünk ki kéne vakarni az "image_id" paramétert, hogy a CloudFormation scriptünk paramétereként fel tudjuk használni.
Ez a Jenkins pipeline scriptben valahogy így néz ki:
node
{
withAWS(credentials: awsCred, region: awsRegion)
{
sh "aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended --region ${p.region} --output json > AWSResponse.json"
}
def AWSResponse = readJSON file:'AWSResponse.json'
def ECSamiText = AWSResponse.Parameters[0].Value
def ECSamiJson = readJSON text: ECSamiText
def ECSamiId = ECSamiJson.image_id
echo ECSamiId
}
Az awsCred és az awsRegion paraméterek a pipeline paraméterekből jönnek. Az Ami ID-je az ECSamiId-ból használható a CloudFormation scriptünk paramétereként
Ahhoz, hogy ez működni tudjon a Jenkins-en kell a két következő plug-in:
- Pipeline: AWS Steps
- Pipeline Utility Steps
Nincsenek megjegyzések:
Megjegyzés küldése
Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.