เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ IaC (Infrastructure as Code) เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ repository, เปเบ•เปˆเบเบฑเบ‡เบ‚เบญเบ‡เบ›เบฐเบŠเบฒเบŠเบปเบ™เปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเบญเป‰เบญเบกเบฎเบญเบšเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เปƒเบซเบกเปˆเบˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบ? เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เปƒเบˆเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบก.

เบชเบฐเบšเบฑเบšเบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”

เบ™เบตเป‰เปเบกเปˆเบ™เบšเบปเบ”เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ เบเบฒเบ™เบชเบฐเปเบ”เบ‡ เบชเบธเบ” DevopsConf 2019-05-28.

เบชเบฐเป„เบฅเป‰ เปเบฅเบฐเบงเบดเบ”เบตเป‚เบญ

เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ” bash

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบกเบฒเบซเบฒเป‚เบ„เบ‡เบเบฒเบ™เปƒเปเปˆ, เปเบฅเบฐเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒ: โ€œเบžเบงเบเป€เบฎเบปเบฒเบกเบต เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”". เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™ turns เบญเบญเบ เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ” bash เบซเบผเบทเบ•เบปเบงเบขเปˆเบฒเบ‡ เป€เบญเบเบฐเบชเบฒเบ™เป€เบ›เบฑเบ™เบ›เบฐเบซเบงเบฑเบ” bash. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบซเบผเบฒเบ, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป‚เบ”เบ Denis Lysenko เปƒเบ™เบ„เปเบฒเป€เบงเบปเป‰เบฒ เบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ™เบญเบ™เบขเปˆเบฒเบ‡เบชเบฐเบซเบ‡เบปเบš, เบฅเบฒเบงเบšเบญเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบˆเบฒเบเบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ” bash.

เบ”เป‰เบงเบเบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰ เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ” bash เบ™เบตเป‰เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบฅเบฐเบซเบฑเบ”:

  1. เบเบฒเบ™เบชเบทเบšเบžเบฑเบ™: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบ›เบฐเบซเบงเบฑเบ” bash, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฒเบเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบญเบฒเบ”, เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”.
  2. เบชเบฐเบšเบฑเบš: เบ—เปˆเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒเบœเบนเป‰เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเป€เบฎเบฑเบ”เบซเบเบฑเบ‡, เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ™เบตเป‰เบˆเบฐเบ™เปเบฒเบ—เปˆเบฒเบ™เป„เบ›เบชเบนเปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเบ—เบฒเบ‡เบญเบญเบ.
  3. เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”: เป€เบฅเบทเปˆเบญเบ‡เบ‚เบญเบ‡เปƒเบœเป€เบฎเบฑเบ”เบซเบเบฑเบ‡. เบžเบฝเบ‡เปเบ•เปˆเบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบกเบฑเบ™เป„เบ”เป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบนเบ™เป€เบชเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.

เบ‚เป‰เบญเบเบ„เบงเบ™เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”?

เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบฅเบฒเบ”เป€เบŠเบฑเปˆเบ™ เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ” bash เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เบถเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบซเบน เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”, เปเบ•เปˆเป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ LAMP เป€เบเบปเปˆเบฒเบ—เบตเปˆเบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบฒเบชเบฐเบซเบฅเบธเบšเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚, เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ›เบฑเบšเบ›เบธเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบ•เปเปˆโ€‹เป„เบ›โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบขเบฒเบโ€‹เบˆเบฐโ€‹เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹ เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบžเบฑเบ”โ€‹เบ—เบฐโ€‹เบ™เบฒโ€‹เบŠเบญเบšโ€‹เปเบงโ€‹.

เปเบซเป‰เบ‡

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ, เบกเบตเปœเป‰เบฒเบงเบฝเบเบเปˆเบญเบ เบเบณเบ™เบปเบ”เบ„เปˆเบฒ SDS เป€เบ›เบฑเบ™เป„เบฅเบเบฐ: เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ›เปˆเบญเบเบญเบญเบเบกเบฒเปƒเบซเบกเปˆ - เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰ rolled เบญเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เปเบกเปˆเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹:

  • เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ™เบตเป‰เบœเปˆเบฒเบ™ ssh เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡.
  • เบชเบณเป€เบ™เบปเบฒเป„เบŸเบฅเปŒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™.
  • เปเบเป‰เป„เบ‚เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ™เบตเป‰.
  • เป€เบฅเบตเปˆเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™
  • ...
  • เป‚เบ›เบฃเป„เบŸเบฅเปŒ!

เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบ, bash เปเบกเปˆเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเบžเบฝเบ‡เบžเป, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป„เบฅเบเบฐเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบ™เบตเป‰ เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบ”เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰ bash, เปเบ•เปˆเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒ, เบกเบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบ™เปเบฒเปƒเบŠเป‰เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เปเบ•เปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ. เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเปƒเบ™เปƒเบˆเปเบกเปˆเบ™ copy-paste. เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบญเบ‡เบชเบฐเบ„เบดเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบซเบผเบฒเบเบ—เบตเปˆเป€เบฎเบฑเบ”เป€เบเบทเบญเบšเบ„เบทเบเบฑเบ™. เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ synchronized เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบ„เบดเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบชเบฑเบšเบชเบปเบ™.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบกเบฑเบ™ turns เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบงเปˆเบฒโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เป€เบ›เบฑเบ™ DRY (เบขเปˆเบฒโ€‹เป€เบฎเบฑเบ”โ€‹เป€เบฅโ€‹เบทเป‰เบกโ€‹เบ„เบทเบ™โ€‹เบ•เบปเบงโ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบญเบ‡โ€‹)โ€‹. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ„เบทเบ™เปƒเบซเบกเปˆ. เบกเบฑเบ™เบŸเบฑเบ‡เบ„เบทเบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบกเบฒเบ™เบตเป‰เบ—เบฑเบ™เบ—เบต. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹, เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เปเบ™เบงโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ” banalโ€‹: เบเบฒเบ™โ€‹เปเบเบ configs เบˆเบฒเบโ€‹เบชเบฐโ€‹เบ„เบดเบšโ€‹. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบกเปˆเบ™ deploy เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, configs เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

SOLID เบชเปเบฒเบฅเบฑเบš CFM

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเปเบฅเบฐ เบชเบทเบšโ€‹เบ•เปเปˆโ€‹เบ—เปเบฒโ€‹เบกเบฐโ€‹เบŠเบฒเบ”โ€‹ เป€เบ›เบฑเบ™เบเบฒเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบ‚เบญเบ‡ Ansible. เป€เบซเบ”เบœเบปเบ™เบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบŠเปเบฒเบ™เบฒเบ™เปƒเบ™เบ—เบตเบกเปเบฅเบฐเบงเปˆเบฒ bash เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™. Ansible เบเบฑเบ‡เป€เบฅเบตเปˆเบกเบกเบตเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™. เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบˆเบฒเบเบเบฒเบ™เบซเบฑเบ™เป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบงเบธเปˆเบ™เบงเบฒเบ, เบกเบตเบซเบผเบฑเบเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบฅเบฐเบซเบฑเบ”เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบง เปเบ‚เบ‡ เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, Grigory Petrov เปƒเบ™เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™ "เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เป„เบญเบ—เบตเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบตเปˆเบซเปเป‰เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™" เป„เบ”เป‰เบ•เบฑเป‰เบ‡เบ„เปเบฒเบ–เบฒเบกเบงเปˆเบฒเบšเบธเบเบ„เบปเบ™เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบงเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบฑเบšเบšเบฒเบ‡เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ—เบฒเบ‡เบชเบฑเบ‡เบ„เบปเบก, เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธ. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰เปเบฅเบฐเบชเบทเบšเบ•เปเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบงเบเบกเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰ เปเบ‚เบ‡ เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบฎเบฑเบเบชเบฒ เปเบฅเบฐเปเบเป‰เป„เบ‚เป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เบซเบผเบฑเบเบเบฒเบ™เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ”เบฝเบง

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เปเบ•เปˆเบฅเบฐเบซเป‰เบญเบ‡เบฎเบฝเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบซเบ™เป‰เบฒเบงเบฝเบ.

เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบชเบปเบกเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ monsters spaghetti เบญเบฑเบ™เบชเบนเบ‡เบชเบปเปˆเบ‡ monolithic. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ„เบงเบ™เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบญเบดเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ. เบกเบฑเบ™ turns เปƒเบซเป‰ เป€เบซเบฑเบ™ เบงเปˆเบฒ เบ–เป‰เบฒ เบซเบฒเบ เบงเปˆเบฒ เบ—เปˆเบฒเบ™ เปเบšเปˆเบ‡ เบ›เบฑเบ™ playbook Ansible เป€เบ›เบฑเบ™ เบ•เปˆเบญเบ™ เบ‚เบฐ เบซเบ™เบฒเบ” เบ™เป‰เบญเบ, เบญเปˆเบฒเบ™ เบšเบปเบ” เบšเบฒเบ” Ansible, เบซเบผเบฑเบ‡ เบˆเบฒเบ เบ™เบฑเป‰เบ™ เบžเบงเบ เป€เบ‚เบปเบฒ เป€เบˆเบปเป‰เบฒ เปเบกเปˆเบ™ เบ‡เปˆเบฒเบ เบ—เบตเปˆ เบˆเบฐ เบฎเบฑเบ เบชเบฒ.

