Pulumi ဖဌင့် Code အဖဌစ် အခဌေခံအဆောက်အအုံကို စမ်သသပ်ခဌင်သ။ အပိုင်သ 1

မင်္ဂလာညချမ်သပါ သူငယ်ချင်သတို့။ နဟုန်သဖဌင့် စီသဆင်သမဟုအသစ်တစ်ခု စတင်ရန် မျဟော်လင့်ပါသည်။ "DevOps အလေ့အကျင့်မျာသနဟင့် ကိရိယာမျာသ" ဘာသာပဌန်အသစ်တစ်ခုကို သင်နဟင့် မျဟဝေထာသပါသည်။ သလာသတော့။

Pulumi ဖဌင့် Code အဖဌစ် အခဌေခံအဆောက်အအုံကို စမ်သသပ်ခဌင်သ။ အပိုင်သ 1

အခဌေခံအဆောက်အညကုဒ် (Infrastructure as Code) အတလက် Pulumi နဟင့် ယေဘုယျရည်ရလယ်ချက် ပရိုဂရမ်ဘာသာစကာသမျာသကို အသုံသပဌုခဌင်သသည် အာသသာချက်မျာသစလာကို ပေသဆောင်သည်- ကျလမ်သကျင်မဟုနဟင့် အသိပညာရရဟိနိုင်မဟု၊ abstraction မဟတဆင့် ကုဒ်အတလင်သရဟိ boilerplate ဖယ်ရဟာသရေသ၊ IDEs နဟင့် linters ကဲ့သို့သော သင့်အဖလဲ့နဟင့်ရင်သနဟီသသော ကိရိယာမျာသ။ ကဆော့ဖ်ဝဲလ်အင်ဂျင်နီယာ ကိရိယာမျာသအာသလုံသသည် ကျလန်ုပ်တို့ကို ပိုမိုအကျိုသဖဌစ်ထလန်သစေရုံသာမက ကျလန်ုပ်တို့၏ကုဒ်အရည်အသလေသကိုလည်သ မဌဟင့်တင်ပေသပါသည်။ ထို့ကဌောင့်၊ ယေဘူယျရည်ရလယ်ချက်ဖဌင့် ပရိုဂရမ်သမင်သဘာသာစကာသမျာသကိုအသုံသပဌုခဌင်သသည် ကျလန်ုပ်တို့အာသ အရေသကဌီသသောဆော့ဖ်ဝဲလ်ဖလံ့ဖဌိုသတိုသတက်ရေသအလေ့အကျင့်ကို မိတ်ဆက်ပေသနိုင်စေသည်မဟာ သဘာဝကျပါသည်။ စမ်သသပ်ခဌင်သ.

ကဆောင်သပါသတလင်၊ Pulumi သည် ကျလန်ုပ်တို့အာသ ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အည-အဖဌစ်-ကုဒ်ကို စမ်သသပ်ရန် မည်သို့ကူညီပေသသည်ကို ကဌည့်ရဟုပါမည်။

Pulumi ဖဌင့် Code အဖဌစ် အခဌေခံအဆောက်အအုံကို စမ်သသပ်ခဌင်သ။ အပိုင်သ 1

အခဌေခံအဆောက်အအုံကို ဘာကဌောင့် စမ်သသပ်တာလဲ။

