αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™ αž’αžΆαž™αŸ” αžŸαŸŠαžΈαŸ” ស៊ី (Infrastructure as Code) αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž˜αžΆαž“αž€αžΌαžŠαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸαž˜αžΆαž“αž˜αž“αž»αžŸαŸ’αžŸ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž“αŸ…αž‡αž»αŸ†αžœαž·αž‰αž€αžΌαžŠαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžšαŸ” αžαžΎαžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž–αžΈαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αžšαž αžΌαžαžŠαž›αŸ‹αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆ? αžœαžΆαž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‚αŸ†αž“αž·αžαž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž…αž·αžαŸ’αžαž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž’αžΆαž“αž’αžαŸ’αžαž”αž‘αŸ”

αž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸ

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αŸ’αžšαžαž·αž…αžΆαžšαž·αž€αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž€αžΆαžšαžŸαž˜αŸ’αžαŸ‚αž„ αž“αŸ…αž›αžΎ DevopsConf 2019-05-28.

αžŸαŸ’αž›αžΆαž™ αž“αž·αž„αžœαžΈαžŠαŸαž’αžΌ

αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž§αž”αž˜αžΆαžαžΆαž’αŸ’αž“αž€αž˜αž€αž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž˜αžΈ αž αžΎαž™αž–αž½αž€αž‚αŸαž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžαžΆ β€œαž™αžΎαž„αž˜αžΆαž“ αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž€αŸ’αžšαž˜"αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αžαžœαžΆαž”αŸ’αžšαŸ‚αž…αŸαž‰ αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš αž¬αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž―αž€αžŸαžΆαžšαž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš. αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αž˜αž½αž™ αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž€αžšαžŽαžΈαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸ„αž™ Denis Lysenko αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž»αž“αŸ’αž‘αžšαž€αžαžΆαž˜αž½αž™αŸ” αžαžΎαž’αŸ’αžœαžΎαžŠαžΌαž…αž˜αŸ’αžαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ†αž“αž½αžŸαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž›αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸαž€αž›αž€αŸ‹αžŸαŸ’αžšαž½αž›αž‚αžΆαžαŸ‹αž”αžΆαž“αž”αŸ’αžšαžΆαž”αŸ‹αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž‘αž‘αž½αž›αž”αžΆαž“αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αžŸαŸŠαžΈαžŸαž„αŸ’αžœαžΆαž€αŸ‹αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž–αžΈαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžšαŸ’αž bash αŸ”

αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ†αžŽαž„αž”αŸ’αžšαžΆαžαŸ’αž“αžΆαžαŸ’αž›αŸ‡αž™αžΎαž„αž’αžΆαž…αž“αž·αž™αžΆαž™αž”αžΆαž“αŸ” αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš αž“αŸαŸ‡αž‚αžΊαžŠαžΌαž…αž‡αžΆαž€αžΌαžŠαŸ–

  1. αž€αžΆαžšαž”αž“αŸ’αžαž–αžΌαž‡αŸ– αž’αŸ’αž“αž€αž’αžΆαž…αž™αž€αž”αŸ’αžšαžœαžαŸ’αžαž· bash αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαž‘αžΈαž“αŸ„αŸ‡ αž αžΎαž™αž’αŸ’αž“αž€αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž›αž‘αŸ’αž’αž•αž›αŸ”
  2. αž€αŸ†αžŽαŸ‚αž‘αž˜αŸ’αžšαž„αŸ‹αŸ– αž’αŸ’αž“αž€αžŠαžΉαž„αžαžΆαž’αŸ’αž“αž€αžŽαžΆαžŠαŸ‚αž›αž…αžΌαž›αž˜αž€ αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž”αžΆαž“αž’αŸ’αžœαžΎ αž‡αžΆαžαŸ’αž˜αžΈαž˜αŸ’αžαž„αž‘αŸ€αž αžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžœαžΆαž“αžΉαž„αž“αžΆαŸ†αž’αŸ’αž“αž€αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž„αžΆαžšαž“αŸ…αž…αŸ’αžšαž€αž…αŸαž‰αž“αŸ„αŸ‡αž‘αŸαŸ”
  3. αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžšαŸ’αžαŸ– αžšαžΏαž„αž’αŸ’αž“αž€αžŽαžΆαž’αŸ’αžœαžΎαž’αžΈαŸ” αž˜αžΆαž“β€‹αžαŸ‚β€‹αž’αŸ’αž“αž€β€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžΎβ€‹αžœαžΆβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αž’αŸ’αž“αž€β€‹αž”αžΆαžαŸ‹β€‹αž”αž„αŸ‹β€‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“β€‹αž˜αŸαŸ”

αžαžΎαžαŸ’αž‰αž»αŸ†αž‚αž½αžšαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ?

αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž€αŸ’αžšαž˜

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž€αžšαžŽαžΈαž…αž˜αŸ’αž›αŸ‚αž€αž”αŸ‚αž”αž“αŸαŸ‡ αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš αž’αŸ’αž“αž€αž’αžΆαž…αž‘αžΆαž‰αžœαžΆαžŠαŸ„αž™αžαŸ’αžšαž…αŸ€αž€ αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž€αŸ’αžšαž˜αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ LAMP αž…αžΆαžŸαŸ‹αž›αŸ’αž’αž“αŸ„αŸ‡ αž™αžΎαž„αž“αžΉαž„αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžαžΆ αž€αžΌαžŠαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚ αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž“αž·αž„αž€αŸ‚αž›αž˜αŸ’αž’αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž™αžΎαž„αž…αž„αŸ‹αž–αž·αž…αžΆαžšαžŽαžΆαž—αžΆαž–αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαžšαžœαžΆαž„ αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αžΆαž€αŸ’αžšαž˜ αž“αž·αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