เบซเบผเบฑเบเบเบฒเบ™เป€เบ›เบตเบ”เบ›เบดเบ”

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบซเบผเบฑเบเบเบฒเบ™เป€เบ›เบตเบ” / เบ›เบดเบ”.

  • Open to extension: เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡ entity เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบ›เบฐเป€เบžเบ” entity เปƒเบซเบกเปˆ.
  • เบ›เบดเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡: เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบ™เบดเบ•เบดเบšเบธเบเบ„เบปเบ™, เบšเปเปˆเบ„เบงเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™.

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual, เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเป€เบซเบ”เบœเบปเบ™เบ—เบฒเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบกเปˆเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปƒเบ™ baremetall เป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเปƒเบ”เป†.

เบซเบผเบฑเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ—เบ™ Liskov

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบซเบผเบฑเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ—เบ™เบ‚เบญเบ‡ Barbara Liskov. เบงเบฑเบ”เบ–เบธเปƒเบ™เป‚เบ›เบฃเปเบเบกเบ•เป‰เบญเบ‡เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ instances เบ‚เบญเบ‡ subtypes เบ‚เบญเบ‡เบกเบฑเบ™เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบกเบฑเบ™เบเบงเป‰เบฒเบ‡เบเบงเปˆเบฒ, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™ เปเบ‚เบ‡, เบกเบฑเบ™เปเบกเปˆเบ™เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบเปˆเบฝเบงเบเบฑเบš CFM, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Java เบ—เบตเปˆเบกเบตเบเปˆเบญเบ‡เปƒเบชเปˆเป€เบ—เบดเบ‡เบ‚เบญเบ‡ Java, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, OS, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบซเบผเบฑเบเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก เปเบ‚เบ‡

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบกเบตเบ‚เปเป‰เบ•เบปเบเบฅเบปเบ‡เบžเบฒเบเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบงเปˆเบฒเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบšเบปเบ”เบšเบฒเบ” imbjava เบซเบผเบท oraclejava, เบžเบงเบเป€เบฎเบปเบฒเบกเบต java binary executable. เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒ เบšเบปเบ”เบšเบฒเบ”เบ‚เบญเบ‡ Upstream เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰; เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เปเบ—เบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” / เบฎเบธเปˆเบ™ java เบซเบ™เบถเปˆเบ‡เบเบฑเบšเบญเบตเบเบฎเบธเปˆเบ™เบซเบ™เบถเปˆเบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ.

เบšเบฑเบ™เบซเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ Ansible, เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบ‚เปเป‰เบ•เบปเบเบฅเบปเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™.

เบซเบผเบฑเบเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบซเบผเบฑเบโ€‹เบเบฒเบ™โ€‹เปเบเบโ€‹เบ•เบปเบงโ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹: โ€œเบชเปˆเบงเบ™โ€‹เบšเบธเบโ€‹เบ„เบปเบ™โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เป€เบžเบฒเบฐโ€‹เปเบกเปˆเบ™โ€‹เบ”เบตเบโ€‹เปˆโ€‹เบงเบฒโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบšโ€‹เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡โ€‹เบ—เบปเปˆเบงโ€‹เป„เบ›โ€‹.

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเป€เบญเบปเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Ansible playbook, เปเบ•เปˆเบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบžเบฒเบเบ™เบญเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰ (เบฅเบนเบเบ„เป‰เบฒเบ„เบฒเบ”เบงเปˆเบฒเบžเบญเบ” 443), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบเบญเบšเบˆเบฒเบเบšเบธเบเบ„เบปเบ™. bricks เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡.

เบซเบผเบฑเบเบเบฒเบ™เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™เบ—เบตเปˆเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบซเบผเบฑเบโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบตเป‰เบ™โ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบžเบดเปˆเบ‡โ€‹เบžเบฒโ€‹เบญเบฒโ€‹เป„เบชโ€‹. เป‚เบกเบ”เบนเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบเบงเปˆเบฒเบšเปเปˆเบ„เบงเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป‚เบกเบ”เบนเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ. เบ—เบฑเบ‡เบชเบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบ•เป‰เบญเบ‡เบ‚เบถเป‰เบ™เบเบฑเบš abstractions. Abstractions เบšเปเปˆเบ„เบงเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”. เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ•เป‰เบญเบ‡เบ‚เบถเป‰เบ™เบเบฑเบšเบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฐเบญเบตเบ‡เปƒเบชเปˆ antipattern.

  1. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบนเบเบ„เป‰เบฒเบกเบตเป€เบกเบ„เบชเปˆเบงเบ™เบ•เบปเบง.
  2. เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเปˆเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เบžเบฒเบเปƒเบ™เบ„เบฅเบฒเบง.
  3. เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ„เบฅเบฒเบง, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบœเบนเบเบกเบฑเบ”เบเบฑเบš hypervisor เบ—เบตเปˆ VM เป€เบ›เบตเบ”เบขเบนเปˆ.

เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เป€เบซเบ”เบœเบปเบ™เปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เป„เบ”เป‰เป„เบซเบผเบฅเบปเบ‡เป„เบ›เบ”เป‰เบงเบเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบเบฑเบšเบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒเบเบงเปˆเบฒเบ‚เบญเบ‡ hypervisor, เปเบฅเบฐเบ™เบตเป‰เปเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบตเบšเบฑเบ™เบซเบฒเป€เบกเบทเปˆเบญเปƒเบŠเป‰เป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰เบ„เบทเบ™เปƒเปเปˆ. เบขเปˆเบฒเป€เบฎเบฑเบ”เปเบšเบšเบ™เบตเป‰.

เบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบฎเปˆเบงเบกเบเบฑเบ™

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”, เปเบ•เปˆเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ›เบฐเบŠเบฒเบŠเบปเบ™, เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™.

เบ›เบฑเบ”เป„เบˆเบฅเบปเบ”เป€เบก

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบต Vasya เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Vasya เบฎเบนเป‰เบ—เบธเบเบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒ Vasya เบซเบฒเบเป„เบ›เบขเปˆเบฒเบ‡เบเบฐเบ—เบฑเบ™เบซเบฑเบ™? เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒเบฅเบฒเบงเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ•เบตเป‚เบ”เบเบฅเบปเบ”เป€เบก. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบ–เป‰เบฒเบชเบดเปˆเบ‡เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปเบฅเบฐเบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™, เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบฎเบนเบšเบฅเบฑเบเบชเบฐเบ™เบฐเปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบˆเบเบขเบฒเบเปƒเบ™เบšเบฑเบ™เบ”เบฒเบ—เบตเบกเบ‡เบฒเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบžเบปเบšเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบžเปเปƒเบˆเบซเบผเบฒเบ. เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเปเบˆเบเบขเบฒเบเบ„เบงเบฒเบกเบฎเบนเป‰เบžเบฒเบเปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ•เปˆเบฒเบ‡เป†

เบ„เบนเปˆ Devopsing

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบกเบฑเบ™เบšเปเปˆเบ„เบท เป€เบ›เบฑเบ™เบ•เบฐเบซเบฅเบปเบ, เบ—เบตเปˆ admins เบ”เบทเปˆเบกเป€เบšเบ, เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™, เปเบฅเบฐเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ„เบนเปˆ. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบชเบญเบ‡เบ„เบปเบ™เบ™เบฑเปˆเบ‡เบขเบนเปˆเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบซเบ™เบถเปˆเบ‡, เปเบ›เป‰เบ™เบžเบดเบกเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบฎเปˆเบงเบกเบเบฑเบ™: เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ, เบ‚เบฝเบ™เบšเบปเบ”เบšเบฒเบ” Ansible, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบกเบฑเบ™เบŸเบฑเบ‡เบ”เบต, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เปเบ•เปˆเบเปเบฅเบฐเบ™เบตเบžเบดเป€เบชเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เปƒเบซเบกเปˆเป„เบ”เป‰เบกเบฒเบฎเบญเบ”, เบœเบนเป‰เปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เบฅเบฒเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบšเบฅเบฒเบง, เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเบ–เปˆเบฒเบเบ—เบญเบ”เบ„เบงเบฒเบกเบฎเบนเป‰.

เบญเบตเบเบเปเบฅเบฐเบ™เบตเบžเบดเป€เบชเบ”เปเบกเปˆเบ™เบเบฒเบ™เป‚เบ—เบซเบฒเป€เบซเบ”เบเบฒเบ™. เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹, เบเบธเปˆเบกโ€‹เบ‚เบญเบ‡โ€‹เบœเบนเป‰โ€‹เบ—เบตเปˆโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เปเบฅเบฐโ€‹เบœเบนเป‰โ€‹เบ—เบตเปˆโ€‹เบเปˆเบฝเบงโ€‹เบ‚เป‰เบญเบ‡โ€‹เป€เบ•เบปเป‰เบฒโ€‹เป‚เบฎเบกโ€‹เบเบฑเบ™โ€‹, เบœเบนเป‰โ€‹เบ™เปเบฒโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบ•เปˆเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹, เบœเบนเป‰โ€‹เบ—เบตเปˆโ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบˆเปโ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เปเบฅเบฐโ€‹เบชเบฝเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเบถเบโ€‹เบญเบปเบšโ€‹เบฎเบปเบกโ€‹เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹. เบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบญเบทเปˆเบ™เป†เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบœเบนเป‰เบ™เปเบฒ, เบชเบญเบ”เปเบ™เบกเบเปˆเบฝเบงเบเบฑเบš tricks เบˆเบฒเบ console, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบžเบฒเบ”เป€เบชเบฑเป‰เบ™เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ—เบถเบ, เปเบฅเบฐเบฎเบฝเบ™เบฎเบนเป‰เบชเบดเปˆเบ‡เปƒเบซเบกเปˆเบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบšเบปเบš. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเป€เบฅเบทเป‰เบญเบเป†เบเปˆเบงเบฒเบšเปเปˆ.

เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบกเบฑเบ™เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”:

  • เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป‚เบ”เบเบฅเบฐเบซเบฑเบ”เปƒเบ™ repository.
  • เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบชเบฒเบ‚เบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.
  • เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบฅเบงเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡ delta เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™.

เบˆเบธเบ”เป€เบ”เบฑเปˆเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบฑเบเบ—เบปเบšเบ—เบงเบ™เป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเบซเบ™เบถเปˆเบ‡เป‚เบ”เบเบซเบ™เบถเปˆเบ‡, เบญเบตเบ‡เบ•เบฒเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡, i.e. เบ”เป‰เบงเบเบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบˆเบฐเบเป‰เบฒเบงเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเปเปˆ.

เบฎเบนเบšเปเบšเบšเบฅเบฐเบซเบฑเบ”

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป€เบกเบทเปˆเบญเป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเป€เบฅเบตเปˆเบกเบ›เบฒเบเบปเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เบœเบนเป‰เบ—เบปเบšเบ—เบงเบ™เบกเบตเบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบเบฒเบ™เบซเบกเบธเบ™เบ‚เบญเบ‡เบœเบนเป‰เบ—เบปเบšเบ—เบงเบ™ stacked เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบตเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™: 2 spaces เบซเบผเบท 4, camelCase เบซเบผเบท snake_case. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เบ—เบฑเบ™เบ—เบต.

  • เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เปƒเบŠเป‰ linter, เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ—เบธเบเบ„เบปเบ™เป€เบ›เบฑเบ™เบงเบดเบชเบฐเบงเบฐเบเบญเบ™, เบ—เบธเบเบ„เบปเบ™เปเบกเปˆเบ™ smart. เปเบ•เปˆเบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, OS, เบšเปเปˆเบชเบฐเบ”เบงเบ
  • เบ™เบตเป‰เป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ›เบชเบนเปˆ bot เบ—เบตเปˆเบ‚เบฝเบ™เบงเปˆเบฒเบซเบผเบธเบ”เบฅเบปเบ‡เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบกเบตเบšเบฑเบ™เบซเบฒเปเบฅเบฐเบ„เบฑเบ”เบ•เบดเบ”เบœเบปเบ™เบœเบฐเบฅเบดเบ” linter. เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”, เบกเบตเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบเบงเปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบเบฑเบ‡เบšเปเปˆเบ–เบทเบเปเบเป‰เป„เบ‚.

Green Build Master

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป€เบงเบฅเบฒเบœเปˆเบฒเบ™เป„เบ›, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเบซเบผเบธเบšเบงเปˆเบฒเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบšเปเปˆเบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบกเปˆเบšเบปเบ”เป„เบ”เป‰. เบงเป‰เบฒเบง! เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ„เบดเบ”เบ„เบปเป‰เบ™ Green Build Master, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™:

  • เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เบชเบฒเบ‚เบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเปƒเบ™เบซเบปเบงเบ‚เปเป‰เบ™เบตเป‰.
  • เบ–เป‰เบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบฅเบปเป‰เบกเป€เบซเบฅเบง, เบฅเบฐเบซเบฑเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš.

เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ™เบตเป‰เปเบกเปˆเบ™เป€เบˆเบฑเบšเบ›เบงเบ”เบซเบผเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡เบซเบผเบฒเบ, เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเบ„เบธเป‰เบกเบ„เปˆเบฒ, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเป‚เบ”เบเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปƒเบ™เปเบšเบš, เปเบฅเบฐเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒ, เบˆเปเบฒเบ™เบงเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบšเบฑเบ™เบซเบฒเป€เบฅเบตเปˆเบกเบซเบผเบธเบ”เบฅเบปเบ‡.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฎเบนเบšเปเบšเบš, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰. เบซเบผเบทเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเบฐเบšเปเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเบนเบ™เป€เบชเบเป€เบ‡เบดเบ™. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™? เบ„เปเบฒเบ–เบฒเบกเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เปเบฅเบฐเบ›เบฑเบ”เบŠเบฐเบเบฒ, เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบ•เบญเบšเบ”เป‰เบงเบเป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆ somehow เบกเบต auto-scaler เปƒเบ™ Powershell เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบŠเบฒเบเปเบ”เบ™ => VMs เบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™ => เบฅเบนเบเบ„เป‰เบฒเปƒเบŠเป‰เป€เบ‡เบดเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเปเบœเบ™เบเบฒเบ™. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบธเบเบซเบผเบฒเบ, เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบˆเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰.