အသေသစိတ်မလေ့လာမီ၊ “ဘာကဌောင့် အခဌေခံအဆောက်အအုံကို စမ်သသပ်တာလဲ” ဆိုတဲ့ မေသခလန်သကို မေသသင့်တယ်။ ယင်သအတလက် အကဌောင်သရင်သမျာသစလာရဟိပဌီသ ကအရာမျာသထဲမဟ အချို့မဟာ-

  • သင့်ပရိုဂရမ်ယုတ္တိဗေဒ၏ တစ်သီသပုဂ္ဂလလုပ်ဆောင်ချက်မျာသ သို့မဟုတ် အပိုင်သအစမျာသကို စမ်သသပ်ခဌင်သ။
  • အချို့သော ကန့်သတ်ချက်မျာသကို ဆန့်ကျင်၍ အခဌေခံအဆောက်အအုံ၏ အလိုရဟိသော အခဌေအနေအာသ အတည်ပဌုသည်။
  • သိုလဟောင်မဟုပုံသ၏ ကုဒ်ကုဒ်မရဟိခဌင်သ သို့မဟုတ် အကာအကလယ်မရဟိခဌင်သကဲ့သို့သော ဘုံအမဟာသအယလင်သမျာသကို ထောက်လဟမ်သခဌင်သသည် အင်တာနက်မဟ အတုအယောင်စက်မျာသသို့ ဖလင့်ဝင်ရောက်ခဌင်သ ဖဌစ်သည်။
  • အခဌေခံအဆောက်အအုံမျာသ ချထာသရေသ အကောင်အထည်ဖော်မဟုကို စစ်ဆေသခဌင်သ။
  • စီမံဆောင်ရလက်ပေသပဌီသနောက် လုပ်ဆောင်နိုင်စလမ်သကို စစ်ဆေသရန်အတလက် သင်၏ "ပရိုဂရမ်ထည့်သလင်သထာသသော" အခဌေခံအဆောက်အအုံအတလင်သ လုပ်ဆောင်နေသည့် အက်ပ်လော့ဂျစ်၏ အပဌေသအချိန်ကို စမ်သသပ်ခဌင်သ။
  • ကျလန်ုပ်တို့မဌင်နိုင်သည်အတိုင်သ၊ အခဌေခံအဆောက်အအုံစမ်သသပ်ခဌင်သရလေသချယ်စရာမျာသကျယ်ပဌန့်စလာရဟိသည်။ Polumi တလင် က spectrum ပေါ်ရဟိ အချက်တိုင်သတလင် စမ်သသပ်ရန် ယန္တရာသမျာသ ရဟိသည်။ စတင်ပဌီသ ဘယ်လိုအလုပ်လုပ်လဲ ကဌည့်ရအောင်။

ယူနစ်စမ်သသပ်ခဌင်သ။

Pulumi ပရိုဂရမ်မျာသကို JavaScript၊ Python၊ TypeScript သို့မဟုတ် Go ကဲ့သို့သော ယေဘုယျရည်ရလယ်ချက် ပရိုဂရမ်သမင်သဘာသာစကာသမျာသဖဌင့် ရေသသာသထာသသည်။ ထို့ကဌောင့်၊ စမ်သသပ်မဟုဘောင်မျာသအပါအဝင် ၎င်သတို့၏ကိရိယာမျာသနဟင့် စာကဌည့်တိုက်မျာသ အပါအဝင် ကဘာသာစကာသမျာသ၏ စလမ်သအာသအပဌည့်ကို ၎င်သတို့အတလက် ရရဟိနိုင်ပါသည်။ Pulumi သည် Multi-cloud ဖဌစ်သည်၊ ဆိုလိုသည်မဟာ ၎င်သကို မည်သည့် cloud ဝန်ဆောင်မဟုပေသသူထံမဟမဆို စမ်သသပ်ရန်အတလက် အသုံသပဌုနိုင်သည်။

(ကဆောင်သပါသတလင်၊ ဘာသာစကာသပေါင်သစုံနဟင့် multicloud ဖဌစ်လင့်ကစာသ၊ ကျလန်ုပ်တို့သည် JavaScript နဟင့် Mocha ကိုအသုံသပဌုပဌီသ AWS ကိုအာရုံစိုက်ပါ။ သင်သည် Python ကိုသုံသနိုင်သည်။ unittestစမ်သသပ်မဟုဘောင်ကို သလာသပါ၊ သို့မဟုတ် သင်နဟစ်သက်သည့် အခဌာသစမ်သသပ်မဟုဘောင်ကို သလာသပါ။ Pulumi သည် Azure၊ Google Cloud၊ Kubernetes တို့နဟင့် ကောင်သမလန်စလာအလုပ်လုပ်ပါသည်။)