D.R.Y.

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž“αŸ…αž›αžΎαž‚αž˜αŸ’αžšαŸ„αž„αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αž‘αž»αž€ αž˜αžΆαž“αž€αž·αž…αŸ’αž…αž€αžΆαžšαžšαž„αž˜αž½αž™αŸ” αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ SDS αž‡αžΆαž‘αŸ€αž„αž‘αžΆαžαŸ‹αŸ– αž™αžΎαž„β€‹αž€αŸ†αž–αž»αž„β€‹αž”αž‰αŸ’αž…αŸαž‰β€‹αž€αžΆαžšβ€‹αž…αŸαž‰β€‹αž•αŸ’αžŸαžΆαž™β€‹αžαŸ’αž˜αžΈ - αžœαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αžαŸ‚β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŠαžΆαž€αŸ‹β€‹αž±αŸ’αž™β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αžŸαžΆαž€αž›αŸ’αž”αž„β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž‘αŸ€αžαŸ” αž—αžΆαžšαž€αž·αž…αŸ’αž…αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ–

  • αž…αžΌαž›αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžαžΆαž˜αžšαž™αŸˆ ssh αž αžΎαž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαŸ”
  • αž…αž˜αŸ’αž›αž„αž―αž€αžŸαžΆαžšαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ”
  • αž€αŸ‚αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ”
  • αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡
  • ...
  • αž–αžαŸŒαž˜αžΆαž“αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“!

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆ bash αž‚αžΊαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹ αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž‘αžΎαž”αžαŸ‚αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ” αž“αŸαŸ‡αŸ” αžœαžΆαž˜αž·αž“αž’αžΆαž€αŸ’αžšαž€αŸ‹αž‘αŸαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎ bashαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΌαžš αŸ— αž‘αŸ…αž˜αžΆαž“αžŸαŸ†αžŽαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαž»αžŸαž‚αŸ’αž“αžΆαž”αž“αŸ’αžαž·αž…αž”αž“αŸ’αžαž½αž…αŸ” αžšαžΏαž„αžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αž…αžΌαž›αž˜αž€αž€αŸ’αž“αž»αž„αž‚αŸ†αž“αž·αžαž‚αžΊαž…αž˜αŸ’αž›αž„-αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹αŸ” αž αžΎαž™β€‹αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡ αž™αžΎαž„β€‹αž˜αžΆαž“β€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”β€‹αžŸαŸ’αžšαžŠαŸ€αž„β€‹αž‚αŸ’αž“αžΆβ€‹αžαŸ’αž›αžΆαŸ†αž„β€‹αž–αžΈαžšβ€‹αžšαž½αž…β€‹αž αžΎαž™β€‹αžŠαŸ‚αž›β€‹αž’αŸ’αžœαžΎβ€‹αžŸαŸ’αž‘αžΎαžšαžαŸ‚β€‹αžŠαžΌαž…αž‚αŸ’αž“αžΆβ€‹αŸ” αž™αžΌαžš αŸ— αž‘αŸ…αž…αŸ†αž“αž½αž“αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž€αžΎαž“αž‘αžΎαž„ αž αžΎαž™αž™αžΎαž„αž”αŸ’αžšαžˆαž˜αž˜αž»αžαž“αžΉαž„αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž˜αžΆαž“αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžšαžœαžΆαž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆ αžœαžΆαž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αžŽαžΆαžŸαŸ‹αŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž˜αžΆαž“αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαžΌαž…αž‡αžΆ D.R.Y. (αž€αž»αŸ†αž’αŸ’αžœαžΎαžαŸ’αž›αž½αž“αž―αž„αž˜αŸ’αžαž„αž‘αŸ€αž)αŸ” αž‚αŸ†αž“αž·αžαž‚αžΊαž”αŸ’αžšαžΎαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αž‘αžΎαž„αžœαž·αž‰αŸ” αžœαžΆαžŸαŸ’αžαžΆαž”αŸ‹αž‘αŸ…αžŸαžΆαž˜αž‰αŸ’αž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž˜αž€αž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ„αŸ‡αž‘αŸαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αžœαžΆαž‡αžΆαž‚αŸ†αž“αž·αžαž αžΆαž˜αž”αŸ’αžšαžΆαž˜αŸ– αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž”αŸ‚αž€αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž–αžΈαžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž“αŸƒαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆ αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαŸ”

αžšαžΉαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ CFM

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž™αžΌαžš αŸ— αž‘αŸ…αž‚αž˜αŸ’αžšαŸ„αž„αž”αžΆαž“αžšαžΈαž€αž…αž˜αŸ’αžšαžΎαž“ αž€αžΆαžšαž”αž“αŸ’αžαž’αž˜αŸ’αž˜αž‡αžΆαžαž· αž‚αžΊαž‡αžΆαž€αžΆαžšαž›αŸαž…αž‘αžΎαž„αž“αŸƒ Ansible αŸ” αž αŸαžαž»αž•αž›αž…αž˜αŸ’αž”αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΌαž”αžšαžΆαž„αžšαž”αžŸαŸ‹αžœαžΆαž‚αžΊαžαžΆαž˜αžΆαž“αž‡αŸ†αž“αžΆαž‰αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜ αž αžΎαž™αžαžΆ bash αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸ„αŸ‡αž‘αŸαŸ” Ansible αž€αŸαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αžΆαž“αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž•αž„αžŠαŸ‚αžšαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž–αžΈαž€αžΆαžšαž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαž—αžΆαž–αžœαžΉαž€αžœαžš αž˜αžΆαž“αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαŸ€αž”αž…αŸ†αž€αžΌαžŠαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αžšαžΉαž„αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž•αž„αžŠαŸ‚αžš Grigory Petrov αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ "αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αž“αž€αž―αž€αž‘αŸαžŸαž•αŸ’αž“αŸ‚αž€αž–αŸαžαŸŒαž˜αžΆαž“αžœαž·αž‘αŸ’αž™αžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αŸ‰αžΆαž€αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“" αž”αžΆαž“αž›αžΎαž€αž‘αžΎαž„αž“αžΌαžœαžŸαŸ†αžŽαž½αžšαžαžΆαž˜αž“αž»αžŸαŸ’αžŸαž˜αŸ’αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžαžΆαž˜αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžΆαžαŸ‹αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αž„αŸ’αž‚αž—αžΆαž–αžŸαž„αŸ’αž‚αž˜αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž‚αžΊαž‡αžΆαžœαžαŸ’αžαž»αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœαž‚αŸ†αž“αž·αžαž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡ αž αžΎαž™αž”αž“αŸ’αžαž’αž—αž·αžœαžŒαŸ’αžαžœαžΆ αž™αžΎαž„αž“αžΉαž„αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžƒαžΎαž‰αžαžΆ αž™αžΎαž„αž€αŸαž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αžΆαž“αžŠαŸ‚αžšαŸ” αžšαžΉαž„αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž€αŸ’αžŸαžΆ αž“αž·αž„αž€αŸ‚αž”αŸ’αžšαŸ‚αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸαŸ‡αž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αžαŸ”

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‘αŸ†αž“αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαžαŸ‚αž˜αž½αž™

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžαŸ’αž“αžΆαž€αŸ‹αž“αžΈαž˜αž½αž™αŸ—αž’αž“αž»αžœαžαŸ’αžαž—αžΆαžšαž€αž·αž…αŸ’αž…αžαŸ‚αž˜αž½αž™αŸ”

αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž›αžΆαž™αž€αžΌαžŠ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαžŸαžαŸ’αžœαž…αž˜αŸ’αž›αŸ‚αž€ spaghetti αžŠαŸαž‘αŸαžœαž—αžΆαž– monolithic αŸ” αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž₯αžŠαŸ’αž‹αžŸαžΆαž˜αž‰αŸ’αž‰αŸ” αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž”αŸ†αž”αŸ‚αž€ Ansible playbook αž‘αŸ…αž‡αžΆαž”αŸ†αžŽαŸ‚αž€αžαžΌαž…αŸ— αž’αžΆαž“αžαž½αž“αžΆαž‘αžΈ Ansible αž“αŸ„αŸ‡αž–αž½αž€αž‚αŸαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαŸ”

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αž·αž‘αž”αžΎαž€

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αžΎαž€ / αž”αž·αž‘αŸ”

  • αž”αžΎαž€αž‘αŸ…αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αŸ– αž˜αžΆαž“αž“αŸαž™αžαžΆαž₯αžšαž·αž™αžΆαž”αžαžšαž”αžŸαŸ‹αž’αž„αŸ’αž‚αž—αžΆαž–αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€αžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž—αŸαž‘αž’αž„αŸ’αž‚αž—αžΆαž–αžαŸ’αž˜αžΈαŸ”
  • αž”αž·αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ– αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αž₯αžšαž·αž™αžΆαž”αž‘αžšαž”αžŸαŸ‹αž’αž„αŸ’αž‚αž—αžΆαž– αž˜αž·αž“αž‚αž½αžšαž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŽαžΆαž˜αž½αž™αž…αŸ†αž–αŸ„αŸ‡αž€αžΌαžŠαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž—αžΆαž–αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αž‘αžΎαž™αŸ”

αžŠαŸ†αž”αžΌαž„αž‘αžΎαž™ αž™αžΎαž„αž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž‚αžΊαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž™αžΎαž„αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ…αž€αžΆαž“αŸ‹ baremetall αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈαž‘αžΎαž™αŸ”

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‡αŸ†αž“αž½αžŸ Liskov

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‡αŸ†αž“αž½αžŸαžšαž”αžŸαŸ‹ Barbara Liskov αŸ” αžœαžαŸ’αžαž»αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž‡αŸ†αž“αž½αžŸαž”αžΆαž“αžŠαŸ„αž™αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž”αŸ’αžšαž—αŸαž‘αžšαž„αžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™ αžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αž–αž·αžŸαŸαžŸαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸαŸ” αžšαžΉαž„αŸ”αž‡αžΆαž‘αžΌαž‘αŸ…αžœαžΆαž‚αžΊαž’αŸ†αž–αžΈ CFM αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž›αžΎαž‚αž˜αŸ’αžšαŸ„αž„αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Java αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž’αž”αŸ‹αž“αŸ…αž›αžΎ Java αž•αŸ’αžŸαŸαž„αŸ— αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ”αž›αŸ” αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž‘αžΆαž αžšαžŽαŸαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž–αž·αž…αžΆαžšαžŽαžΆαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αžšαžΉαž„αŸ”

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž˜αžΆαž“αž€αž·αž…αŸ’αž…αž–αŸ’αžšαž˜αž–αŸ’αžšαŸ€αž„αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžαž½αž“αžΆαž‘αžΈ imbjava ឬ oraclejava αž“αŸ„αŸ‡ αž™αžΎαž„αž˜αžΆαž“ java binary executable αŸ” αž“αŸαŸ‡αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αžαž½αž“αžΆαž‘αžΈαžαžΆαž„αž›αžΎαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž₯αžšαž·αž™αžΆαž”αžαž“αŸαŸ‡ αž–αž½αž€αž‚αŸαžšαŸ†αž–αžΉαž„αžαžΆ java αŸ” αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αžœαžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž‡αŸ†αž“αž½αžŸαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž/αž€αŸ†αžŽαŸ‚ java αž˜αž½αž™αž‡αžΆαž˜αž½αž™αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž”αž‰αŸ’αž αžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ Ansible αžŠαŸ‚αž›αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αž·αž…αŸ’αž…αž–αŸ’αžšαž˜αž–αŸ’αžšαŸ€αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αž›αŸαž…αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αŸ”

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αŸ‚αž„αž…αŸ‚αž€αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αŸ†αž”αŸ‚αž€αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αŸ– β€œαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžšαž”αžŸαŸ‹αž’αžαž·αžαž·αž‡αž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž‚αžΊαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΌαž‘αŸ…αž˜αž½αž™αŸ”

αžŠαŸ†αž”αžΌαž„αž‘αžΎαž™ αž™αžΎαž„αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αžŠαžΆαž€αŸ‹αž—αžΆαž–αž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ…αž€αŸ’αž“αž»αž„ Ansible playbook αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš αž αžΎαž™αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ…αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ (αž’αžαž·αžαž·αž‡αž“αžšαŸ†αž–αžΉαž„αžαžΆαž“αžΉαž„αž˜αžΆαž“αž…αŸ’αžšαž€ 443) αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž–αžΈαž”αž»αž‚αŸ’αž‚αž›αž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αŸ” αž₯αžŠαŸ’αž‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ”

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αŸ” αž˜αŸ‰αžΌαžŒαž»αž›αž“αŸ…αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž˜αž·αž“αž‚αž½αžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž˜αŸ‰αžΌαžŒαž»αž›αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž”αž‘αŸαŸ” αž”αŸ’αžšαž—αŸαž‘αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αžαŸ’αžšαžΌαžœαžαŸ‚αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎ abstractions αŸ” αž’αžšαžΌαž”αžΈαž˜αž·αž“αž‚αž½αžšαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž‘αŸαŸ” αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαžαŸ’αžšαžΌαžœαžαŸ‚αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž’αžšαžΌαž”αžΈαŸ”

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž§αž‘αžΆαž αžšαžŽαŸαž“αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž›αŸ†αž“αžΆαŸ†αž˜αž½αž™αŸ”

  1. αž’αžαž·αžαž·αž‡αž“αž˜αŸ’αž“αžΆαž€αŸ‹αž˜αžΆαž“αž–αž–αž€αž―αž€αž‡αž“αŸ”
  2. αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž–αž–αž€αŸ”
  3. αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž’αž˜αŸ’αž˜αž‡αžΆαžαž·αž“αŸƒαž–αž–αž€ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™ hypervisor αžŠαŸ‚αž› VM αž”αžΎαž€αŸ”

αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸƒαž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž”αžΆαž“αž αžΌαžšαžŠαŸ„αž™αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž‘αŸ…αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž”αž“αŸƒαž’αŸ’αž“αž€αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαŸ’αž–αžŸαŸ‹ αž αžΎαž™αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αŸαŸ‡αž‘αžΎαž„αžœαž·αž‰αŸ” αž€αž»αŸ†αž’αŸ’αžœαžΎαžœαžΆαžαžΆαž˜αžšαž”αŸ€αž”αž“αŸαŸ‡αŸ”

αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αž‡αžΆβ€‹αž€αžΌαžŠβ€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΉαž˜β€‹αžαŸ‚β€‹αž“αž·αž™αžΆαž™β€‹αž’αŸ†αž–αžΈβ€‹αž€αžΌαžŠβ€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž€αŸβ€‹αž’αŸ†αž–αžΈβ€‹αž‘αŸ†αž“αžΆαž€αŸ‹β€‹αž‘αŸ†αž“αž„β€‹αžšαžœαžΆαž„β€‹αž€αžΌαžŠβ€‹αž“αž·αž„β€‹αž˜αž“αž»αžŸαŸ’αžŸ αž’αŸ†αž–αžΈβ€‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜β€‹αžšαžœαžΆαž„β€‹αž’αŸ’αž“αž€β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

αž€αžαŸ’αžαžΆαž‘αžΆαž“αž€αŸ’αžšαž»αž„

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž…αžΌαžšαžŸαž“αŸ’αž˜αžαžαžΆαž’αŸ’αž“αž€αž˜αžΆαž“ Vasya αž“αŸ…αž›αžΎαž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” Vasya αžŠαžΉαž„αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž’αŸ†αž–αžΈαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžαžΎαž“αžΉαž„αž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„ αž”αŸ’αžšαžŸαž·αž“αž”αžΎ Vasya αž”αžΆαžαŸ‹αžαŸ’αž›αž½αž“αž—αŸ’αž›αžΆαž˜αŸ—? αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αžŸαŸ’αžαžΆαž“αž—αžΆαž–β€‹αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„β€‹αžŽαžΆαžŸαŸ‹ αž–αŸ’αžšαŸ„αŸ‡β€‹αž‚αžΆαžαŸ‹β€‹αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž‘αžΆαž“αž€αŸ’αžšαž»αž„β€‹αž”αž»αž€β€‹αŸ” αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαž€αžΎαžαž‘αžΎαž„αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžšαžΏαž„αž“αŸαŸ‡αž€αžΎαžαž‘αžΎαž„ αž αžΎαž™αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΌαžŠ αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αžœαžΆ αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžšαžΌαž”αžšαžΆαž„ αž“αž·αž„αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž€αŸ’αžšαž»αž˜αž‘αŸ αž“αŸ„αŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αžΉαž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž˜αž·αž“αž›αŸ’αž’αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž αžΆαž“αž·αž—αŸαž™αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž“αž·αž„αž…αŸ‚αž€αž…αžΆαž™αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αžŸαŸαž„αŸ—

αž‚αžΌ Devopsing

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžœαžΆαž˜αž·αž“αžŠαžΌαž…αž“αŸ„αŸ‡αž‘αŸαŸ” αž‡αžΆαžšαžΏαž„αž€αŸ†αž”αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžΆαž“αž•αžΉαž€αžŸαŸ’αžšαžΆαž”αŸ€αžš αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„ analogue αž“αŸƒαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž‚αžΌαŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αžœαž·αžŸαŸ’αžœαž€αžšαž–αžΈαžšαž“αžΆαž€αŸ‹αž’αž„αŸ’αž‚αž»αž™αž“αŸ…αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž˜αž½αž™ αž€αŸ’αžαžΆαžšαž…αž»αž…αž˜αž½αž™ αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžšαŸ€αž”αž…αŸ†αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαŸ– αžŠαŸ†αž‘αžΎαž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžŸαžšαžŸαŸαžšαžαž½αž“αžΆαž‘αžΈ Ansible αž‡αžΆαžŠαžΎαž˜αŸ” αžœαžΆαžŸαŸ’αžαžΆαž”αŸ‹αž‘αŸ…αž›αŸ’αž’ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž‘αŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžšαžŽαžΈαž–αž·αžŸαŸαžŸαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸαŸ‡αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž“αž·αž™αŸ„αž‡αž·αžαžαŸ’αž˜αžΈαž˜αž€αžŠαž›αŸ‹ αž’αŸ’αž“αž€αžŽαŸ‚αž“αžΆαŸ†αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αž‘αž‘αž½αž›αž—αžΆαžšαž€αž·αž…αŸ’αž…αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžšαž½αž˜αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž‚αžΆαžαŸ‹ αž’αŸ’αžœαžΎαž€αžΆαžš αž“αž·αž„αž•αŸ’αž‘αŸαžšαž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αŸ”

αž€αžšαžŽαžΈβ€‹αž–αž·αžŸαŸαžŸβ€‹αž˜αž½αž™β€‹αž‘αŸ€αžβ€‹αž‚αžΊβ€‹αž€αžΆαžšβ€‹αž αŸ…β€‹αž§αž”αŸ’αž”αžαŸ’αžαž·αž αŸαžαž»αŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž˜αž½αž™ αž€αŸ’αžšαž»αž˜αž“αŸƒαž’αŸ’αž“αž€αž”αŸ†αž–αŸαž‰αž€αžΆαžαž–αŸ’αžœαž€αž·αž…αŸ’αž… αž“αž·αž„αž’αŸ’αž“αž€αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž‚αŸ’αž“αžΆ αž’αŸ’αž“αž€αžŠαžΉαž€αž“αžΆαŸ†αž˜αŸ’αž“αžΆαž€αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ‚αž„αžαžΆαŸ†αž„ αžŠαŸ‚αž›αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž’αŸαž€αŸ’αžšαž„αŸ‹αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹ αž“αž·αž„αž”αž‰αŸ’αž…αŸαž‰αžŸαž˜αŸ’αž›αŸαž„αž“αŸƒαž‚αŸ†αž“αž·αžαŸ” αž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αŸ’αžœαžΎαžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαžΉαž€αž“αžΆαŸ† αžˆαŸ’αž›αž”αž™αž€αž€αžΆαžšαžŽαŸαž–αžΈαž›αŸ’αž”αž·αž…αž–αžΈαž€αž»αž„αžŸαžΌαž› αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž–αž½αž€αž‚αŸαž˜αž·αž“αž”αžΆαž“αžαž€αžαžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αž αŸαžαž» αž“αž·αž„αžšαŸ€αž“αž’αŸ’αžœαžΈαžαŸ’αž˜αžΈαž’αŸ†αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž’αž˜αŸ’αž˜αžαžΆαŸ”

αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠ

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžαžΆαž˜αž”αŸ’αžšαž’αžΆαž“αž”αž‘ αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž€αžΌαžŠαŸ–

  • αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸ„αž™αž›αŸαžαž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αŸ”
  • αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžαžΆαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ”
  • αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŸαŸ†αžŽαžΎαž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆ αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αžαŸ†αž”αž“αŸ‹αžŠαžΈαžŸαžŽαŸ’αžαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

αž€αžΆαžšαž”αž“αŸ’αž›αž·αž…αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊαžαžΆαž’αŸ’αž“αž€αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž˜αŸ’αžαž„αž˜αž½αž™αŸ—αžαžΆαž˜αž€αžΆαž›αžœαž·αž—αžΆαž‚αž–αŸ„αž›αž‚αžΊαž§αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αžšαž·αžαžαŸ’αž›αŸ‡αž“αŸƒαž”αŸ’αžšαžΌαž”αžΆαž”αŸŠαžΈαž›αžΈαžαŸ αž’αŸ’αž“αž€αž“αžΉαž„αž‘αžΎαž„αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžαŸ’αž˜αžΈαž“αŸƒαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž€αžΌαžŠ

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž™αžΌαžšαŸ—αž‘αŸ… αž€αžΆαžšαžˆαŸ’αž›αŸ„αŸ‡αž”αŸ’αžšαž€αŸ‚αž€αž‚αŸ’αž“αžΆ αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž›αŸαž…αž…αŸαž‰αž‡αžΆαžšαžΌαž”αžšαžΆαž„ αž’αŸ†αž‘αž»αž„αž–αŸαž›αž–αž·αž“αž·αžαŸ’αž™ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡... αž’αŸ’αž“αž€αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž˜αžΆαž“αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž αžΎαž™αž€αžΆαžšαž”αž„αŸ’αžœαž·αž›αž’αŸ’αž“αž€αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αžΆαž“αž‡αž„αŸ‹αž–αž½αž€αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αžαž»αžŸαŸ—αž‚αŸ’αž“αžΆαŸ– αž…αž“αŸ’αž›αŸ„αŸ‡ 2 ឬ 4, camelCase ឬ snake_case αŸ” αžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž—αŸ’αž›αžΆαž˜αŸ—αŸ”

  • αž‚αŸ†αž“αž·αžαžŠαŸ†αž”αžΌαž„αž‚αžΊαžαŸ’αžšαžΌαžœαžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎ linter αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαž‚αžΊαž‡αžΆαžœαž·αžŸαŸ’αžœαž€αžš αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαž‚αžΊαž†αŸ’αž›αžΆαžαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ OS αž˜αž·αž“αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αŸαŸ”
  • αžœαžΆαž”αžΆαž“αžœαž·αžœαžαŸ’αžαž‘αŸ…αž‡αžΆ bot αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαžŠαžΎαž˜αŸ’αž”αžΈαž™αžΊαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαž–αŸ’αžšαžΉαžαŸ’αžαž·αž”αž‰αŸ’αž αžΆαž“αžΈαž˜αž½αž™αŸ— αž“αž·αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž•αž› linter αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž˜αžΆαž“αžšαžΏαž„αžŸαŸ†αžαžΆαž“αŸ‹αž‡αžΆαž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎ αž αžΎαž™αž€αžΌαžŠαž“αŸ…αžαŸ‚αž˜αž·αž“αž‡αž½αžŸαž‡αž»αž›αŸ”

Green Build Master

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž–αŸαž›αžœαŸαž›αžΆαž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ… αž αžΎαž™αž™αžΎαž„αž”αžΆαž“αžˆαžΆαž“αžŠαž›αŸ‹αž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžαžΆ αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαžŠαŸ‚αž›αž˜αž·αž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž˜αž·αž“αž’αžΆαž…αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž·αž±αŸ’αž™αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αŸαž”αžΆαž“αž‘αŸαŸ” αž’αžΈαž™αŸ‰αžΆ! αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž Green Build Master αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžŸαŸ‹αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž™αžΌαžšαŸ–

  • αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαžΆαžαžΆαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ”
  • αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžαŸ’αžŸαŸ‚αž“αŸαŸ‡αŸ”
  • αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž”αžšαžΆαž‡αŸαž™ αž›αŸαžαž€αžΌαžŠαž“αžΉαž„αž˜αž·αž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αŸ’αž›αžΆαž™αž‡αžΆαž˜αŸαž‘αŸαŸ”

αž€αžΆαžšβ€‹αžŸαž˜αŸ’αžšαŸαž…β€‹αž…αž·αžαŸ’αžβ€‹αž“αŸαŸ‡β€‹αž–αž·αžβ€‹αž‡αžΆβ€‹αžˆαžΊβ€‹αž…αžΆαž”αŸ‹β€‹αžαŸ’αž›αžΆαŸ†αž„β€‹αžŽαžΆαžŸαŸ‹β€‹αž–αŸ’αžšαŸ„αŸ‡... αž”αž„αŸ’αž€β€‹αž‡αžΆβ€‹αžšαžΏαž„β€‹αž…αž˜αŸ’αžšαžΌαž„αž…αž˜αŸ’αžšαžΆαžŸβ€‹αž‡αžΆβ€‹αž…αŸ’αžšαžΎαž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž˜αžΆαž“β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž–αŸ’αžšαŸ„αŸ‡... αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ†αžŽαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜ αž αžΎαž™αž™αžΌαžš αŸ— αž‘αŸ…αž…αŸ†αž“αž½αž“αž“αŸƒαžαŸ†αž”αž“αŸ‹αž”αž‰αŸ’αž αžΆαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžαž™αž…αž»αŸ‡αŸ”

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž IaC

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžšαž”αžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž–αž·αžαž‡αžΆαž’αžΆαž…αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž”αžΆαž“αŸ” αž¬αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αžΉαž„αž˜αž·αž“αž“αžΆαŸ†αž±αŸ’αž™αž”αžΆαžαŸ‹αž”αž„αŸ‹αž›αž»αž™αž‘αŸαŸ” αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž€αžΆαžš? αžŸαŸ†αžŽαž½αžšαž‚αžΊαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰ αž“αž·αž„αž‡αžΆαž‘αžŸαŸ’αžŸαž“αžœαž·αž‡αŸ’αž‡αžΆ αžœαžΆαž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž†αŸ’αž›αžΎαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžšαžΏαž„αž˜αž½αž™αžŠαŸ‚αž›αžαžΆαž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž’αŸ’αžœαžΎαž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž›αžΎ Powershell αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž–αŸ’αžšαŸ†αžŠαŸ‚αž“ => VMs αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž›αžΎαžŸαž–αžΈαž€αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹ => αž’αžαž·αžαž·αž‡αž“αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž€αžΆαžšαž‚αŸ’αžšαŸ„αž„αž‘αž»αž€αŸ” αž“αŸαŸ‡β€‹αž˜αž·αž“β€‹αžŸαžΌαžœβ€‹αžŸαž”αŸ’αž”αžΆαž™β€‹αž…αž·αžαŸ’αžβ€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž’αžΆαž…β€‹αž“αžΉαž„β€‹αž’αžΆαž…β€‹αž…αžΆαž”αŸ‹β€‹αž€αŸ†αž αž»αžŸβ€‹αž“αŸαŸ‡β€‹αž“αŸ…β€‹αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›β€‹αž˜αž»αž“β€‹αž”αžΆαž“αŸ”

