เดเตเดกเต เดเดซเตเดฑเตเดฑเตผเดจเตเตบ เดธเตเดนเตเดคเตเดคเตเดเตเดเดณเต. เดจเดฟเดฐเดเตเดเดฟเตฝ เดเดฐเต เดชเตเดคเดฟเดฏ เดเดดเตเดเตเดเดฟเดจเตเดฑเต เดเดฐเดเดญเด เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเต
เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ เดเตเดกเดฟเดจเดพเดฏเดฟ เดชเตเดฒเตเดฎเดฟเดฏเตเด เดชเตเดคเต-เดเดฆเตเดฆเตเดถเตเดฏ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดเดณเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต (เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ เดเตเดกเดพเดฏเดฟ) เดจเดฟเดฐเดตเดงเดฟ เดเตเดฃเดเตเดเตพ เดจเตฝเดเตเดจเตเดจเต: เดเดดเดฟเดตเตเดเดณเตเดเตเดฏเตเด เด
เดฑเดฟเดตเดฟเดจเตเดฑเตเดฏเตเด เดฒเดญเตเดฏเดค, เด
เดฎเตเตผเดคเตเดคเดคเดฏเดฟเดฒเตเดเต เดเตเดกเดฟเดฒเต เดฌเตเดฏเดฟเดฒเตผเดชเตเดฒเตเดฑเตเดฑเต เดเดฒเตเดฒเดพเดคเดพเดเตเดเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดเตเดฎเดฟเดจเต เดชเดฐเดฟเดเดฟเดคเดฎเดพเดฏ เดเดชเดเดฐเดฃเดเตเดเตพ, เดเดกเดฟเดเดเตพ, เดฒเดฟเดจเตเดฑเดฑเตเดเตพ เดเดจเตเดจเดฟเดต. เด เดธเตเดซเตโเดฑเตเดฑเตโเดตเตเดฏเตผ เดเดเตเดเดฟเดจเตเดฏเดฑเดฟเดเดเต เดเดชเดเดฐเดฃเดเตเดเดณเตเดฒเตเดฒเดพเด เดเดเตเดเดณเต เดเตเดเตเดคเตฝ เดเตฝเดชเตเดชเดพเดฆเดจเดเตเดทเดฎเดฎเดพเดเตเดเตเด เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดเดเตเดเดณเตเดเต เดเตเดกเดฟเดจเตเดฑเต เดเตเดฃเดจเดฟเดฒเดตเดพเดฐเด เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เด
เดคเดฟเดจเดพเตฝ, เดชเตเดคเต-เดเดฆเตเดฆเตเดถเตเดฏ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดเดณเตเดเต เดเดชเดฏเตเดเด เดฎเดฑเตเดฑเตเดฐเต เดชเตเดฐเดงเดพเดจ เดธเตเดซเตโเดฑเตเดฑเตโเดตเตเดฏเตผ เดกเตเดตเดฒเดชเตโเดฎเตเดจเตเดฑเต เดชเตเดฐเดพเดเตเดเตเดธเต เด
เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดคเต เดธเตเดตเดพเดญเดพเดตเดฟเดเดฎเดพเดฃเต - เดชเดฐเดฟเดถเตเดงเดจ.
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดเดเตเดเดณเตเดเต เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ เดเตเดกเต เดเดฏเดฟ เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดชเตเดฒเตเดฎเดฟ เดเดเตเดเดณเต เดเดเตเดเดจเต เดธเดนเดพเดฏเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเตเดเตเดเดพเด.
เดเดจเตเดคเตเดเตเดฃเตเดเดพเดฃเต เด เดเดฟเดธเตเดฅเดพเดจ เดธเตเดเดฐเตเดฏเดเตเดเตพ เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต?
เดตเดฟเดถเดฆเดพเดเดถเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดฎเตเดชเต, โเดเดจเตเดคเตเดเตเดฃเตเดเดพเดฃเต เด เดเดฟเดธเตเดฅเดพเดจ เดธเตเดเดฐเตเดฏเดเตเดเตพ เดชเดฐเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต?โ เดเดจเตเดจ เดเตเดฆเตเดฏเด เดเตเดฆเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเตเดฒเตเดฏเดตเดคเตเดคเดพเดฃเต. เดเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดเดพเดฐเดฃเดเตเดเดณเตเดฃเตเดเต, เด เดตเดฏเดฟเตฝ เดเดฟเดฒเดคเต เดเดคเดพ:
- เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เดฒเตเดเดฟเดเตเดเดฟเดจเตเดฑเต เดตเตเดฏเดเตเดคเดฟเดเดค เดซเดเดเตโเดทเดจเตเดเดณเตเดเตเดฏเต เดถเดเดฒเดเตเดเดณเตเดเตเดฏเต เดฏเตเดฃเดฟเดฑเตเดฑเต เดชเดฐเดฟเดถเตเดงเดจ
- เดเดฟเดฒ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดเตเดเตพเดเตเดเตเดคเดฟเดฐเต เด เดเดฟเดธเตเดฅเดพเดจ เดธเตเดเดฐเตเดฏเดคเตเดคเดฟเดจเตเดฑเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เด เดตเดธเตเดฅ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต.
- เดเดฐเต เดธเตเดฑเตเดฑเตเดฑเตเดเต เดฌเดเตเดเดฑเตเดฑเดฟเดจเตเดฑเต เดเตปเดเตเดฐเดฟเดชเตเดทเดจเตเดฑเต เด เดญเดพเดตเด เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค, เดเดจเตเดฑเตผเดจเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดคเตเดฑเดจเตเดจ เดเดเตเดธเดธเต เดชเตเดฒเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดชเดฟเดถเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเตฝ.
- เด เดเดฟเดธเตเดฅเดพเดจ เดธเตเดเดฐเตเดฏเดเตเดเตพ เดเดฐเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดจเดเดคเตเดคเดฟเดชเตเดชเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต.
- เดชเตเดฐเตเดตเดฟเดทเดจเดฟเดเดเดฟเดจเต เดถเตเดทเดฎเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดจเดฟเดเตเดเดณเตเดเต "เดชเตเดฐเตเดเตเดฐเดพเด เดเตเดฏเตเดค" เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฒเตเดเดฟเดเตเดเดฟเดจเตเดฑเต เดฑเตบเดเตเด เดเตเดธเตเดฑเตเดฑเดฟเดเดเต เดจเดเดคเตเดคเตเดจเตเดจเต.
- เดจเดฎเตเดเตเดเต เดเดพเดฃเดพเดจเดพเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ เดเตเดธเตเดฑเตเดฑเดฟเดเดเต เดเดชเตเดทเดจเตเดเดณเตเดเต เดตเดฟเดถเดพเดฒเดฎเดพเดฏ เดถเตเดฐเตเดฃเดฟ เดเดฃเตเดเต. เด เดธเตเดชเตเดเตโเดเตเดฐเดคเตเดคเดฟเดฒเต เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเดฟเดฒเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดเดตเดฟเดงเดพเดจเดเตเดเตพ เดชเตเดฒเตเดฎเดฟเดฏเดฟเดฒเตเดฃเตเดเต. เดจเดฎเตเดเตเดเต เดเดฐเดเดญเดฟเดเตเดเต เดเดคเต เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเตเดเตเดเดพเด.
เดฏเตเดฃเดฟเดฑเตเดฑเต เดชเดฐเดฟเดถเตเดงเดจ
เดเดพเดตเดพเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต, เดชเตเดคเตเดคเตบ, เดเตเดชเตเดชเตเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเต เดชเตเดฒเตเดณเตเดณ เดชเตเดคเต-เดเดฆเตเดฆเตเดถเตเดฏ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดเดณเดฟเดฒเดพเดฃเต เดชเตเดฒเตเดฎเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเต. เด เดคเดฟเดจเดพเตฝ, เดชเดฐเตเดเตเดทเดฃ เดเดเตเดเดเตเดเตเดเตเดเตพ เดเตพเดชเตเดชเตเดเตเดฏเตเดณเตเดณ เดเดชเดเดฐเดฃเดเตเดเดณเตเด เดฒเตเดฌเตเดฐเดฑเดฟเดเดณเตเด เดเตพเดชเตเดชเตเดเต เด เดญเดพเดทเดเดณเตเดเต เดฎเตเดดเตเดตเตป เดถเดเตเดคเดฟเดฏเตเด เด เดตเตผเดเตเดเต เดฒเดญเตเดฏเดฎเดพเดฃเต. เดชเตเดฒเตเดฎเดฟ เดเดฐเต เดฎเตพเดเตเดเดฟ-เดเตเดฒเตเดกเดพเดฃเต, เด เดคเดพเดฏเดคเต เดเดคเต เดเตเดฒเตเดกเต เดฆเดพเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดเดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเดพเด.
(เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดฌเดนเตเดญเดพเดทเดฏเตเด เดฎเตพเดเตเดเดฟเดเตเดฒเตเดกเตเด เดเดฃเตเดเตเดเดฟเดฒเตเด, เดเดเตเดเตพ เดเดพเดตเดพเดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเด เดฎเตเดเตเดเดฏเตเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต เดเตเดเดพเดคเต AWS-เตฝ เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต. เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดคเตเดคเตบ เดเดชเดฏเตเดเดฟเดเตเดเดพเด. unittest
, เดเตเดธเตเดฑเตเดฑเต เดเดเตเดเดเตเดเตเดเต, เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฟเดเตเดเตพ เดเดทเตเดเดชเตเดชเตเดเตเดจเตเดจ เดฎเดฑเตเดฑเตเดคเตเดเตเดเดฟเดฒเตเด เดเตเดธเตเดฑเตเดฑเต เดซเตเดฐเตเดฏเดฟเดเดตเตผเดเตเดเต เดชเตเดเตเด. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดชเตเดฒเตเดฎเดฟ เด
เดธเตเตผ, เดเตเดเดฟเตพ เดเตเดฒเตเดกเต, เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดฎเดฟเดเดเตเด เดฐเตเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต.)
เดเดเตเดเตพ เดเดฃเตเดเดคเตเดชเตเดฒเต, เดจเดฟเดเตเดเดณเตเดเต เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ เดเตเดกเต เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดเดพเดฐเดฃเดเตเดเดณเตเดฃเตเดเต. เด
เดคเดฟเดฒเตเดจเตเดจเดพเดฃเต เดชเดฐเดฎเตเดชเดฐเดพเดเดค เดฏเตเดฃเดฟเดฑเตเดฑเต เดเตเดธเตเดฑเตเดฑเดฟเดเดเต. เดเดพเดฐเดฃเด เดจเดฟเดเตเดเดณเตเดเต เดเตเดกเดฟเดจเต เดซเดเดเตโเดทเดจเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดพเด - เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, CIDR เดเดฃเดเตเดเดพเดเตเดเดพเตป, เดชเตเดฐเตเดเตพ, เดเดพเดเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต เดเดฒเดจเดพเดคเตเดฎเดเดฎเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเตเด. - เดจเดฟเดเตเดเตพ เดเดฐเตเดชเดเตเดทเต เด
เดตเดฐเต เดชเดฐเตเดเตเดทเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดเตเดเดพเด. เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดฟเดฏเดชเตเดชเตเดเตเด เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดฏเดฟเตฝ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพเดเตเดเดพเดฏเดฟ เดธเดพเดงเดพเดฐเดฃ เดฏเตเดฃเดฟเดฑเตเดฑเต เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเดดเตเดคเตเดจเตเดจเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเดฟเดคเต.
เดเตเดฑเดเตเดเตเดเตเดเดฟ เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เดตเดฟเดญเดตเดเตเดเตพ เดเดเตเดเดจเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด. เดฆเตเดทเตเดเดพเดจเตเดคเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ EC2 เดธเตเตผเดตเตผ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเตเดจเตเดจเต เดธเดเตเดเตฝเดชเตเดชเดฟเดเตเดเตเด, เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดตเดฏเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดเดฑเดชเตเดชเตเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด:
- เดธเดเดญเดตเดเตเดเตพเดเตเดเต เดเดฐเต เดเดพเดเต เดเดฃเตเดเต
Name
. - เดธเดจเตเดฆเตผเดญเดเตเดเตพ เดเตปเดฒเตเตป เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเดฐเตเดคเต
userData
- เดจเดฎเตเดฎเตพ เดเดฐเต AMI (เดเดฟเดคเตเดฐเด) เดเดชเดฏเตเดเดฟเดเตเดเดฃเด. - เดเตปเดฑเตผเดจเตเดฑเตเดฑเดฟเตฝ เดเดฐเต เดเดธเตเดเดธเตเดเดเตเดเต เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฐเตเดคเต.
เด เดเดฆเดพเดนเดฐเดฃเด เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณเดคเดพเดฃเต
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;
เดเดคเดพเดฃเต เด เดเดฟเดธเตเดฅเดพเดจ เดชเตเดฒเตเดฎเดฟ เดชเตเดฐเตเดเตเดฐเดพเด: เดเดคเต เดเดฐเต EC2 เดธเตเดฐเดเตเดทเดพ เดเตเดฐเตเดชเตเดชเตเด เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดตเตเด เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดฎเตเดเดณเดฟเตฝ เดชเดฑเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฎเตเดจเตเดจเต เดจเดฟเดฏเดฎเดเตเดเดณเตเด เดเดเตเดเตพ เดเดตเดฟเดเต เดฒเดเดเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต. เดจเดฎเตเดเตเดเต เดชเดฐเตเดเตเดท เดเดดเตเดคเดพเด!
เดชเดฐเตเดเตเดทเดเตพ เดเดดเตเดคเตเดจเตเดจเต
เดเดเตเดเดณเตเดเต เดเตเดธเตเดฑเตเดฑเตเดเดณเตเดเต เดชเตเดคเตเดตเดพเดฏ เดเดเดจ เดธเดพเดงเดพเดฐเดฃ เดฎเตเดเตเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเด:
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, ะพัะบัััะพะณะพ ะฒ ะะฝัะตัะฝะตั.
});
});
เดเดจเดฟ เดจเดฎเตเดเตเดเต เดเดฆเตเดฏเดคเตเดคเต เดเตเดธเตเดฑเตเดฑเต เดเดดเตเดคเดพเด: เดธเดเดญเดตเดเตเดเตพเดเตเดเต เดเดพเดเต เดเดฃเตเดเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเตเด Name
. เดเดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดจเดฎเตเดเตเดเต EC2 เดเตปเดธเตเดฑเตเดฑเตปเดธเต เดเดฌเตเดเดเตเดฑเตเดฑเต เดฒเดญเดฟเดเตเดเตเดเดฏเตเด เด
เดจเตเดฌเดจเตเดง เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด 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();
}
});
});
เดเดคเต เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดเตเดธเตเดฑเตเดฑเต เดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเด เดเดฟเดฒ เดธเดตเดฟเดถเตเดทเดคเดเตพ:
- เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดเดเตเดเตพ เดเดฐเต เดฑเดฟเดธเตเดดเตเดธเดฟเดจเตเดฑเต เด เดตเดธเตเดฅ เด เดจเตเดตเตเดทเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเดเตเดเดณเตเดเต เดเตเดธเตเดฑเตเดฑเตเดเตพ เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด "เดชเตเดฒเดพเตป" (เด เดฒเตเดฒเตเดเตเดเดฟเตฝ "เดชเตเดฐเดฟเดตเตเดฏเต") เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เดฎเตเดฒเตเดฏเดเตเดเตพ เดตเตเดฃเตเดเตเดเตเดเตเดเตเดเดฏเต เดจเดฟเตผเดตเดเดฟเดเตเดเดชเตเดชเตเดเตเดเดฏเต เดเตเดฏเตเดฏเดพเดคเตเดค เดจเดฟเดฐเดตเดงเดฟ เดเตเดฃเดเตเดเดณเตเดฃเตเดเต. เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเตเดกเต เดฆเดพเดคเดพเดตเต เดเดฃเดเตเดเดพเดเตเดเดฟเดฏ เดเดฒเตเดฒเดพ เดเดเตเดเตโเดชเตเดเตเดเต เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเตพ เดเดคเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดจเตเดจเต. เดเดคเต เดเดเตเดเดณเตเดเต เดเตเดธเตเดฑเตเดฑเตเดเตพเดเตเดเต เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต - เดเตปเดชเตเดเตเดเต เดกเดพเดฑเตเดฑ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต. เดเดจเตเดฑเดเตเดฐเตเดทเตป เดเตเดธเตเดฑเตเดฑเตเดเดณเตเดเต เดเดพเดฐเตเดฏเด เดตเดฐเตเดฎเตเดชเตเตพ เดเดเตเดเตพ เดชเดฟเดจเตเดจเตเดเต เด เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดฎเดเดเตเดเตเด.
- เดเดฒเตเดฒเดพ เดชเตเดฒเตเดฎเดฟ เดฑเดฟเดธเตเดดเตโเดธเต เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเดณเตเด เดเดเตเดเตโเดชเตเดเตเดเตเดเตพ เดเดฏเดคเดฟเดจเดพเตฝ, เด
เดตเดฏเดฟเตฝ เดชเดฒเดคเตเด เด
เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดฎเตเดฒเตเดฏเดเตเดเตพ เดเดเตโเดธเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดเดเตเดเตพ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดฐเตเดคเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเต เดตเดพเดเตเดฆเดพเดจเดเตเดเดณเตเดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเตเด เดตเดณเดฐเต เดธเดพเดฎเตเดฏเดฎเตเดณเตเดณเดคเดพเดฃเต
then
. - เดชเดฟเดถเดเต เดธเดจเตเดฆเตเดถเดคเตเดคเดฟเตฝ เดเดฑเดตเดฟเด URN เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดเตเดเตพ เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเตเดชเตเดชเตผเดเตเดเดฟเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเดเตเดเตพ เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต
pulumi.all
เด เดตเดฐเต เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเตป. - เด
เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เด เดฎเตเดฒเตเดฏเดเตเดเตพ เด
เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเดเตเดเตพ เดฎเตเดเตเดเดฏเตเดเต เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เด
เดธเดฟเตปเดเต เดเตเตพเดฌเดพเดเตเดเต เดธเดตเดฟเดถเตเดทเดค เดเดชเดฏเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต
done
เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดตเดพเดเตเดฆเดพเดจเด เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเดจเตเดจเต.
เดเดเตเดเตพ เดเดฒเตเดฒเดพเด เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดเดดเดฟเดเตเดเดพเตฝ, เดฒเดณเดฟเดคเดฎเดพเดฏ JavaScript เดฎเตเดฒเตเดฏเดเตเดเดณเดพเดฏเดฟ เดเดเตเดเตพเดเตเดเต เดเตปเดชเตเดเตเดเตเดเดณเดฟเดฒเตเดเตเดเต เดเดเตเดธเดธเต เดฒเดญเดฟเดเตเดเตเด. เดธเตเดตเดคเตเดคเต tags
เดเดฐเต เดญเตเดชเดเดฎเดพเดฃเต (เด
เดธเตเดธเดฟเดฏเตเดฑเตเดฑเตเดตเต เด
เดฑเต), เด
เดคเดฟเดจเดพเตฝ เดเดคเต (1) เดคเตเดฑเตเดฑเดฒเตเดฒเตเดจเตเดจเตเด (2) เดเดคเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเต เดเดฃเตเดเตเดจเตเดจเตเด เดเดเตเดเตพ เดเดฑเดชเตเดชเดพเดเตเดเตเด 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();
}
});
});
เด เดคเตเดฐเดฏเตเดฏเตเดณเตเดณเต. เดเดจเดฟ เดจเดฎเตเดเตเดเต เดเตเดธเตเดฑเตเดฑเตเดเตพ เดจเดเดคเตเดคเดพเด!
เดชเดฐเดฟเดถเตเดงเดจเดเตพ เดจเดเดคเตเดคเตเดจเตเดจเต
เดฎเดฟเดเตเด เดเตเดธเตเดเดณเดฟเดฒเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดทเตเดเดฎเตเดณเตเดณ เดเตเดธเตเดฑเตเดฑเต เดเดเตเดเดเตเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดธเดพเดงเดพเดฐเดฃ เดฐเตเดคเดฟเดฏเดฟเตฝ เดเตเดธเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเด. เดเดจเตเดจเดพเตฝ เดชเตเดฒเตเดฎเดฟเดฏเตเดเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเดเดค เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดฃเตเดเดคเดพเดฃเต.
เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ, เดชเตเดฒเตเดฎเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดชเตเดฒเดฟเดฎเดฟ เดธเดฟเดเตฝเด (เดเดฎเดพเตปเดกเต เดฒเตเตป เดเดจเตเดฑเตผเดซเตเดธเต) เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เดเดคเต เดญเดพเดทเดพ เดฑเตบเดเตเด เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต, เดชเตเดฒเตเดฎเดฟ เดเดเตเดเดฟเดจเตเดฑเต เดตเดฟเดเตเดทเตเดชเดฃเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเตเดตเดดเดฟ เดเดฑเดตเดฟเดเดเตเดเดณเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดฑเตเดเตเดเตเตผเดกเตเดเตเดฏเตเดฏเดพเดจเตเด เดชเตเดฒเดพเดจเดฟเตฝ เดเตพเดชเตเดชเตเดเตเดคเตเดคเดพเดจเตเด เดเดดเดฟเดฏเตเด. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฐเต เดชเตเดฐเดถเตเดจเดฎเตเดฃเตเดเต. เดจเดฟเดเตเดเดณเตเดเต เดเตเดธเตเดฑเตเดฑเต เดเดเตเดเดเตเดเตเดเดฟเดจเตเดฑเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ, CLI-เดฏเตเด เดชเตเดฒเตเดฎเดฟ เดเดเตเดเดฟเดจเตเด เดคเดฎเตเดฎเดฟเตฝ เดเดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด เดเดฃเตเดเดพเดเดฟเดฒเตเดฒ.
เด เดชเตเดฐเดถเตเดจเด เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเตป, เดเดเตเดเตพ เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
- เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดชเดฆเตเดงเดคเดฟเดฏเตเดเต เดชเตเดฐเต
PULUMI_NODEJS_PROJECT
(เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเตเดเตเดคเตฝ เดชเตเดคเตเดตเดพเดฏเดฟ,PULUMI__PROJECT ะดะปั ะดััะณะธั ัะทัะบะพะฒ).
เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดธเตเดฑเตเดฑเดพเดเตเดเดฟเดจเตเดฑเต เดชเตเดฐเตPULUMI_NODEJS_STACK
(เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเตเดเตเดคเตฝ เดชเตเดคเตเดตเดพเดฏเดฟ,PULUMI__ STACK).
เดจเดฟเดเตเดเดณเตเดเต เดธเตเดฑเตเดฑเดพเดเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ. เดเดฐเต เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เด เดต เดฒเดญเดฟเดเตเดเตเดPULUMI_CONFIG
เดเต/เดฎเตเดฒเตเดฏเด เดเตเดกเดฟเดเดณเตเดณเตเดณ JSON เดฎเดพเดชเตเดชเดพเดฃเต เด เดตเดฏเตเดเต เดซเตเตผเดฎเดพเดฑเตเดฑเต.เดเดเตเดธเดฟเดเตเดฏเตเดทเตป เดธเดฎเดฏเดคเตเดคเต CLI/เดเดเตเดเดฟเดจเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดฃเดเตเดทเตป เดฒเดญเตเดฏเดฎเดฒเตเดฒเตเดจเตเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ เดชเตเดฐเตเดเตเดฐเดพเด เดจเตฝเดเตเด. เดเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต, เดเดพเดฐเดฃเด เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเด เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดเดจเตเดจเตเด เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเดฟเดฒเตเดฒ, เดจเดฟเดเตเดเตพ เดเตเดฏเตเดฏเดพเตป เดเดฆเตเดฆเตเดถเดฟเดเตเดเดคเดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดคเต เด เดคเดฟเดถเดฏเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดเดพเด! เดจเดฟเดเตเดเตพเดเตเดเต เดตเตเดฃเตเดเดคเต เดเดคเดพเดฃเต เดเดจเตเดจเต เดชเตเดฒเตเดฎเดฟเดฏเตเดเต เดชเดฑเดฏเดพเตป, เดจเดฟเดเตเดเตพเดเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเด
PULUMI_TEST_MODE
ะฒtrue
.เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดพเดฎเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเตเดจเตเดจเต เดธเดเตเดเตฝเดชเตเดชเดฟเดเตเดเตเด
my-ws
, เดธเตเดฑเตเดฑเดพเดเตเดเดฟเดจเตเดฑเต เดชเตเดฐเตdev
, เดเตเดเดพเดคเต AWS เดฎเตเดเดฒเดฏเตเดus-west-2
. เดฎเตเดเตเด เดเตเดธเตเดฑเตเดฑเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฎเดพเตปเดกเต เดฒเตเตป เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเด:$ 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)
เดเดฒเตเดฒเดพเด เดจเดจเตเดจเดพเดฏเดฟ เดจเดเดจเตเดจเต... เดนเตเดฑเต! โโโ
เดเดจเตเดจเดคเตเดคเตเดเตเดเต เด เดคเตเดฐเดฏเตเดฏเตเดณเตเดณเต, เดเดจเตเดจเดพเตฝ เดตเดฟเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต เดฐเดฃเตเดเดพเด เดญเดพเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดตเดฟเดจเตเดฏเดพเดธ เดชเดฐเดฟเดถเตเดงเดจเดฏเตเดเตเดเตเดฑเดฟเดเตเดเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเด ๐
เด เดตเดฒเดเดฌเด: www.habr.com