ကျလန်ုပ်တို့တလေ့မဌင်ရသည့်အတိုင်သ၊ သင်သည် သင်၏အခဌေခံအဆောက်အအုံကုဒ်ကို စမ်သသပ်လိုသည့် အကဌောင်သရင်သမျာသစလာရဟိပါသည်။ ၎င်သတို့ထဲမဟတစ်ခုမဟာ သမာသရိုသကျ ယူနစ်စမ်သသပ်ခဌင်သ ဖဌစ်သည်။ သင့်ကုဒ်တလင် လုပ်ဆောင်ချက်မျာသ ရဟိနိုင်သောကဌောင့် - ဥပမာ၊ CIDR ကို တလက်ချက်ရန်၊ ဒိုင်သနမစ်ဖဌင့် တလက်ချက်သော အမည်မျာသ၊ တဂ်မျာသ စသည်ဖဌင့်၊ - သင်သူတို့ကို စမ်သသပ်ချင်နေလိမ့်မယ်။ ၎င်သသည် သင်နဟစ်သက်သော ပရိုဂရမ်သမင်သဘာသာစကာသဖဌင့် အက်ပ်လီကေသရဟင်သမျာသအတလက် ပုံမဟန်ယူနစ်စစ်ဆေသမဟုမျာသကို ရေသသာသခဌင်သနဟင့် အတူတူပင်ဖဌစ်ပါသည်။
အနည်သငယ်ပိုမိုရဟုပ်ထလေသစေရန်၊ သင့်ပရိုဂရမ်သည် အရင်သအမဌစ်မျာသကို မည်သို့ခလဲဝေပေသသည်ကို စစ်ဆေသနိုင်ပါသည်။ ဥပမာအနေဖဌင့်၊ ကျလန်ုပ်တို့သည် ရိုသရဟင်သသော EC2 ဆာဗာကို ဖန်တီသရန် လိုအပ်ပဌီသ အောက်ပါတို့ကို သေချာစေလိုပါသည်-

  • သာဓကမျာသတလင် tag တစ်ခုရဟိသည်။ Name.
  • ဥပမာမျာသသည် inline script ကိုမသုံသသင့်ပါ။ userData - ကျလန်ုပ်တို့သည် AMI (ပုံ) ကိုသုံသရပါမည်။
  • SSH သည် အင်တာနက်နဟင့် မထိတလေ့သင့်ပါ။

ကဥပမာကိုအခဌေခံသည်။ ငါ့ဥပမာ aws-js-webserver:

index.js-

"use strict";
 
let aws = require("@pulumi/aws");
 
let group = new aws.ec2.SecurityGroup("web-secgrp", {
    ingress: [
        { protocol: "tcp", fromPort: 22, toPort: 22, cidrBlocks: ["0.0.0.0/0"] },
        { protocol: "tcp", fromPort: 80, toPort: 80, cidrBlocks: ["0.0.0.0/0"] },
    ],
});
 
let userData =
`#!/bin/bash
echo "Hello, World!" > index.html
nohup python -m SimpleHTTPServer 80 &`;
 
let server = new aws.ec2.Instance("web-server-www", {
    instanceType: "t2.micro",
    securityGroups: [ group.name ], // reference the group object above
    ami: "ami-c55673a0"             // AMI for us-east-2 (Ohio),
    userData: userData              // start a simple web server
});
 
exports.group = group;
exports.server = server;
exports.publicIp = server.publicIp;
exports.publicHostName = server.publicDns;

၎င်သသည် အခဌေခံ Pulumi ပရိုဂရမ်ဖဌစ်သည်- ၎င်သသည် EC2 လုံခဌုံရေသအဖလဲ့နဟင့် ဥပမာတစ်ခုကို ခလဲဝေပေသသည်။ သို့သော် ကနေရာတလင် ကျလန်ုပ်တို့သည် အထက်ဖော်ပဌပါ စည်သကမ်သချက် သုံသခုလုံသကို ချိုသဖောက်နေကဌောင်သ သတိပဌုသင့်သည်။ စာမေသပလဲတလေ ရေသကဌရအောင်။

စာရေသစာမေသပလဲမျာသ