αž˜αž“αž»αžŸαŸ’αžŸαž˜αŸ’αž“αžΆαž€αŸ‹αž’αžΆαž…αžŸαž½αžšαžαžΆ αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αžœαžΎαž±αŸ’αž™αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰? αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αžŠαžΌαž…αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠ αž˜αž·αž“αž˜αŸ‚αž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αž½αžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž–αžΈαžšαŸ‰αžΆαž˜αžΈαžαžŸαžΆαž€αž›αŸ’αž”αž„ IaC

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž IaCαŸ– αž€αžΆαžšαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž›αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αŸαž›αžœαŸαž›αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αŸαž›αžœαŸαž›αžΆαž…αŸ’αžšαžΎαž“αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαžΌαžœαžαŸ‚αž‡αžΆαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αž›αžΏαž“ αž˜αžΆαž“αž…αŸ’αžšαžΎαž“ αž αžΎαž™αžœαžΆαž‚αŸ’αžšαž”αžŠαžŽαŸ’αžŠαž”αŸ‹αž€αž“αŸ’αž›αŸ‚αž„αž”αž»αž–αŸ’αžœαž€αžΆαž›αž…αŸ’αžšαžΎαž“αŸ”

Bash αž˜αžΆαž“αž›αŸ’αž”αž·αž…

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸαž€αž˜αŸ’αžšαž˜αž½αž™αŸ” αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž αžΎαž™αž…αž˜αŸ’αž›αž„αž‘αŸ…αž‘αžΈαžαžΆαŸ†αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αžšαžΏαž„αžŠαŸ†αž”αžΌαž„αžŠαŸ‚αž›αž‚αž·αžαžŠαž›αŸ‹αŸ–

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

αž…αž»αŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž…αž“αŸ’αž›αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžš? αž˜αž·αž“αž’αžΈαž‘αŸ αž™αžΎαž„αž†αŸ’αž›αžΆαž αž™αžΎαž„αžŠαžΉαž„αž–αžΈαžšαž”αŸ€αž”αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαž„αŸ‹αŸ–

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

αž›αŸ’αž’β€‹αžŽαžΆαžŸαŸ‹? αž‘αŸ! αž…αž»αŸ‡αž”αžΎαž˜αž·αž“αž˜αžΆαž“αž’αŸ’αžœαžΈαž“αŸ…αž€αŸ’αž“αž»αž„αžαž, i.e. αž€αžΆαžšαž‚αŸ€αž”αž“αžΉαž„αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ”

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

αž§αž”αž€αžšαžŽαŸαžœαž·αž—αžΆαž‚αž‹αž·αžαž·αžœαž“αŸ’αž

αž”αž‰αŸ’αž αžΆβ€‹αž–αžΈβ€‹αž‡αŸ†αž αžΆαž“β€‹αž˜αž»αž“β€‹αž’αžΆαž…β€‹αž…αžΆαž”αŸ‹β€‹αž”αžΆαž“β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž—αŸ’αž›αŸαž…β€‹αžŸαž˜αŸ’αžšαž„αŸ‹ αž–αŸ’αžšαŸ„αŸ‡β€‹αžœαžΆβ€‹αž˜αžΆαž“β€‹αžœαž·αž’αžΈβ€‹αž–αŸ’αž™αžΆαž”αžΆαž›β€‹αž‡αžΆβ€‹αž…αŸ’αžšαžΎαž“β€‹αž€αŸ’αž“αž»αž„β€‹αž’αž˜αŸ’αž˜αž‡αžΆαžαž· αž–αž·αž“αž·αžαŸ’αž™αžŸαŸ‚αž›αž‡αžΆαž‘αžΌαž‘αŸ…αž˜αžΆαž“αž–αž½αž€αžœαžΆαž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž’αŸ’αž“αž€αž‘αŸ†αž“αž„αž‡αžΆαž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαŸ’αžšαž‘αžΆαž”αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αž„αŸ‹αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αŸ…αž€αŸ’αžšαŸ„αž˜ IDE αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž—αžΆαžŸαžΆ
αž§αž”αž€αžšαžŽαŸ

bash
αž–αž·αž“αž·αžαŸ’αž™αžŸαŸ‚αž›

Ruby αž–αŸ’αžšαž˜
RuboCop

αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹
αž•αŸƒαž›αžΈαž“αŸ”

ansible
Ansible Lint

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž IaC: αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆ

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžƒαžΎαž‰αž–αžΈαž§αž‘αžΆαž αžšαžŽαŸαž˜αž»αž“ αž’αž»αž„αžŸαŸ†αžšαžΆαž˜αž˜αž·αž“αž˜αžΆαž“αžαžΆαž˜αž–αž›αž–αŸαž‰αž›αŸαž‰αž‘αŸ αž αžΎαž™αž˜αž·αž“αž’αžΆαž…αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αž‚αŸ’αžšαž”αŸ‹αž”αž‰αŸ’αž αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžŠαŸ„αž™αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž™αžΎαž„αž’αžΆαž…αžšαŸ†αž›αžΉαž€αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆαŸ” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αžΉαž€αžƒαžΎαž‰αž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ„αŸ‡αž‚αžΊ αžŸαŸŠαžΌαž“αžΈαž, αž™αžΌαž“αžΈαž, rspec, pytest. αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž‡αžΆαž˜αž½αž™ ansible, αž…αž»αž„αž—αŸ…, saltstack αž“αž·αž„αž’αŸ’αž“αž€αžŠαž‘αŸƒαž…αžΌαž›αž…αž·αžαŸ’αžαž–αž½αž€αž‚αŸ?