เบ„เบปเบ™เบซเบ™เบถเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบ–เบฒเบกเบงเปˆเบฒ, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ? เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™, เบ„เบทเบเบฑเบ™เบเบฑเบšเบฅเบฐเบซเบฑเบ”, เบšเปเปˆเปเบกเปˆเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‡เปˆเบฒเบเบ”เบฒเบ, เปเบ•เปˆเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”.

Pyramid เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC: เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ‡เบ—เบตเปˆ

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบžเบปเบšเบงเปˆเบฒเบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบงเบฅเบฒเบซเบผเบฒเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบทเป‰เบ™เบ–เบฒเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป„เบง, เบกเบตเบซเบผเบฒเบเบขเปˆเบฒเบ‡, เปเบฅเบฐเบกเบฑเบ™เบเบงเบกเป€เบญเบปเบฒเบซเบผเบฒเบเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ primitive.

Bash เปเบกเปˆเบ™ tricky

เปƒเบซเป‰โ€‹เป€เบฎเบปเบฒโ€‹เบกเบฒโ€‹เป€เบšเบดเปˆเบ‡โ€‹เบ•เบปเบงเบขเปˆเบฒเบ‡โ€‹เบซเบเปเป‰เป†. เป€เบฅเบทเบญเบเป„เบŸเบฅเปŒเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ เปเบฅเบฐเบชเบณเป€เบ™เบปเบฒเป„เบ›เปƒเบชเปˆเบšเปˆเบญเบ™เบญเบทเปˆเบ™. เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบขเบนเปˆเปƒเบ™เปƒเบˆ:

for i in * ; do 
    cp $i /some/path/$i.bak
done

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบกเบตเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปƒเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒ? เปเบฅเป‰เบง, เบ”เบต, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบฅเบฒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เปƒเบŠเป‰เบ„เปเบฒเป€เบงเบปเป‰เบฒ:

for i in * ; do cp "$i" "/some/path/$i.bak" ; done

เป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เบตเบšเป? เบšเปเปˆ! เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, i.e. globbing เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ.

find . -type f -exec mv -v {} dst/{}.bak ;

เป€เบฎเบฑเบ”เป„เบ”เป‰เบ”เบตเปเบฅเป‰เบงเบšเป? เบšเปเปˆ... เบฅเบทเบกเบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบขเบนเปˆเปƒเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒ n.

touch x
mv x  "$(printf "foonbar")"
find . -type f -print0 | xargs -0 mv -t /path/to/target-dir

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ‡เบ—เบตเปˆ

เบšเบฑเบ™เบซเบฒเบˆเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบˆเบฑเบšเป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบฅเบทเบกเบงเบปเบ‡เบขเบทเบก, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เบกเบตเบซเบผเบฒเบเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เปƒเบ™เบ—เปเบฒเบกเบฐเบŠเบฒเบ” Shellcheck, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เปเบฅเบฐเบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐเบŠเบญเบเบซเบฒ linter เบชเปเบฒเบฅเบฑเบš stack เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบžเบฒเบเปƒเบ•เป‰ IDE เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบžเบฒเบชเบฒ
เป€เบ„เบทเปˆเบญเบ‡เบกเบท

bash
Shellcheck

Ruby
RuboCop

python
เบ›เบดเบฅเบดเบ™

เบ•เบญเบšเบฎเบฑเบšเป„เบ”เป‰
Ansible Lint

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC: เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบ

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบˆเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, linters เบšเปเปˆเปเบกเปˆเบ™ omnipotent เปเบฅเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบ—เบธเบเบ‚เบปเบ‡เป€เบ‚เบ”เบšเบฑเบ™เบซเบฒ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ”เบเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบง, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบ„เบทเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™. เบ—เบตเปˆเบ™เบตเป‰เบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบกเบฒเปƒเบ™เปƒเบˆ เบŠเบธเบ™เบ™เบดเบ”, junit, rspec, pytest. เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฑเบš ansible, chef, saltstack เปเบฅเบฐเบญเบทเปˆเบ™เป†เป€เบŠเบฑเปˆเบ™เบžเบงเบเป€เบ‚เบปเบฒ?

เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš เปเบ‚เบ‡ เปเบฅเบฐเบงเปˆเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเบ›เบฐเบเบญเบšเบ”เป‰เบงเบ bricks เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ. เป€เบงเบฅเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบกเบฒเบฎเบญเบ”เปเบฅเป‰เบง.

  1. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป„เบ”เป‰เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™ bricks เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ” Ansible.
  2. เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบšเบฒเบ‡เบŠเบฐเบ™เบดเบ”เบ–เบทเบเบ™เบณเปƒเบŠเป‰, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ docker เบซเบผเบท VM.
  3. เบžเบงเบเป€เบฎเบปเบฒเบ™เปเบฒเปƒเบŠเป‰เบšเบปเบ”เบšเบฒเบ” Ansible เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰.
  4. เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡ (เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš).
  5. เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒ ok เบซเบผเบทเบšเปเปˆ ok.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC: เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบ

เบ„เปเบฒเบ–เบฒเบก, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเปเบฒเบฅเบฑเบš CFM เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เปƒเบŠเป‰ script, เบซเบผเบทเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰:

CFM
เป€เบ„เบทเปˆเบญเบ‡เบกเบท

เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆ
เบ—เบปเบ”เบชเบญเบšเบญเบดเบ™เบŸเบฒ

เบซเบปเบง
เบเบฒเบ™เบเบงเบ”เบเบฒ

เบซเบปเบง
เป€เบŠเบตเบšเป€เบงเบต

เป€เบเบทเบญ
เบ™เบดเบ™เบ—เบฒ

เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบš testinfra, เบเบงเบ”เป€เบšเบดเปˆเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ™เบฑเป‰เบ™ test1, test2 เบกเบตเบขเบนเปˆเปเบฅเบฐเบขเบนเปˆเปƒเบ™เบเบธเปˆเบก sshusers:

def test_default_users(host):
    users = ['test1', 'test2' ]
    for login in users:
        assert host.user(login).exists
        assert 'sshusers' in host.user(login).groups

เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒ? เบ„เปเบฒเบ–เบฒเบกเปเบกเปˆเบ™เบชเบฑเบšเบชเบปเบ™เปเบฅเบฐเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™ github เบชเปเบฒเบฅเบฑเบš 2018-2019:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบเบญเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC

เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™: เบงเบดเบ—เบตเบเบฒเบ™เป€เบญเบปเบฒเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบฎเปˆเบงเบกเบเบฑเบ™เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบกเบฑเบ™? เบชเบฒโ€‹เบกเบฒเบ” เป€เบญเบปเบฒเบกเบฑเบ™เปเบฅเบฐเป€เบฎเบฑเบ”เบกเบฑเบ™เบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡ เบ–เป‰เบฒเบกเบตเบˆเปเบฒเบ™เบงเบ™เบงเบดเบชเบฐเบงเบฐเบเบญเบ™เบžเบฝเบ‡เบžเป. เบซเบผเบทเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ:

CFM
เป€เบ„เบทเปˆเบญเบ‡เบกเบท

เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆ
เป‚เบกเป€เบฅเบเบธเบ™

เบซเบปเบง
เป€เบฎเบทเบญเบ™เบ„เบปเบงเบ—เบปเบ”เบชเบญเบš

Terraform
เบ—เบตเปˆเบชเบธเบ”

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™ github เบชเปเบฒเบฅเบฑเบš 2018-2019:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป‚เบกเป€เบฅเบเบธเบ™ vs. เป€เบฎเบทเบญเบ™เบ„เบปเบงเบ—เบปเบ”เบชเบญเบš

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒ เบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡:

  1. เบชเป‰เบฒเบ‡ VM เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ™.
  2. เบ™เบณเปƒเบŠเป‰เบšเบปเบ”เบšเบฒเบ” Ansible.
  3. เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบเบฒ.

เบชเปเบฒเบฅเบฑเบš 25-35 เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ 40-70 เบ™เบฒเบ—เบต, เป€เบŠเบดเปˆเบ‡เบเบฒเบง.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เบซเบฑเบ™เป„เบ›เบชเบนเปˆ jenkins/docker/ansible/molecule. Idiologically เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™

  1. Lint เบ›เบถเป‰เบกโ€‹เบซเบผเบดเป‰เบ™โ€‹.
  2. เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”.
  3. เป€เบ›เบตเบ”เบ•เบปเบงเบšเบฑเบ™เบˆเบธ
  4. เบ™เบณเปƒเบŠเป‰เบšเบปเบ”เบšเบฒเบ” Ansible.
  5. เปเบฅเปˆเบ™ testinfra.
  6. เบเบงเบ”โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบšเปเปˆโ€‹เป€เบ‚เบฑเป‰เบกโ€‹เปเบ‚เบ‡โ€‹.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