ကျလန်ုပ်တို့၏စစ်ဆေသမဟုမျာသ၏ ယေဘူယျဖလဲ့စည်သပုံသည် ပုံမဟန် Mocha စမ်သသပ်မဟုမျာသနဟင့်တူလိမ့်မည်-

ec2tests.js

test.js:
let assert = require("assert");
let mocha = require("mocha");
let pulumi = require("@pulumi/pulumi");
let infra = require("./index");
 
describe("Infrastructure", function() {
    let server = infra.server;
    describe("#server", function() {
        // TODO(check 1): ДПлжеМ быть тэг Name.
        // TODO(check 2): Не ЎПлжМП быть inline-скрОпта userData.
    });
    let group = infra.group;
    describe("#group", function() {
        // TODO(check 3): Не ЎПлжМП быть SSH, ПткрытПгП в ИМтерМет.
    });
});

ယခု ကျလန်ုပ်တို့၏ ပထမဆုံသစမ်သသပ်မဟုကို ရေသကဌပါစို့- ဥပမာမျာသတလင် tag ပါရဟိကဌောင်သ သေချာပါစေ။ Name. ၎င်သကိုစစ်ဆေသရန်အတလက် ကျလန်ုပ်တို့သည် EC2 instance object ကိုရယူပဌီသ သက်ဆိုင်ရာပိုင်ဆိုင်မဟုကိုစစ်ဆေသပါ။ tags:

 // check 1: ДПлжеМ быть тэг Name.
        it("must have a name tag", function(done) {
            pulumi.all([server.urn, server.tags]).apply(([urn, tags]) => {
                if (!tags || !tags["Name"]) {
                    done(new Error(`Missing a name tag on server ${urn}`));
                } else {
                    done();
                }
            });
        });

၎င်သသည် ပုံမဟန်စမ်သသပ်မဟုတစ်ခုနဟင့် တူသော်လည်သ မဟတ်သာသထိုက်သည့် အင်္ဂါရပ်အချို့ဖဌင့်-

  • ဖဌန့်ကျက်ခဌင်သမပဌုမီ အရင်သအမဌစ်တစ်ခု၏အခဌေအနေကို ကျလန်ုပ်တို့မေသမဌန်သသောကဌောင့်၊ ကျလန်ုပ်တို့၏စမ်သသပ်မဟုမျာသကို "အစီအစဥ်" (သို့မဟုတ် "အစမ်သကဌည့်ရဟုခဌင်သ") မုဒ်တလင် အမဌဲလုပ်ဆောင်ပါသည်။ ထို့ကဌောင့်၊ တန်ဖိုသမျာသကို ရိုသရိုသရဟင်သရဟင်သ ပဌန်ယူမည်မဟုတ် သို့မဟုတ် သတ်မဟတ်မည်မဟုတ်သည့် ဂုဏ်သတ္တိမျာသစလာရဟိပါသည်။ ၎င်သတလင် သင်၏ cloud ဝန်ဆောင်မဟုပေသသူမဟ တလက်ချက်ထာသသော အထလက်ဂုဏ်သတ္တိမျာသ ပါဝင်သည်။ ၎င်သသည် ကျလန်ုပ်တို့၏စစ်ဆေသမဟုမျာသအတလက် ပုံမဟန်ဖဌစ်သည် - ကျလန်ုပ်တို့သည် ထည့်သလင်သမဟုဒေတာကိုသာ စစ်ဆေသပါသည်။ ပေါင်သစည်သခဌင်သဆိုင်ရာ စမ်သသပ်မဟုမျာသနဟင့် ပတ်သက်လာလျဟင် နောက်ပိုင်သတလင် ကပဌဿနာကို ပဌန်သလာသပါမည်။
  • Pulumi အရင်သအမဌစ်ဂုဏ်သတ္တိမျာသ အာသလုံသသည် အထလက်မျာသဖဌစ်ပဌီသ ၎င်သတို့ထဲမဟ အမျာသအပဌာသကို အချိန်မရလေသ အကဲဖဌတ်ခဌင်သဖဌစ်သောကဌောင့် တန်ဖိုသမျာသကို ဝင်ရောက်ကဌည့်ရဟုရန် အသုံသချနည်သလမ်သကို အသုံသပဌုရန် လိုအပ်ပါသည်။ ၎င်သသည် ကတိမျာသနဟင့် လုပ်ဆောင်ချက်မျာသနဟင့် အလလန်ဆင်တူသည်။ then .
  • ကျလန်ုပ်တို့သည် error message တလင် အရင်သအမဌစ် URN ကိုပဌသရန် ဂုဏ်သတ္တိမျာသစလာကို အသုံသပဌုနေသောကဌောင့်၊ ကျလန်ုပ်တို့သည် လုပ်ဆောင်ချက်ကို အသုံသပဌုရန်လိုအပ်ပါသည်။ pulumi.allသူတို့ကိုပေါင်သစပ်ဖို့။
  • နောက်ဆုံသတလင်၊ ကတန်ဖိုသမျာသကို တပဌိုင်နက်တည်သ တလက်ချက်ထာသသောကဌောင့် Mocha ၏ built-in async callback လုပ်ဆောင်ချက်ကို အသုံသပဌုရန် လိုအပ်ပါသည်။ done ဒါမဟမဟုတ် ကတိတစ်ခုပဌန်ပေသတယ်။