αž“αŸ…αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž”αžΆαž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈ αžšαžΉαž„αŸ” αž αžΎαž™αžαžΆαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž₯αžŠαŸ’αž‹αžαžΌαž…αŸ—αŸ” αž–αŸαž›αžœαŸαž›αžΆαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž”αžΆαž“αž˜αž€αžŠαž›αŸ‹αž αžΎαž™αŸ”

  1. αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‘αŸ…αž‡αžΆαž₯αžŠαŸ’αž‹αžαžΌαž…αŸ— αž§αž‘αžΆαž αžšαžŽαŸ αžαž½αž“αžΆαž‘αžΈ Ansible αŸ”
  2. αž”αŸ’αžšαž—αŸαž‘αž”αžšαž·αž™αžΆαž€αžΆαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž˜αž·αž“αžαžΆαžœαžΆ docker ឬ VM αž‘αŸαŸ”
  3. αž™αžΎαž„αž’αž“αž»αžœαžαŸ’αžαžαž½αž“αžΆαž‘αžΈ Ansible αžšαž”αžŸαŸ‹αž™αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸαŸ‡αŸ”
  4. αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αžšαŸ†αž–αžΉαž„αž‘αž»αž€ (αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸαžŸαŸ’αž)αŸ”
  5. αž™αžΎαž„αžŸαž˜αŸ’αžšαŸαž…αžαžΆαž™αž›αŸ‹αž–αŸ’αžšαž˜ αž¬αž˜αž·αž“αž™αž›αŸ‹αž–αŸ’αžšαž˜αŸ”

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž IaCαŸ– αž§αž”αž€αžšαžŽαŸαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆ

αžŸαŸ†αžŽαž½αžš αžαžΎαžαŸαžŸαŸ’αžαž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ CFM? αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ’αž‚αŸ’αžšαžΈαž” αž¬αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αŸ–

CFM
αž§αž”αž€αžšαžŽαŸ

Ansible
αžαŸαžŸαŸ’αžαž·αž“αž αŸ’αžœαŸ’αžšαžΆ

αž”αŸ’αžšαž’αžΆαž“
αž’αž’αž·αž€αžΆαžšαž€αž·αž…αŸ’αž…

αž”αŸ’αžšαž’αžΆαž“
Serverspec

αž’αŸ†αž”αž·αž›
αž αŸ’αž€αžΆαžŸ

αž§αž‘αžΆαž αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 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
αž§αž”αž€αžšαžŽαŸ

Ansible
αž˜αŸ‰αžΌαž›αŸαž‚αž»αž›

αž”αŸ’αžšαž’αžΆαž“
αž•αŸ’αž‘αŸ‡αž”αžΆαž™αžŸαžΆαž€αž›αŸ’αž”αž„

Terraform
αž‚αž½αžšαž±αŸ’αž™αžαŸ’αž›αžΆαž…αž”αŸ†αž•αž»αžαŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‚αž˜αŸ’αžšαŸ„αž„αž“αŸ…αž›αžΎ github αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž†αŸ’αž“αžΆαŸ† 2018-2019αŸ–

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž˜αŸ‰αžΌαž›αŸαž‚αž»αž›αž‘αž›αŸ‹αž“αžΉαž„ αž•αŸ’αž‘αŸ‡αž”αžΆαž™αžŸαžΆαž€αž›αŸ’αž”αž„

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αžŠαŸ†αž”αžΌαž„αž™αžΎαž„ αžŸαžΆαž€αž›αŸ’αž”αž„αž”αŸ’αžšαžΎαž•αŸ’αž‘αŸ‡αž”αžΆαž™:

  1. αž”αž„αŸ’αž€αžΎαž VM αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαŸ”
  2. αž’αž“αž»αžœαžαŸ’αžαžαž½αž“αžΆαž‘αžΈ Ansible αŸ”
  3. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž’αž·αž€αžΆαžšαž€αž·αž…αŸ’αž…αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 25-35 αžαž½αž“αžΆαž‘αžΈαžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš 40-70 αž“αžΆαž‘αžΈαžŠαŸ‚αž›αž˜αžΆαž“αžšαž™αŸˆαž–αŸαž›αž™αžΌαžšαŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‡αŸ†αž αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‚αžΊαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ… jenkins/docker/ansible/moleculeαŸ” Idiologically αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

  1. αž›αžΈαž„αžŸαŸ€αžœαž—αŸ…αž›αŸαž„αŸ”
  2. αžαž˜αŸ’αžšαž„αŸ‹αž‡αž½αžšαžαž½αž“αžΆαž‘αžΈαŸ”
  3. αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžš
  4. αž’αž“αž»αžœαžαŸ’αžαžαž½αž“αžΆαž‘αžΈ Ansible αŸ”
  5. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš testinfra αŸ”
  6. αž–αž·αž“αž·αžαŸ’αž™αž—αžΆαž–αž‚αŸ’αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

Linting αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 40 αžαž½αž“αžΆαž‘αžΈ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΆαž”αŸ‹αžŸαž·αž”αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž”αŸ’αžšαž αŸ‚αž› 15 αž“αžΆαž‘αžΈαŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸβ€‹αž’αžΆαžŸαŸ’αžšαŸαž™β€‹αž›αžΎβ€‹αž€αžαŸ’αžαžΆβ€‹αž‡αžΆβ€‹αž…αŸ’αžšαžΎαž“β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž‡αž„αŸ‹β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎ αž‡αŸ†αž“αžΆαž‰β€‹αž€αŸ’αž“αž»αž„β€‹αž€αŸ’αžšαž»αž˜αŸ”αž›αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž”αž·αž‘αžŸαŸ†αžŽαž½αžšαžαŸαžŸαŸ’αžαž―αž€αžαžΆ

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž IaCαŸ– αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‡αŸ†αž αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž–αžΈαžšαŸ‰αžΆαž˜αžΈαžαž“αžΉαž„αž‡αžΆαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαž˜αžΆαž αžšαžŽαž€αž˜αŸ’αž˜αŸ” αž–αž½αž€αžœαžΆαžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆαŸ–

  1. αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž‘αŸ…αž‡αžΆαž₯αžŠαŸ’αž‹αžαžΌαž…αŸ— αž§αž‘αžΆαž αžšαžŽαŸ αžαž½αž“αžΆαž‘αžΈ Ansible αŸ”
  2. αž”αŸ’αžšαž—αŸαž‘αž”αžšαž·αž™αžΆαž€αžΆαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž˜αž·αž“αžαžΆαžœαžΆ docker ឬ VM αž‘αŸαŸ”
  3. αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αž αž˜αž½αž™β€‹αž”αžΆαž…αŸ‹ αžαž½αž“αžΆαž‘αžΈαžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“αŸ”
  4. αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αžšαŸ†αž–αžΉαž„αž‘αž»αž€ (αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸαžŸαŸ’αž)αŸ”
  5. αž™αžΎαž„αžŸαž˜αŸ’αžšαŸαž…αžαžΆαž™αž›αŸ‹αž–αŸ’αžšαž˜ αž¬αž˜αž·αž“αž™αž›αŸ‹αž–αŸ’αžšαž˜αŸ”