Linting เบชเปเบฒเบฅเบฑเบš 40 เบžเบฒเบฅเบฐเบšเบปเบ”เบšเบฒเบ”เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเปเบฒเบฅเบฑเบšเบญเบฒเบเปเบเบฑเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 15 เบ™เบฒเบ—เบต.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบ›เบฑเบ”เปƒเบˆเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เป€เบŠเบฑเปˆเบ™ stack เบ—เบตเปˆเปƒเบŠเป‰, เบ„เบงเบฒเบกเบŠเปเบฒเบ™เบฒเบ™เปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ—เบตเปˆเบ™เบตเป‰เบ—เบธเบเบ„เบปเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ›เบดเบ”เบ„เปเบฒเบ–เบฒเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบ

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC: เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปƒเบ™ pyramid เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบ:

  1. เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป„เบ”เป‰เบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™ bricks เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบšเบปเบ”เบšเบฒเบ” Ansible.
  2. เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบšเบฒเบ‡เบŠเบฐเบ™เบดเบ”เบ–เบทเบเบ™เบณเปƒเบŠเป‰, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™ docker เบซเบผเบท VM.
  3. เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ™เบตเป‰เบ™เปเบฒเปƒเบŠเป‰ เบขเปˆเบฒเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบเบฒเบ™ เบšเบปเบ”เบšเบฒเบ”เบ—เบตเปˆเปœเป‰เบฒเบชเบปเบ™เปƒเบˆ.
  4. เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡ (เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš).
  5. เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒ ok เบซเบผเบทเบšเปเปˆ ok.

เป€เบงเบปเป‰เบฒเบ›เบฐเบกเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบ•เปˆเบฅเบฐเบ„เบปเบ™, เบ„เบทเบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบ™เบงเปƒเบ”.

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš IaC: End to End Test

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡ pyramid เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เป‰เบญเบ™เบฎเบฑเบšเป‚เบ”เบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš End to End. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, script เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบซเบผเบท brick เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป€เบ„เบตเบเป€เบซเบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบเปˆเบญเบ‡เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบก, เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒ ... เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเปเบฅเบฐเบเบฒเบเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบฎเบนเบšเปเบšเบšเปเบฅเบฐเบชเป‰เบฒเบ‡เบเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบธเบเบ„เบปเบ™เบชเป‰เบฒเบ‡เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบ„เปเบฒเบ•เบญเบš. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบกเบตเบซเบเบฑเบ‡เปเบ”เปˆเป€เบžเบทเปˆเบญเบŠเบธเบเบ”เบฑเบ™เปƒเบซเป‰เบ„เบปเบ™เบญเบทเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบ„เบดเบ”เบซเบผเบทเบ–เบนเบ”เบฑเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ”เบดเบ”เบชเป‰เบฒเบ‡เบกเบฒเบ”เบปเบ™เบ™เบฒเบ™เบเปˆเบญเบ™เบžเบงเบเป€เบฎเบปเบฒ.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบญเบธเบ”เบปเบกเบชเบปเบกเบšเบนเบ™. เบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบฅเบฐเบšเบฒเบ‡เบ—เบตเป€เบˆเบปเป‰เบฒเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป„เบ”เป‰เบ‚เป‰เบฒเบกเบ—เบฒเบ‡เบญเป‰เบญเบกเบเบฑเบšเบกเบฑเบ™. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เปเบกเปˆเบ™เป„เบŸเบฅเปŒ docker-compose เบซเบผเบฒเบ, เปเบฅเบฐเบฎเบนเป‰เบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบ” Jenkins.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ”เบปเบ™โ€‹เบ™เบฒเบ™โ€‹, เบˆเบปเบ™โ€‹เบโ€‹เปˆโ€‹เบงเบฒโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ‚เบญเบšโ€‹เป€เบ‚เบ”โ€‹ เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒ เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเป‚เบญเบ™เบ™เบตเป‰เป„เบ›เบซเบฒ Openshift. เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบเบฑเบ‡เบ„เบทเป€เบเบปเปˆเบฒ, เปเบ•เปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป„เบ”เป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ (เบชเบฐเบšเบฒเบเบ”เบต DRY เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡).

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเป„เบ”เป‰เป„เบ›เบ•เบทเปˆเบกเบญเบตเบ, เปเบฅเบฐเปƒเบ™ openshift เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบŠเบฑเปˆเบ™ APB (Ansible Playbook Bundle), เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบธเป‰เบกเบซเปเปˆเบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ–เบฑเบ‡. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบกเบตเบˆเบธเบ”เบ—เบตเปˆเป€เบฎเบฑเบ”เบŠเป‰เบณเป„เบ”เป‰, เบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบ‚เบญเบ‡เบ„เบงเบฒเบกเบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ„เบ‡เบฅเปˆเบฒเบ‡.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบŸเบฑเบ‡เบ”เบตเบˆเบปเบ™เบเปˆเบงเบฒเบžเบงเบเป€เบฎเบปเบฒเปเบฅเปˆเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบซเบฅเบฒเบเบซเบฅเบฒเบ: เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ Windows เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ„เบงเบฒเบกเบฎเบนเป‰เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆ, เบšเปˆเบญเบ™เปƒเบ”, เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰, เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ jenkins.

เบชเบฐเบซเบผเบธเบš

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš 200 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”

  • เบฅเบฐเบซเบฑเบ”เปƒเบ™ repository.
  • เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบกเบฐเบ™เบธเบ”.
  • เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™.

เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆ

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™