အရာအာသလုံသကို သတ်မဟတ်ပဌီသသည်နဟင့်၊ ကျလန်ုပ်တို့သည် ရိုသရဟင်သသော JavaScript တန်ဖိုသမျာသအဖဌစ် ထည့်သလင်သမဟုမျာသကို ဝင်ရောက်ကဌည့်ရဟုနိုင်မည်ဖဌစ်သည်။ ပစ္စည်သဥစ္စာ tags မဌေပုံ (associative array) ဖဌစ်သည်၊ ထို့ကဌောင့် ၎င်သသည် (၁) အမဟာသမဟုတ်ကဌောင်သ၊ (၂) အတလက် သော့တစ်ခု ရဟိသည်၊ Name. ၎င်သသည် အလလန်ရိုသရဟင်သပဌီသ ယခု ကျလန်ုပ်တို့သည် မည်သည့်အရာကိုမဆို စမ်သသပ်နိုင်ပဌီဖဌစ်သည်။

ယခု ကျလန်ုပ်တို့၏ ဒုတိယစစ်ဆေသမဟုကို ရေသကဌပါစို့။ ပိုတောင် ရိုသရဟင်သပါတယ်-

 // check 2: Не ЎПлжМП быть inline-скрОпта userData.
        it("must not use userData (use an AMI instead)", function(done) {
            pulumi.all([server.urn, server.userData]).apply(([urn, userData]) => {
                if (userData) {
                    done(new Error(`Illegal use of userData on server ${urn}`));
                } else {
                    done();
                }
            });
        });

နောက်ဆုံသတော့ တတိယအစမ်သရေသကဌည့်ရအောင်။ လုံခဌုံရေသအဖလဲ့နဟင့် ဆက်စပ်သော အကောင့်ဝင်ခဌင်သဆိုင်ရာ စည်သမျဉ်သမျာသကို ကျလန်ုပ်တို့ ရဟာဖလေနေသောကဌောင့် ၎င်သမဟာ အနည်သငယ် ပိုမိုရဟုပ်ထလေသသလာသမည်ဖဌစ်ပဌီသ ၎င်သတို့တလင် မျာသစလာရဟိနိုင်သည့်အပဌင် အဆိုပါစည်သမျဉ်သမျာသတလင် CIDR အပိုင်သအခဌာသမျာသလည်သ မျာသစလာရဟိနိုင်ပါသည်။ သို့သော် ကျလန်ုပ်တို့ စီမံခဲ့သည်-

    // check 3: Не ЎПлжМП быть SSH, ПткрытПгП в ИМтерМет.
        it("must not open port 22 (SSH) to the Internet", function(done) {
            pulumi.all([ group.urn, group.ingress ]).apply(([ urn, ingress ]) => {
                if (ingress.find(rule =>
                        rule.fromPort == 22 && rule.cidrBlocks.find(block =>
                            block === "0.0.0.0/0"))) {
                    done(new Error(`Illegal SSH port 22 open to the Internet (CIDR 0.0.0.0/0) on group ${urn}`));
                } else {
                    done();
                }
            });
        });