αž“αž·αž™αžΆαž™αž‡αžΆαžšαž½αž˜ αž™αžΎαž„αž˜αž·αž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž’αžΆαžαž»αž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαžΌαž…αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž―αž€αžαžΆαž“αŸ„αŸ‡αž‘αŸ αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ”

αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž IaCαŸ– αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž”αž‰αŸ’αž…αž”αŸ‹

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž“αŸ…αž›αžΎαž€αŸ†αž–αžΌαž›αž“αŸƒαž–αžΈαžšαŸ‰αžΆαž˜αžΈαž αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αžœαžΆαž‚αž˜αž“αŸαžŠαŸ„αž™αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž–αžΈαž…αž»αž„αžŠαž›αŸ‹αž…αž”αŸ‹αŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž™αžΎαž„αž˜αž·αž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ ឬαž₯αžŠαŸ’αž‹αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž“αŸƒαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸαŸ” αž™αžΎαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž”αžΆαž“αžαž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆ αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αžŠαŸ‚αž›αž™αžΎαž„αžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ” αž‡αžΆαž’αž€αž»αžŸαž› αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αžŠαŸ‚αž›αžƒαžΎαž‰αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αŸ’αžšαž’αž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž‘αŸ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚... αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸαŸ‡αž…αŸ’αžšαžΎαž“αžαŸ‚αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž”αŸ’αž›αŸ‚αž€ αž“αž·αž„αž–αž·αž”αžΆαž€αž’αŸ’αžœαžΎαž‚αŸ†αžšαžΌ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž˜αž“αž»αžŸαŸ’αžŸαž‚αŸ’αžšαž”αŸ‹αžšαžΌαž”αž”αž„αŸ’αž€αžΎαžαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αŸ” αž˜αžΆαž“αž€αžΆαžšαž‘αžΆαž˜αž‘αžΆαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‚αŸ’αž˜αžΆαž“αž…αž˜αŸ’αž›αžΎαž™αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž˜αžΆαž“ αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ†αžšαž»αž‰αž’αŸ’αž“αž€αžŠαž‘αŸƒαž±αŸ’αž™αž”αž‰αŸ’αž…αŸαž‰αž‚αŸ†αž“αž·αž αž¬αžαŸ’αžšαžŠαž»αžŸαž…αŸ’αžšαž˜αž»αŸ‡αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžŠαŸ„αž™αž€αžΆαžšαž–αž·αžαžαžΆ αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αž»αž“αž™αžΎαž„αžαžΆαŸ†αž„αž–αžΈαž™αžΌαžšαž™αžΆαžšαžŽαžΆαžŸαŸ‹αž˜αž€αž αžΎαž™αŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‚αž˜αŸ’αžšαŸ„αž„αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαž˜αŸ’αž”αžΌαžšαž”αŸ‚αž”αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž€αžΆαžšαž’αŸ†αŸ— αž αžΎαž™αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž•αŸ’αž›αžΌαžœαžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž›αž‡αžΆαž˜αž½αž™αžœαžΆαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž‚αžΆαŸ†αž‘αŸ’αžšαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž…αŸ’αžšαžΎαž“ αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αŸ”αž›αŸ” αž€αžΆαžšαžŠαžΉαž„αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž’αžΆαž…αž˜αžΆαž“αžšαžΌαž”αžšαžΆαž„αž‡αžΆαž―αž€αžŸαžΆαžš docker-compose αž‡αžΆαž…αŸ’αžšαžΎαž“ αž“αž·αž„αž€αžΆαžšαžŠαžΉαž„αžαžΆαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž˜αž½αž™αžŽαžΆαž‚αžΊ Jenkins αŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž™αžΌαžšαžŽαžΆαžŸαŸ‹αž˜αž€αž αžΎαž™ αžšαž αžΌαžαžŠαž›αŸ‹αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒ αž€αžΆαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœ αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž•αŸ’αž‘αŸαžšαžœαžΆαž‘αŸ… Openshift αž‘αŸαŸ” αž’αž»αž„αž“αŸ…αžαŸ‚αžŠαžŠαŸ‚αž› αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αžšαž·αž™αžΆαž€αžΆαžŸαž“αŸƒαž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš (αž‡αŸ†αžšαžΆαž”αžŸαž½αžš D.R.Y. αž˜αŸ’αžαž„αž‘αŸ€αž)αŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‚αŸ†αž“αž·αžαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž”αžΆαž“αž”αž“αŸ’αžαž‘αŸ…αž˜αž»αžαž‘αŸ€αž αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„ openshift αž–αž½αž€αž‚αŸαž”αžΆαž“αžšαž€αžƒαžΎαž‰αžšαžΏαž„αžŠαžΌαž…αž‡αžΆ APB (Ansible Playbook Bundle) αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžαŸ’αž…αž”αŸ‹αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžαžΊαž“αŸαžšαŸ” αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž˜αžΆαž“αž…αŸ†αžŽαž»αž…αžŠαŸ‚αž›αž’αžΆαž…αžŸαžΆαž€αž›αŸ’αž”αž„αž”αžΆαž“ αž“αž·αž„αž’αžΆαž…αžŸαžΆαž€αž›αŸ’αž”αž„αž”αžΆαž“αž“αŸƒαž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αžŸαŸ’αžαžΆαž”αŸ‹αž‘αŸ…αž›αŸ’αž’αžšαž αžΌαžαžŠαž›αŸ‹αž™αžΎαž„αžšαžαŸ‹αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž…αž˜αŸ’αžšαž»αŸ‡αŸ– αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš Windows αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž“αŸƒαž’αŸ’αžœαžΈ αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆ αžšαž”αŸ€αž”αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ αž“αž·αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‚αžΊαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„ jenkins αŸ”

αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž–αžΈαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ 200 αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’

αž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΌαž…αž€αžΌαžŠ

  • αž›αŸαžαž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αŸ”
  • αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž˜αž“αž»αžŸαŸ’αžŸαŸ”
  • αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ”

αžαŸ†αžŽβ€‹αž—αŸ’αž‡αžΆαž”αŸ‹

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