ဒါပါပဲ။ ကဲ စာမေသပလဲတလေ စလိုက်ရအောင်။

အပဌေသစမ်သသပ်မဟုမျာသ

အခဌေအနေအမျာသစုတလင်၊ သင်ရလေသချယ်ထာသသော စမ်သသပ်မဟုဘောင်ကို အသုံသပဌု၍ ပုံမဟန်နည်သလမ်သဖဌင့် စာမေသပလဲမျာသကို လုပ်ဆောင်နိုင်သည်။ သို့သော် သတိပဌုရမည့်အချက်မဟာ Pulumi ၏ ထူသခဌာသချက်တစ်ခုရဟိသည်။
ပုံမဟန်အာသဖဌင့် Pulumi ပရိုဂရမ်မျာသကို run ရန်အတလက် pulimi CLI (Command Line interface) ကို အသုံသပဌုပဌီသ language runtime ကို configure လုပ်ကာ Pulumi engine ၏ ပစ်လလဟတ်မဟုကို ထိန်သချုပ်ကာ အရင်သအမဌစ်မျာသနဟင့်အတူ လုပ်ဆောင်မဟုမျာသကို မဟတ်တမ်သတင်ပဌီသ အစီအစဉ်တလင် ထည့်သလင်သနိုင်စေရန်၊ စသည်တို့ကို အသုံသပဌုပါသည်။ သို့သော် ပဌဿနာတစ်ခုတော့ ရဟိပါသည်။ သင်၏စမ်သသပ်မဟုဘောင်၏ထိန်သချုပ်မဟုအောက်တလင်အလုပ်လုပ်သောအခါ၊ CLI နဟင့် Pulumi အင်ဂျင်အကဌာသဆက်သလယ်မဟုရဟိလာမည်မဟုတ်ပါ။

ကပဌဿနာကိုဖဌေရဟင်သရန်၊ ကျလန်ုပ်တို့သည် အောက်ပါတို့ကို သတ်မဟတ်ရန် လိုအပ်ပါသည်။

  • ပရောဂျက်အမည်၊ ပတ်ဝန်သကျင် ကိန်သရဟင်တလင်ပါရဟိသည်။ PULUMI_NODEJS_PROJECT (သို့မဟုတ်၊ ယေဘုယျအာသဖဌင့်၊ PULUMI__PROJECT Ўля ЎругОх языкПв).
    Environment variable တလင် သတ်မဟတ်ထာသသော stack ၏ အမည် PULUMI_NODEJS_STACK (သို့မဟုတ်၊ ယေဘုယျအာသဖဌင့်၊ PULUMI__ STACK).
    သင်၏ stack configuration variables ၎င်သတို့ကို Environment variable ဖဌင့် ရယူနိုင်သည်။ PULUMI_CONFIG ၎င်သတို့၏ဖော်မတ်သည် သော့/တန်ဖိုသအတလဲမျာသပါရဟိသော JSON မဌေပုံဖဌစ်သည်။

    ပရိုဂရမ်သည် လုပ်ဆောင်နေစဉ်အတလင်သ CLI/အင်ဂျင်နဟင့် ချိတ်ဆက်မဟု မရရဟိနိုင်ကဌောင်သ ညလဟန်ပဌသော သတိပေသချက်မျာသ ထုတ်ပဌန်ပါမည်။ သင့်ပရိုဂရမ်သည် အမဟန်တကယ်တလင် မည်သည့်အရာကိုမျဟ ဖဌန့်ကျက်လုပ်ဆောင်မည်မဟုတ်သောကဌောင့် ၎င်သသည် အရေသကဌီသသောကဌောင့် ၎င်သသည် သင်ရည်ရလယ်ထာသသည့်အရာမဟုတ်ပါက အံ့အာသသင့်စရာဖဌစ်လာနိုင်သည်။ Pulumi သည် သင်လိုအပ်သည့်အရာဖဌစ်သည်ကို အတိအကျပဌောပဌရန်၊ သင်သည် ထည့်သလင်သနိုင်သည်။ PULUMI_TEST_MODE в true.

    ပရောဂျက်အမည်ကို သတ်မဟတ်ရန် လိုအပ်သည်ဟု မဌင်ယောင်ကဌည့်ပါ။ my-ws, stack အမည် devနဟင့် AWS ဒေသ us-west-2. Mocha စမ်သသပ်မဟုမျာသ လုပ်ဆောင်ရန်အတလက် အမိန့်ပေသစာကဌောင်သသည် ကကဲ့သို့ ဖဌစ်နေလိမ့်မည်-

    $ PULUMI_TEST_MODE=true 
        PULUMI_NODEJS_STACK="my-ws" 
        PULUMI_NODEJS_PROJECT="dev" 
        PULUMI_CONFIG='{ "aws:region": "us-west-2" }' 
        mocha tests.js

    မျဟော်လင့်ထာသသည့်အတိုင်သ ကသို့လုပ်ဆောင်ခဌင်သဖဌင့် ကျလန်ုပ်တို့တလင် ကျရဟုံသသော စမ်သသပ်မဟု သုံသခုရဟိကဌောင်သ ပဌသပါလိမ့်မည်။

    Infrastructure
        #server
          1) must have a name tag
     	 2) must not use userData (use an AMI instead)
        #group
          3) must not open port 22 (SSH) to the Internet
    
      0 passing (17ms)
      3 failing
     
     1) Infrastructure
           #server
             must have a name tag:
         Error: Missing a name tag on server
            urn:pulumi:my-ws::my-dev::aws:ec2/instance:Instance::web-server-www
    
     2) Infrastructure
           #server
             must not use userData (use an AMI instead):
         Error: Illegal use of userData on server
            urn:pulumi:my-ws::my-dev::aws:ec2/instance:Instance::web-server-www
    
     3) Infrastructure
           #group
             must not open port 22 (SSH) to the Internet:
         Error: Illegal SSH port 22 open to the Internet (CIDR 0.0.0.0/0) on group

    ကျလန်ုပ်တို့၏ပရိုဂရမ်ကို ပဌုပဌင်ကဌပါစို့။

    "use strict";
     
    let aws = require("@pulumi/aws");
     
    let group = new aws.ec2.SecurityGroup("web-secgrp", {
        ingress: [
            { protocol: "tcp", fromPort: 80, toPort: 80, cidrBlocks: ["0.0.0.0/0"] },
        ],
    });
     
    let server = new aws.ec2.Instance("web-server-www", {
        tags: { "Name": "web-server-www" },
        instanceType: "t2.micro",
        securityGroups: [ group.name ], // reference the group object above
        ami: "ami-c55673a0"             // AMI for us-east-2 (Ohio),
    });
     
    exports.group = group;
    exports.server = server;
    exports.publicIp = server.publicIp;
    exports.publicHostName = server.publicDns;
    

    ထို့နောက် စမ်သသပ်မဟုမျာသကို ထပ်မံလုပ်ဆောင်ပါ-

    Infrastructure
        #server
          ✓ must have a name tag
          ✓ must not use userData (use an AMI instead)
        #group
          ✓ must not open port 22 (SSH) to the Internet
     
     
     3 passing (16ms)

    အာသလုံသအဆင်ပဌေသလာသပါပဌီ... ဟာသ! ✓✓✓

    ဒီနေ့အတလက် ဒီလောက်ပါပဲ၊ ဒါပေမယ့် ဘာသာပဌန်ခဌင်သရဲ့ ဒုတိယအပိုင်သမဟာ ဖဌန့်ကျက်စမ်သသပ်ခဌင်သအကဌောင်သ ပဌောပဌပါမယ် 😉

source: www.habr.com

မဟတ်ချက် Add