áá»ááºážáááºáááºáž IAC (Infrastructure as Code) ááẠrepository ááœáẠááááºážáááºážáá¬ážáá±á¬ code áá»á¬ážáá¬ááá á€áá¯ááºááᯠáááºážáá¶áá¬ážáá±á¬ áá°áá»á¬ážááŸáá·áº áá¯ááºáááºážá ááºáá»á¬ážáááºáž áá«áááºáááºá áá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á០á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á á®áá¶ááá·áºááœá²ááŸá¯ááŸáá·áº áá±á¬áºááŒáá»ááºá¡áá áá»ááºážáááºááŸá¯áá»á¬ážááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯ááẠááŒá áºááá¯ááºáá«ááá¬ážá áá±á¬ááºážáá«ážááá¯áááºáá±á ááºááœáẠá€á¡ááŒá¶á¥á¬ááºááᯠááŸááºáá¬ážáá¬ážááẠá¡ááŒá¶áá±á¬ááºážááŒá áºáááá·áºáááºá
áá«á áá»áœááºáá±á¬á·áºáá²á· ááŸááºáááºážáá
áºáá¯áá«á
áááá¯ááºáá»á¬ážááŸáá·áº áá®áá®ááá¯áá»á¬áž
á¡ááºá¹áááááºáá¬ážááŸááºáž áá¯ááŸá¬ážáá¬ážááŸááºáž - á¡ááŒá±á¬ááºááŒá±áž 2019-04-24
SpbLUG DevopsConf 2019-05-28 á០áá®áá®ááá¯(RU) DINS DevOps ááá±áááºáž 2019-06-20 á០áá®áá®ááá¯(RU) áááá¯ááº
bash áááá¯ááºážá¡ááŒá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ
áááºááẠááá±á¬áá»ááºá¡áá
áºáá
áºáá¯ááá¯á· áá±á¬ááºááŸááá¬áááºááá¯áá«á
áá¯á·á áá°ááá¯á·á âáá«ááá¯á·áá®ááŸá¬ááŸááááºá Code ááá¯á¡ááŒá
áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶â . áááºááœá±á·ááŸá¬ ááœááºáá¬áááºá bash áááá¯ááºážá¡ááŒá
áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ ááá¯á·ááá¯áẠá¥ááᬠáá±á·á
áºááŸááºáááºážá¡ááŒá
ẠááŸááºáááºážáááºááŒááºážá. á€áááºááŸá¬ á¡ááœááºáááºááœá±á·á¡ááŒá±á¡áá±ááŒá
áºáááºá á¥ááá¬á á¡áá¬ážáá°ááŒá
áºáááºáá»áá¯ážááᯠDenis Lysenko á áááá·áºááœááºážáá
áºáá¯ááœáẠáá±á¬áºááŒáá²á·áááºá
ááá¹ááá áºáá»áá¯á·áá²á· ááŒá±á¬ááá¯á·ááááºá bash áááá¯ááºážá¡ááŒá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ áá«á áá¯ááºááá¯áá«áá²
- áá»áá¯ážááœá¬ážááá¯ááºááŒááºáž: áááºááẠbash ááŸááºáááºážááᯠáá°ááá¯ááºááŒá®áž ááá¯áá±áá¬á០ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááŒá®ážá áááºážáááºážá¡á¬ážááŒáá·áº áááºááẠá¡áá¯ááºááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá áºáá¯ááᯠá¡ááœááºáá áºáá¯á¡ááŒá Ạááá°ááá¯ááºáááºá
- áá°ááœá²: áááºáá°ááœá±áááºáá¬ááŒá®áž áá°ááá¯á·áá¬ááœá±áá¯ááºáá²á·áá²ááá¯áᬠáááºážáááá«áááºá áá«á áááºážááá¯ááœááºáá±á«ááºááŸá¬ á¡áá¯ááºáá¯ááºáá²á·áá¯á¶á á¶áá áºáá¯áá® áŠážáááºááœá¬ážá á±ááá·áºá¡áá»ááºááá¯ááºáá«áá°ážá
- áá¯á¶ááŒááº: áá¬ááºáááºážá áááºáá°ááœá± áá¬ááœá± áá¯ááºáá²á·áá²á áá¬áᬠáá¯á¶ážááŸá¯á¶ážááœá¬ážáá«á áááºáᬠáááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááẠááá¯ááºáá«á
á¡áááºááá¯á·ááŒá¯ááááºáž
Code ááá¯á¡ááŒá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶
áá®ááᯠáá°ážáááºážáá²á· ááŒá áºáááºáá»áá¯ážáá±á¬áẠááŸááá«áá±ážáááºá bash áááá¯ááºážá¡ááŒá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ áá¬ážááŒáá·áºááœá²ááá¯ááºáááºá Code ááá¯á¡ááŒá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá«áá±ááá·áº áá±á¬ááºážááœááºáá²á· LAMP áá¬áá¬ááẠááá¯ááŸá¯ááºááœá±ážáá²á· áá áºáá¯áá¯ááᯠáá¯ááºáá»ááºáá²á·á¡áá«á áá®áá¯ááºááᯠáá áºáááºážáááºážáá²á· ááŒá¯ááŒááºááá¯á·á ááŒá±á¬ááºážáá²ááá¯á·á ááŒáŸáá·áºáááºááá¯á· ááá¯á¡ááºáááºááá¯áá¬ááᯠáááá¯á¶ážáá»á¯ááºááœá¬ážááŸá¬áá«á áá±á¬ááºáá áºáá¯ááá±á¬á· áá»áœááºáá±á¬áºááá¯á·ááŒá¬ážá áá»ááºážááŒáá¯ááºááœá±ááᯠáá¯á¶ážáááºáá»ááºáá«áááºá Code ááá¯á¡ááŒá áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ ááŸáá·áºáá±á¬á·ááºáá²ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá
ááŒá±á¬ááºáááºá
ááá¯ááŸá±á¬ááºááŸá¯á
áá
Ạááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž ááá±á¬áá»ááºááœááºá áá¯ááºáá±á¬ááºá
áá¬ááœá²áá
áºáᯠááŸááá²á·áááºá
- á€áá±áá¬ááœáẠssh ááŸáááá·áºáááºáá±á¬ááºááŒá®áž command ááá¯áá¯ááºáá±á¬ááºáá«á
- á¡á²áá®ááŸá¬ ááá¯ááºááᯠáá±á¬áºáá®áá°ážáá«á
- á€áá±áá¬ááœáẠconfig ááá¯ááŒááºáá«á
- áááºáá±á¬ááºááŸá¯ááá¯á¡á²áá®ááŸá¬á áááºáá«á
- ...
- á¡ááŒááºá¡á áœááºáž!
áá±á¬áºááŒáá¬ážáá±á¬ áá¯áá¹áááá±áá¡ááœááºá bash ááẠáá¯á¶áá±á¬ááºáááºáááºááá¯á á¡áá°ážáááŒáá·áº ááá±á¬áá»ááºáá¡á
á±á¬ááá¯ááºážá¡ááá·áºáá»á¬ážááœááºá áááºážááẠááá¯ááŸá
áá±áá»áááºááŒá
áºáááºá áá®
D.R.Y áá²á·ááá¯á·áá±á¬ á¡áá±á·á¡áá»áá·áºáá áºáᯠááŸááá±ááŒá±á¬ááºáž ááœá±á·ááŸáááá«áááºá (ááá¯áá·áºááá¯ááºááᯠáááºáá«ááá²áá² áááŒá±á¬áá«áá²á·á á¡áá¯ááºáá®áá¬ááŸá¬ ááŸáááŒá®ážáá¬ážáá¯ááºááᯠááŒááºáá¯á¶ážáááºááŒá áºáááºá ááá¯ážááŸááºážáááºááá¯á·áááºááá±ááá·áº áá®ááá¯áá»ááºáá»ááºážáá±á¬ááºááá¬áá²á·áá«áá°ážá áá»áœááºá¯ááºááá¯á·áááá á¹á ááœááºá áááºážááẠbanal á¡áá°á¡áááŒá áºáááº- configs ááᯠscripts áá»á¬ážááŸáá·áºááœá²ááŒá¬ážáááºááŒá áºáááºá á¡á²áá«ááœá±á áááºáááºáá¯á¶á¡á¬áž áá®ážááŒá¬ážá á®áá»áá¬ážáá¯á¶á áá¯ááºáááºážááá¯ááºáᬠáá¯áá¹áááá¯áá¹ááá áá®ážááŒá¬ážá á® áááºááŸááºáá»ááºáá»á¬ážá
S.O.L.I.D. CFM á¡ááœááº
á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ ááá±á¬áá»ááºááẠááŒá®ážááœá¬ážáá¬áááºá
áá áºáá¯áááºážáá±á¬ áá¬áááºáá»á±ááŸá¯áá°áá±á¬ááº
á¡áááºážáá áºáá¯á á®ááẠá¡áá¯ááºáá áºáá¯áᬠáá¯ááºáá±á¬ááºáááºá
áá¯ááºááá¯áá±á¬ááŸá±á¬ááŒá®áž ááŒáá·áºááŒááºáá±á¬ spaghetti áá®áá°ážáá»á¬áž áááºáá®ážááẠáááá¯á¡ááºáá«á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááẠááá¯ážááŸááºážáá±á¬á¡á¯ááºáá»á¬áž áá«ááŸáááá·áºáááºá Ansible playbook ááᯠá¡ááá¯ááºážáááºáá»á¬áž ááœá²á Ansible á¡áááºážááá¹ááá»á¬ážááᯠáááºáá«á áááºážááá¯á·ááᯠááááºážááááºážááẠááá¯ááá¯ááœááºáá°ááŒá±á¬ááºáž ááœááºáá±á«áºáá¬áá«áááºá
á¡ááœáá·áºá¡ááááºá¡ááŒá±áá¶áá°
á¡ááœáá·áº/á¡áááẠááá±á¬ááá¬ážá
- Open to extension- ááá¯áááºááŸá¬ entity á¡áá»áá¯ážá¡á á¬ážá¡áá áºáá»á¬ážáááºáá®ážááŒááºážááŒáá·áº entity áá áºáá¯áá¡ááŒá¯á¡áá°ááᯠááá¯ážáá»á²á·ááá¯ááºáááºá
- ááŒá±á¬ááºážáá²ááẠááááºáá¬ážáááº- á¡ááœá²á·á¡á ááºážáá áºáá¯á á¡ááŒá¯á¡áá°ááᯠáá»á²á·ááœááºááŒááºážááŒá±á¬áá·áºá ááá¯á¡áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áº áá¯ááºááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž ááá¯ááºááá·áºáá«á
áááŠážááœááºá áá»áœááºá¯ááºááá¯á·ááẠvirtual machines áá»á¬ážááœáẠá ááºážáááºááŸá¯á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááŒáá·áºáá»ááºáá¬ážáá±á¬áºáááºážá á¡áá¯á¶ážáá»ááŒááºážáá á®ážááœá¬ážáá±ážáá¯áá¹ááááŸá¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááŸáá·áº áá®ážááŒá¬ážááŒá áºáá±áá±á¬ááŒá±á¬áá·áº ááŒá¿áá¬áá áºá á¯á¶áá áºáá¬áááŸááá² baremetall ááœáẠá áááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
Liskov á¡á á¬ážááá¯ážáá°á
Barbara Liskov á á¡á á¬ážááá¯ážáá°á áááá¯ááááºáá áºáá¯ááŸá á¡áá¬ááá¹áá¯áá»á¬ážááᯠáááá¯ááááºá ááŸááºáááºáá±á¬áá¯ááºáá±á¬ááºááŸá¯ááᯠáááŒá±á¬ááºážáá²áá² áááºážááá¯á·á á¡áá»áá¯ážá¡á á¬ážááœá²áá»á¬ážá á¥ááá¬áá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážááá¯ááºááá«áááºá
ááá¯ááá¯áá»ááºááŒáá·áºá áœá¬ááŒáá·áºáá»áŸáẠáááºážááẠááá¯áá±áá¬ááœáẠá¡áá¯á¶ážáá»ááá¯ááºááá·áº áá®ážááŒá¬ážááá±á¬áá»ááºáá áºáá¯á á¡ááºá¹áá«áááºááá¯ááºáá«á á¡á áá¯ááºá¡áá²áá±áá¯áá»á¡á¬ážááŒáá·áº áááºážááẠCFM á¡ááŒá±á¬ááºážááŒá áºáááºá á¥ááá¬á á¡ááŒá¬ážááá±á¬áá»ááºáá áºáá¯ááœáẠJavaá á¡ááá®áá±ážááŸááºážáá¬áá¬áá»á¬ážá áá±áá¬áá±á·á áºáá»á¬ážá OS á áááºááá¯á·áááááºááœáẠboxed Java á¡ááá®áá±ážááŸááºážáá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáá«áááºá á€á¥ááá¬ááá¯á¡áá¯á¶ážááŒá¯á áá±á¬ááºáááºá¡ááŒá±áá¶áá°áá»á¬ážááᯠáá»áœááºá¯ááºáá¯á¶ážáááºáá«áááºá á¡á áá¯ááºá¡áá²
áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áá»áœááºá¯ááºááá¯á·ááẠimbjava ááá¯á·ááá¯áẠoraclejava á¡áááºážááá¹áááᯠááá·áºááœááºážáá«áá áá»áœááºá¯ááºááá¯á·ááœáẠjava binary executable ááŸááááºáá°áá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœá²á·á¡ááœááºáž ááá±á¬áá°áá®áá»ááºáá áºáá¯ááŸááááºá áá«á ááá¯á¡ááºááá¯á·áá²á Upstream á¡áááºážááá¹ááá»á¬ážááẠá€á¡ááŒá¯á¡áá°áá±á«áºááœááºáá°áááºáááºá áááºážááá¯á·ááẠjava ááá¯áá»áŸá±á¬áºááá·áºáááºá áá áºáá»áááºáááºážááŸá¬áááºá áááºážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž á¡ááá®áá±ážááŸááºážááŒáá·áºáá»ááºááŸá¯ááá¯ááºáᬠáá¯áá¹ááááᯠáááŒá±á¬ááºážáá²áá² á¡ááŒá¬áž java á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯/áá¬ážááŸááºážáá áºáá¯ááŸáá·áº á¡á á¬ážááá¯ážááá¯ááºá á±áá«áááºá
á€áá±áá¬ááœáẠááŒá¿áá¬ááŸá¬ Ansible ááœáẠáááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáááŒá áºááá¯ááºááá·áºá¡áá»ááºááŸá¬ á¡áááºážá¡ááœááºáž ááá±á¬áá°áá®áá»ááºá¡áá»áá¯á· ááœááºáá±á«áºáá¬ááŒááºážááŒá±á¬áá·áº ááŒá áºáááºá
á¡ááºáá¬áá±á·á Ạááœá²ááŒá¬ážáá±ážáá°
á¡ááºáá¬áá±á·á áºááᯠááœá²ááŒá¬ážááŒááºážáááá¬á- âáá»á¬ážá áœá¬áá±á¬ client-specific interfaces áá»á¬ážááẠáá±áá°áá»áááºááœááºáá»áẠinterface áá áºáá¯ááẠááá¯áá±á¬ááºážáá«áááºá
áááŠážááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážááŒáá·áºáá»ááºááŒááºážá ááœá²ááŒá¬ážááŸá¯á¡á¬ážáá¯á¶ážááᯠAnsible playbook áá áºáá¯ááœáẠááá·áºááœááºážááẠááŒáá¯ážá á¬ážáá²á·áá±á¬áºáááºáž áá¶á·ááá¯ážááẠáááºáá²ááŒá®áž áá»áœááºá¯ááºááá¯á·ááœáẠáááºááŸááºáá¬ážáá±á¬ ááŒááºáá¡ááºáá¬áá±á·á áºáá áºáá¯ááŸáááẠ(áááá¯ááºážááá·áºá ááááºáááºáž 443 ááᯠáá»áŸá±á¬áºááá·áºáá¬ážáááº) áá»ááºážáááºááŒá®ážáá±á¬áẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯ááᯠáá áºáŠážáá»ááºážá á®á០á á¯á ááºážááá¯ááºáááºá áááá»áá±á¬á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á¡ááœááºá¡á¯ááºá
ááŸá®ááá¯ááŸá¯ ááŒá±á¬ááºážááŒááºááŸááºááŒááºážááá¯ááºáᬠá¡ááŒá±áá¶áá°
ááŸá®ááá¯ááŸá¯ááŒá±á¬ááºážááŒááºááŸááºááŒááºážáááá¬áá ááŒáá·áºáá¬ážáá±á¬á¡ááá·áºááŸá module áá»á¬ážááẠá¡á±á¬ááºááŒá±á¡ááá·áºááŸá module áá»á¬ážáá±á«áºááœááºáá°áááºááá±ááá·áºáá«á áá±á¬áºáá»á°ážá¡áá»áá¯ážá¡á á¬ážááŸá áºáá¯á áá¯á¶ážááẠabstractions áá»á¬ážáá±á«áºááœááºáá°áááºááá«áááºá Abtraction áá»á¬ážááẠá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážáá±á«áºááœááºáá°áááºááá±ááá·áºáá«á á¡áá±ážá áááºá¡áá»ááºáá»á¬ážááẠabstraction áá»á¬ážáá±á«áºááœááºáá°áááºááá«áááºá
á€ááœáẠááá°áá¬ááẠááá·áºáá»ááºáááºáá¯á¶á á¶áá áºáá¯á¡áá±á«áº á¡ááŒá±áá¶áá«áááºá
- áá±á¬ááºáááºáá»á¬ážáá²á០áá áºáŠážááŸá¬ áá®ážááá·áº cloud áá áºáá¯ááŸááááºá
- áá»áœááºá¯ááºááá¯á·ááẠcloud á¡ááœááºážááŸá virtual machines áá»á¬ážááᯠááŸá¬áá°áá¬ážáá«áááºá
- ááá¯á·áá±á¬áº cloud á ááá±á¬ááá¬áááŒá±á¬áá·áºá VM ááá¯ááœáá·áºáá¬ážááá·áº hypervisor ááŸáá·áº á¡ááá®áá±ážááŸááºážááŒáá·áºáá»ááºááŒááºážááᯠáá»áááºáááºáá¬ážáááºá
á¡á²áá«ááœá±á á¡ááá·áºááŒáá·áº á¡ááá®áá±ážááŸááºáž ááŒáá·áºáá»ááºááŸá¯ áá¯áá¹áááá±áááẠhypervisor á á¡á±á¬ááºááŒá±á¡ááá·áºááá¯á· ááŸá®ááá¯ááŸá¯ááŸáá·áºá¡áá° á á®ážáááºážáá¬ááŒá®áž á€áá¯áá¹ááááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯ááá·áºá¡áá« ááŒá¿áá¬áá»á¬ážááᯠááá¯ááá¯áááºá áá®áááºážáá²á· ááá¯ááºáá«áá²á·á
á¡ááŒááºá¡ááŸááºááŒá¯áá°ááŸá¯
áá¯ááºáá²á·ááá¯á· á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážááẠáá¯ááºá¡ááŒá±á¬ááºážáá¬ááá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ áá±ážááœá²áá°áá»á¬ážááŒá¬áž á¡ááŒááºá¡ááŸááºáááºááœááºááŸá¯áá»á¬ážá¡ááŒá±á¬ááºážá áá¯ááºááŸáá·áº áá°áá»á¬ážááŒá¬áž áááºááœááºááŸá¯áááºáž ááŒá áºáááºá
áááºá áºáá¬ážá á®ážááááºááá¯á· ááááá«áááºá
ááá·áºááá±á¬áá»ááºááœáẠVasya ááŸááááºáᯠáá°áááŒáá«á áá¯á·á Vasya ááẠáááºážáá²á·á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá²á·áááºáááºáá²á· á¡áá¬á¡á¬ážáá¯á¶ážááá¯áááááºá Vasya áá¯ááºááááºáá»á±á¬ááºááœá¬ážááẠáá¬ááŒá áºááá²á áá®á¡ááŒá±á¡áá±á áááá·áºá¡ááŒá±á¡áá±ááŸááºááá¯á· áá°áááºá áºáá¬ážáá²á· áááºááá¯ááºááá¯á·ááááºá ááá«ááá¶ááŸá¬ ááŒá áºáááºáá«áááºá á¡áááºá áááºážááẠáá¯ááºá áááºážáááœá²á·á ááºážáá¯á¶á á¡áá¯ááºáá¯ááºáá¯á¶á á¡ááœááºá¡ááŒááºááŸáá·áº á áá¬ážááŸááºáá»á¬ážá¡ááŒá±á¬ááºáž á¡ááááá¬ááᯠá¡ááœá²á·ááŒá¬ážááœáẠáááŒáá·áºáá±áá«áá áááºááẠáááŸá áºááŒáá¯á·ááœáẠá¡ááŒá±á¡áá±áá»á¬ážá áœá¬ááᯠááŒá¯á¶ááœá±á·áááá¯ááºáááºá á€á¡áá¹ááá¬ááºáá»á¬ážááᯠáá»áŸá±á¬á·áá»áááºááŸáá·áº á¡ááœá²á·á¡ááœááºáž á¡ááááá¬ááŒáá·áºáá±áááºá á¡áá»áá¯ážáá»áá¯ážáá±á¬ áá»ááºážáááºááŸá¯áá»á¬ážááᯠáááºáá¯á¶ážááá¯ááºáááºá
Devopsing ááœá²
áááŒáá¯ááºáá°ážá
áá±á¬ááºááẠá¡áá°ážááá á¹á áááºáá áºáá¯ááá±á¬á· á¡ááŒá áºá¡áá»ááºáá±á«áºááá¯ááŸá¯áá«á ááŒá¿áá¬áá áºáá¯á¡ááœááºáž áá¬áááºáá»áá°áá»á¬ážááŸáá·áº áá«áááºáááºáááºáá°áá»á¬áž á á¯áá¯á¶ážáᬠáá±á«ááºážáá±á¬ááºáá áºáŠážááᯠááá·áºá¡ááºáá¬ážááŒá®ážá áá°ááááºáá¬ážááŒááºááᯠáá»áŸáá±áᬠá¡ááœá±ážá¡ááŒááºááᯠáá±á·áá»áá·áºáá±ážááá·áº áá°áá áºáá±á¬ááºááŒá áºáááºá á¡ááŒá¬ážáá«áááºáá°áá»á¬ážááẠáá±á«ááºážáá±á¬ááºá á¡ááœá±ážá¡ááŒááºáá»á¬ážááᯠááá¯ááºáá¬ááŒááºážá ááœááºááá¯ážááºá០ááŸáá·áºááœááºáá»á¬ážááᯠá á°ážá ááºážáá±á·áá¬ááŒááºážá ááŸááºáááºážááŸá á á¬ááŒá±á¬ááºážáá áºááŒá±á¬ááºážá០áááœááºááœá¬ážááŒá±á¬ááºáž á á áºáá±ážááŒá®áž á áá áºááŸáá·áº áááºáááºááá·áº á¡áá áºá¡áááºážáá»á¬ážááᯠáá±á·áá¬áá«á á€áááºážáááºážááẠáááŒá¬áá á¡áá¯ááºááŒá áºáá²á·áááºá
Code ááá¯ááŒááºáááºáááºážá á áºááŒááºáž
ááá±á¬ááá¬ážá¡áá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠá¡ááááá¬ááŸáá·áº áá¯ááºááŒááºáááºáá¯á¶ážáááºááŒááºážááᯠá¡áá¯á¶ážááŒá¯á áááºááá¯á·á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž ááŒáá·áºáá±ááẠááá¯ááá¯áááá±á¬ááºáááº-
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠááá¯ááŸá±á¬ááºáá¬ááŸá áá¯ááºááŒáá·áº áá±á¬áºááŒáááºá
- áá®ážááŒá¬ážáá¬áááœá²áá áºáá¯ááœáẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬áž ááŒá áºáá±á«áºáááºá
- áá±á«ááºážá ááºážááẠáá±á¬ááºážááá¯ááŸá¯áá áºáá¯á¡ááœááºážá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážá ááŒá áºááá»áœááºážáá±á«áºáá±áááᯠáááºááœá±á·ááŒááºááá¯ááºáá«áááºá
á€áá±áá¬ááœáẠáá®ážáá±á¬ááºážááá¯ážááŒáááºááŸá¬ á¡áá»áááºááá¬ážá¡á áá¯á¶ážáááºáá°áá»á¬ážááᯠáá áºáŠážáá»ááºážá á® ááœá±ážáá»ááºááŒááºážááŒá áºáááºá ááá¯ááá¯áááºááŸá¬á ááŒá áºááá¯ááºááŒá± á¡ááá¯ááºážá¡áá¬áá áºáá¯á¡áá áááºáᬠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá²á· á¡ááá¯ááºážáá áºáá áºáá¯áá²ááᯠáááºááœá¬ážáááá·áºáááºá
áá¯ááºáá¯á¶á á¶
á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸá áá±áááºáá¯á¶ážáááºááŸá¯áá»á¬ážááœáẠááŒááºážáá¯á¶ááŸá¯áá»á¬áž á áááºáá±á«áºáá±á«ááºáá¬áá±á¬ááŒá±á¬áá·áº ... áá±áááºáá¯á¶ážáááºáá°áá»á¬ážááẠáááºážááá¯á·áááá¯ááºááá¯ááºá ááá¯ááºááŸáááŒááŒá®áž áá±áááºáá¯á¶ážáááºáá°áá»á¬ážááááºáááºááŸá¯ááẠááá°áá®áá±á¬áá¯á¶á á¶áá»á¬ážááŒáá·áº áááºážááá¯á·ááᯠááœááºááẠ2 áᯠááá¯á·ááá¯áẠ4á camelCase ááá¯á·ááá¯áẠsnake_caseá áá«ááᯠáá»ááºáá»ááºáž á¡áá±á¬ááºá¡áááºááá±á¬áºááá¯ááºáá²á·áá«áá°ážá
- ááááá¯á¶áž á¡ááŒá¶á¥á¬ááºááá±á¬á· linter áá¯á¶ážááá¯á· á¡ááŒá¶áá±ážáá»ááºáá¬áá«á á¡á¬ážáá¯á¶ážá á¡ááºáá»ááºáá®áá¬á áá°ááá¯ááºážá á áááºáá»áááºá áá«áá±ááá·áº ááá°áá®áá²á· áááºážááŒááºáá°ááœá±á OS ááœá±á á¡áááºáááŒá±áá«áá°ážá
- áááºážááẠááŒá¿áá¬ááŸááá±á¬ commit áá áºáá¯á á®á¡ááœáẠáá±á«á·áá»á±á¬á·á á±ááẠáá±ážáá¬ážááŒá®áž linter output ááᯠáá°ážááœá²áá±ážáá¬ážááá·áº bot áá áºáá¯á¡ááŒá ẠááŒá±á¬ááºážáá²áá¬áááºá áá«áá±ááá·áº ááá á¹á áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážááŸá¬ ááá¯á¡áá±ážááŒá®ážáá²á·á¡áá¬ááœá±ááŸááá²á·ááŒá®áž áá¯ááºááᯠáááŒááºáááºáá²áá±áá²á·áá«áááºá
Green Build Master
á¡áá»áááºáá¯ááºááœá¬ážáááºááŸáá·áº á¡áá»áá¯á·áá±á¬á á áºáá±ážááŸá¯áá»á¬áž áá¡á±á¬ááºááŒááºáá«á ááááºáᶠááœáá·áºáááŒá¯ááá¯ááºááŒá±á¬ááºáž áááááŒá¯ááá¯ááºáá«áááºá áá² áá«ááá¯áááºáá±á¬á·! áá»áœááºá¯ááºááá¯á·ááẠáá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááœáẠá¡áá»áááºá¡áá±á¬áºááŒá¬ áá»áá·áºáá¯á¶ážáá²á·ááá·áº Green Build Master ááᯠáá®ááœááºáá²á·áááº-
- ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááẠáá®ážááŒá¬ážáá¬áááœá²áá áºáá¯ááŒáá·áº áá±á¬ááºááœááºáá±áááºá
- á ááºážáááºááŸá¯áá»á¬ážááẠá€á¡ááŒá±á¬ááºážá¡áá¬ááœáẠáá¯ááºáá±á¬ááºáá±áá«áááºá
- á á¬áá±ážááœá²áá»á¬áž áá»ááŸá¯á¶ážáá«áá áá¯ááºááẠáá¬á áá¬áá²ááá¯á· áááºáááºááá¯ááºáá«á
áá®áá¯á¶ážááŒááºáá»ááºááá¯áá»ááᬠá¡áááºážáá¬áá»ááºááááº... ááŒááºážáá¯á¶ááŸá¯ááœá± á¡áá»á¬ážááŒá®ážááŒá áºáá²á·áá±ááá·áº ááá¯ááºáááºáá¬ááŒá±á¬áá·áº... ááŒááºáááºáá¯á¶ážáááºáá»ááºáá»á¬ážááẠáá¯á¶á á¶ááœá²ááŒá¬ážááŸá¯áááŸááá² áá±á«ááºážá ááºážááŒááºážá¡ááœáẠáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠá áááºáááºáá¶áá¬ááŒá®áž á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ ááŒá¿áá¬á§áááá¬áá»á¬áž áá»á±á¬á·áááºážáá¬áááºá
IaC á ááºážáááºááŒááºážá
á ááá¯ááºááºá á áºáá±ážááŒááºážá¡ááŒááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáááºáá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠá¡ááŸááºááááºá¡áá¯á¶ážáá»ááá¯ááºáááºááᯠá á áºáá±ážááẠá¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá ááá¯á·ááá¯áẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááẠááœá±ááŒá±ážáá¯á¶ážááŸá¯á¶ážááŸá¯ááá¯á· áŠážáááºáááºááá¯ááºááŒá±á¬ááºáž á á áºáá±ážáá«á áááºážááẠá¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááá¯ááºááááºážá áá±ážááœááºážááẠááŸá¯ááºááœá±ážááŒá®áž ááœá±ážáá±á«áºááŒá±á¬áºááŒááºááá¯ááºáá±á¬á áááºááááááºá¡ááŒá±á¡áá±áá»á¬ážááᯠáá á áºáá±ážáá² Powershell ááœáẠá¡ááá¯á¡áá»á±á¬ááºá áá±ážáá áºáá¯ááŸááá±áááºáᯠáá¬ááºáááºážáá áºáá¯ááŸáá·áº á¡ááŒá±á ááá¯áá±á¬ááºážáá«áááºá => ááá¯á¡ááºáááºááẠVM áá»á¬áž ááá¯ááá¯áááºáá®ážáá¬ážááẠ=> áá±á¬ááºáááºááẠá á®á ááºáá¬ážáááºááẠááœá±ááá¯ááá¯áá¯á¶ážá áœá²áá«áááºá áá«á ááááºááᯠááŒááºáá°ážá áá¬ááá¯ááºáá±ááá·áº á¡á á±á¬ááá¯ááºážá¡ááá·áºááœá±ááŸá¬ áá®á¡ááŸá¬ážááᯠáááºážááááá¯á· áá±á¬áºáá±á¬áºááŒá áºááá¯ááºáá«áááá·áºáááºá
ááŸá¯ááºááœá±ážáá±á¬ á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážááᯠá¡áááºááŒá±á¬áá·áº ááá¯ááá¯ááŸá¯ááºááœá±ážá á±ááááºážáᯠáá±ážáá±á¬ááºážáá±ážááá¯ááºáá«áááºá áá¯ááºáá²á·ááá¯á·ááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡ááœáẠá ááºážáááºááŸá¯áá»á¬ážááẠááá¯ážááŸááºážááœááºáá°ááŒááºážá¡ááŒá±á¬ááºážááá¯ááºáá±á¬áºáááºáž áááºáá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ áááºááá¯á·á¡áá¯ááºáá¯ááºááá·áºáááºááᯠááááŒááºážá¡ááŒá±á¬ááºážááŒá áºáááºá
IaC á ááºážáááºááŒááºážááááá áº
IaC á ááºážáááºááŒááºáž- Static Analysis
á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ áá áºáá¯áá¯á¶ážááᯠáá áºááŒáá¯ááºáááºáááºáž á¡áá¯á¶ážáá»ááŒá®áž áááºážááẠá¡áá¯ááºáá¯ááºááŒá±á¬ááºáž á á áºáá±ážáá«á á¡áá»áááºáá»á¬ážá áœá¬ áá°áááŒá®áž á¡áá»áááºáá»á¬ážá áœá¬ ááá¯á¡ááºááŒá±á¬ááºáž ááœá±á·ááŸáááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áºá á¡ááŒá±áá¶ááẠáá»ááºááŒááºá áœá¬ áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ á¡áá¬áá áºáᯠááŒá áºááááºá áááºážááẠáá»á¬ážá áœá¬ ááŸááá±áááºá áááºážááẠááŸá±ážáŠážáá±áá¬áá»á¬ážá áœá¬ááᯠááœáŸááºážááŒá¯á¶áá¬ážáááºá
Bash ááẠáááºážáá»ááºáááºá
á¡áá±ážá¡ááœá² á¥ááá¬ááᯠááŒáá·áºáá¡á±á¬ááºá áááºááŸááááºážááœáŸááºááŸá ááá¯ááºá¡á¬ážáá¯á¶ážááᯠááœá±ážááŒá®áž á¡ááŒá¬ážáá±áá¬ááá¯á· áá±á¬áºáá®áá°ážáá«á ááááá¯á¶áž áááááá¬áá¬ááá±á¬á·
for i in * ; do
cp $i /some/path/$i.bak
done
ááá¯ááºá¡áááºááœáẠáá±áá¬ááœááºááŸááá±áá«á áááºááá¯á·áá¯ááºáá±á¬ááºáááºáááºážá áá±á¬ááºážááŒá®á áá»áœááºá¯ááºááá¯á·ááẠáááºááŒááºáááºá ááá¯ážáá¬ážá¡áá¯á¶ážááŒá¯áááºážááᯠáá»áœááºá¯ááºááá¯á· áááááº-
for i in * ; do cp "$i" "/some/path/$i.bak" ; done
áá±á¬ááºážá áœá¬ááŒá®ážáá¯á¶ážáááº? ááá¯ááºáá°áž! áááºážááœáŸááºáá²ááŸá¬ áá¬ááŸáááŸáááẠáá¬ááŒá áºááá²á 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
Static analysis tools áá»á¬áž
ááá¯ážáá¬ážáá»ááºáá»á¬ážááᯠáá±á·ááœá¬ážáá±á¬á¡áá« ááááºá¡ááá·áºá០ááŒá¿áá¬ááᯠáááºážááááá¯ááºáááºá á¡ááŒá±á¬ááºážááŸá¬ á€ááá¬áááœáẠáá¯á
á¬ážá
áá¬áá»á¬ážá
áœá¬ááŸááááºá
áá¬áá¬á
áá¬áž
tool ááá¯
áá¬áž Bash
ááá¹áááŒá¬áž
Python ááŸááºá·
ááŒááºáá±ááááº
IaC á ááºážáááºááŒááºáž- áá°áá áºá ááºážáááºááŸá¯áá»á¬áž
ááááºááá°áá¬á០áá»áœááºá¯ááºááá¯á·ááœá±á·áá²á·ááá·áºá¡ááá¯ááºážá á¡ááŸáá¯ááºáá¯á¶áá»á¬ážááẠá¡áá¯á¶ážá
á¯á¶áá±á¬á
áœááºážá¡á¬ážáááŸáááá·áºá¡ááŒáẠááŒá¿áá¬á§áááá¬á¡á¬ážáá¯á¶ážááᯠááœáŸááºááŒááááá«á ááá¯á·á¡ááŒááºá áá±á¬á·ááºáá²ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠá
ááºážáááºááŒááºážááŸáá·áº ááŸááºááœá²á áá°áá
áºá
ááºážáááºááŸá¯áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· ááŒááºáááºááááºážáááºážááá¯ááºáá«áááºá áá»ááºááŒááºážá
áááºáá²áá±á«áºáá¬áá¬á áá¬áá²á
á¡á áá¯ááºážááá±á¬á· áá»áœááºáá±á¬áºááŒá±á¬áá°ážáááºá á¡á áá¯ááºá¡áá² áá»áœááºá¯ááºááá¯á·áá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááẠá¡á¯ááºá¡áá±ážáá»á¬ážáá«ááŸáááá·áºáááºá áá°ááá¯á·á¡áá»áááºáá±á¬ááºááŒá®á
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá¡á¬áž á¡á¯ááºáá²áááºáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáá¬ážááŒá®áž á¥ááá¬á¡á¬ážááŒáá·áº Ansible á¡áááºážááá¹ááá»á¬ážá
- Docker ááá¯á·ááá¯áẠVM áá²ááŒá áºááŒá Ạáááºáááºážáá»áẠáá áºáá»áá¯ážáá»áá¯ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºá
- áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á Ansible á¡áááºážááá¹áááᯠá€á ááºážáááºááŸá¯áááºáááºážáá»ááºááœáẠá¡áá¯á¶ážááŒá¯áá«áááºá
- áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á· áá»áŸá±á¬áºááá·áºáá¬ážááá·áºá¡ááá¯ááºáž á¡á¬ážáá¯á¶ážá¡áá¯ááºáá¯ááºááŒá±á¬ááºáž á á áºáá±ážáá« (áá»áœááºá¯ááºááá¯á·ááẠá ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáááº)á
- áá«ááá¯á·á ok áá¬áž ááá¯ááºáá°áž ok ááá¯á· áá¯á¶ážááŒááºáááºá
IaC á ááºážáááºááŒááºáž- áá°áá áºá ááºážáááºááŒááºážáááááá¬áá»á¬áž
áá±ážá CFM á¡ááœáẠá á áºáá±ážááŸá¯ááœá±á áá¬ááœá±áá²á áááºááẠááá¯ážááŸááºážá áœá¬ script ááᯠrun ááá¯ááºááẠááá¯á·ááá¯áẠáááºážá¡ááœáẠá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ ááŒá±ááŸááºážáá»ááºáá»á¬ážááᯠáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáááº-
CFM
tool ááá¯
ááŒááºáááá°áž
á¥á®ážáá±á«ááºážááá¯
á¥á®ážáá±á«ááºážááá¯
áá¬ážáááº
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
áá¬ááá¯ááœá±ážáááá²á áá±ážááœááºážááẠááŸá¯ááºááœá±ážááŒá®áž áááŸááºážááááºážááŒá áºáá±áááºá á€áááºááŸá¬ 2018-2019 á¡ááœáẠgithub á¡ááœáẠááá±á¬áá»ááºáá»á¬ážááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž á¥ááá¬áá áºáá¯ááŒá áºáááºá
IaC á ááºážáááºááŒááºážáá±á¬ááºáá»á¬áž
áá±ážááœááºážáá±á«áºáá¬áááº- áááºážááᯠáááºááá¯á·áá±á«ááºážá
ááºážá á
áááºááá¯ááºáááºáááºážá ááá¯ááºááá¬áž
CFM
tool ááá¯
ááŒááºáááá°áž
á¥á®ážáá±á«ááºážááá¯
Terraform
2018-2019 á¡ááœáẠgithub ááŸá ááá±á¬áá»ááºáá»á¬ážááœáẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬áž á¥ááá¬-
áá±á¬áºáá®áá»á°áž vs. á ááºážáááºááá¯
á¡á
ááá±á¬á· áá»áœááºáá±á¬áºááá¯
- á¡ááŒáá¯áẠVM áááºáá®ážáá«á
- Ansible á¡áááºážááá¹ááá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á
- á á áºáá±ážáá±ážáá¯ááºáá±á¬ááºáá«á
áá¬áá°áž 25-35 á¡ááœáẠáááá Ạ40-70 ááŒá¬ááŒáá·áºáááºá
áá±á¬ááºáá áºááá·áºááŸá¬ jenkins/docker/ansible/molecule ááá¯á· áá°ážááŒá±á¬ááºážááŒááºáž ááŒá áºáááºá ááá±á¬ááá¬ážá¡ááá±á¬á· á¡áá¬á¡á¬ážáá¯á¶ážáᬠá¡áá°áá°áá«áá²á
- ááŒáá¬ááºá á¬á¡á¯ááºáá»á¬áž áááºážáá¬ážáááºá
- á¡áááºážááá¹ááá»á¬ážááᯠáááºážá á®áá«á
- ááœááºááááºáá¬ááᯠáá áºááœáŸááºááá¯ááºáá«á
- Ansible á¡áááºážááá¹ááá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á
- testinfra ááá¯ááœáá·áºáá«á
- áá»áá¯á·áá²á·ááŸá¯ááᯠá á áºáá±ážáá«á
áá áºáá«áááºá¡ááœáẠááá¹á áá ááŸáá·áº á ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠá¡áá¬ážáááºáá±ážááŒááºážááẠáá áááá áºááá·áº ááŒá¬áá«áááºá
áááºáá¬ááᯠááœá±ážáá»ááºáááá²á á¡áá¯á¶ážááŒá¯áá¬ážáá²á· á¡á á¯á¡á ááºážá á¡ááœá²á·áá²ááŸá¬ áá»áœááºážáá»ááºááŸá¯ á áá¬ááœá±á¡áá±á«áº áá°áááºáá«áááºá á€ááœáẠáá°ááá¯ááºážááẠUnit testing áá±ážááœááºážááᯠáááºááá¯á·ááááºááááºááᯠáááºážááá¯á·ááá¯ááºááá¯áẠáá¯á¶ážááŒááºááŒáááºá
IaC á ááºážáááºááŒááºáž- áá±á«ááºážá ááºá ááºážáááºááŸá¯áá»á¬áž
á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á ááºážáááºááŒááºážááááá áºááá±á¬ááºáááºá¡ááá·áºááẠáá±á«ááºážá ááºá ááºážáááºááŸá¯áá»á¬ážááŒá áºáááá·áºáááºá áááºážááá¯á·ááẠáá°áá áºá á áºáá±ážááŸá¯áá»á¬ážááŸáá·áº áááºáá°áááº-
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡á¬áž á¡á¯ááºáá²áááºáá»á¬ážá¡ááŒá Ạááá¯ááºážááŒá¬ážáá¬ážááŒá®áž á¥ááá¬á¡á¬ážááŒáá·áº Ansible á¡áááºážááá¹ááá»á¬ážá
- Docker ááá¯á·ááá¯áẠVM áá²ááŒá áºááŒá Ạáááºáááºážáá»áẠáá áºáá»áá¯ážáá»áá¯ážááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºá
- á€á ááºážáááºááŸá¯áááºáááºážáá»ááºá¡ááœáẠáá»áŸá±á¬ááºáá¬ážáá«á á¡áá»á¬ážááŒá®áž áááá¬áááºááŸá¬ážáá±á¬ á¡áááºážááá¹ááá»á¬ážá
- áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á· áá»áŸá±á¬áºááá·áºáá¬ážááá·áºá¡ááá¯ááºáž á¡á¬ážáá¯á¶ážá¡áá¯ááºáá¯ááºááŒá±á¬ááºáž á á áºáá±ážáá« (áá»áœááºá¯ááºááá¯á·ááẠá ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáááº)á
- áá«ááá¯á·á ok áá¬áž ááá¯ááºáá°áž ok ááá¯á· áá¯á¶ážááŒááºáááºá
á¡ááŒááºážáá»ááºážá¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá°áá áºá ááºážáááºááŸá¯áá»á¬ážááœááºáá²á·ááá¯á· á áá áºáá áºáá¯áá»ááºážá á®á á áœááºážáá±á¬ááºáááºááᯠáá á áºáá±ážáá²á áá¬áá¬áá áºáá¯áá¯á¶ážááᯠáááºááá¯á· configure áá¯ááºáá¬ážáááºááᯠá á áºáá±ážáá«áááºá
IaC á ááºážáááºááŒááºáž- á¡áá¯á¶ážá¡áá á ááºážáááºááŸá¯áá»á¬áž
ááááá áºááááºááœáẠEnd to End á ááºážáááºááŸá¯áá»á¬ážááŒáá·áº ááŒáá¯ááá¯áá«áááºá á¡á²áá«ááœá±á áá®ážááŒá¬ážáá¬áá¬áá áºáá¯á áá®ážááŒá¬áž script áá áºáᯠááá¯á·ááá¯áẠáá»áœááºá¯ááºááá¯á·á á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá áá®ážááŒá¬ážá¡á¯ááºáá áºáá»ááºá á áœááºážáá±á¬ááºáááºááᯠáá»áœááºá¯ááºááá¯á· áá á áºáá±ážáá«á áá»áœááºá¯ááºááá¯á·ááẠáá¬áá¬áá»á¬ážá áœá¬ááᯠá¡áá°ááᜠáá»áááºáááºáá¬ážááŒá®ážá áá»áœááºá¯ááºááá¯á·á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááẠáá»áœááºá¯ááºááá¯á· áá»áŸá±á¬áºááá·áºáá¬ážááá·áºá¡ááá¯ááºáž á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž á á áºáá±ážáá«áááºá áá¶ááá±á¬ááºážá áœá¬áá²á á¡áááºááá·áºáá¯ááºáá¬ážáá²á· áá°ážááœá¶ááŒá±ááŸááºážáááºážááœá±ááᯠáá»áœááºáá±á¬áº áá áºáá«á០áááœá±á·áá°ážáá°ážááá¯áá±á¬á· ááŒá áºááá¯ááºáá«áááº... á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááẠáááŒá¬áááá°ážááŒá¬ážááŒá®áž áá¯á¶á á¶ááœááºáá¯á¶á á¶ááŸáá·áº á ááºážáááºáááºá¡ááœáẠáá°áá±á¬ááºáá áºáá¯áááºáá®ážááẠáááºáá²áááºá ááááºá¡áá±áá²á· áá°ááá¯ááºážáᬠáá°ááá¯á·áá²á·ááá¯ááºááá¯ááºááŒá±ááŸááºážáááºážááœá±ááᯠáááºáá®ážááŒáá«áááºá áá±á¬ááºážááá¯ááŸá¯ááœá±ááŸááá±ááá·áº á¡ááŒá±áááŸááá«áá°ážá ááá¯á·ááŒá±á¬áá·áºá á¡áá¬áá¬ááá¯ááºážááẠáá»áœááºá¯ááºááá¯á·ááŸá±á·ááœáẠááá¯ážááŸá±ážááŸá±ážáá¯ááºážá áá®ááœááºáá²á·áá±á¬á¡áá»ááºááŒá±á¬áá·áº á¡ááŒá¬ážáá°áá»á¬ážááᯠá¡áá¶ááœááºá á±ááẠááá¯á·ááá¯áẠááŸá¬áá±á«ááºážááá¯ááœááºáááºááẠááœááºážá¡á¬ážáá±ážáááºá¡ááœáẠá¡áááºá¡áᬠááŸááááºááᯠáá»áœááºá¯ááºááŒá±á¬ááŒáá«áááºá
áááá¯ááºážááŒá±á¬ááºážááŒáœááºááá²á· ááá±á¬áá»ááºáá áºáá¯áá«á áááºážááᯠá¡ááœá²á·á¡á ááºážááŒá®ážáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááŒááŒá®áž áááºáá áºáŠážá á®ááẠáááºážááŸáá·áº ááœááºááá¯ááºáá±á¬áááºážááŒá±á¬ááºážáá»á¬ážááᯠááŒááºáá»á±á¬áºááœá¬ážááœááºááŸááááºá á¡ááá®áá±ážááŸááºážááẠáá»á¬ážá áœá¬áá±á¬ áá±áá¬áá±á·á áºáá»á¬ážá áá±á«ááºážá ááºááŸá¯áá»á¬ážá á áááºááá¯á·ááᯠáá¶á·ááá¯ážáá±ážáááºá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá¯á¶ááá¹áá¬ááºááᯠááááŸáááŒááºážááẠdocker-compose ááá¯ááºáá»á¬ážá áœá¬ááŸáááŒá®áž áááºááá·áºá ááºážáááºááŸá¯áá»á¬ážááẠJenkins ááẠáááºááá·áºáááºáááºážáá»ááºááœáẠáá¯ááºáá±á¬ááºááááºááᯠááááŸáááŒááºážááŒá áºáá«áááºá
á€á¡á
á®á¡á
á¥áºááẠáá°áá±á¬ááºáá±á¬ááºá¡ááœááºážá¡áá á¡áá»áááºá¡áá±á¬áºááŒá¬á¡á±á¬áẠáá¯ááºáá±á¬ááºáá²á·áááºá
áá¯áá±áá á¡áá¯ááºáá®áá¬ááẠááá¯ááá¯áá»ááºááŒáá·áºáá¬áᬠá¡ááœáá·áºá¡ááŒá±á¬ááºážá¡ááœáŸá±á·ááœáẠáááºážááá¯á·ááẠAPB (Ansible Playbook Bundle) áá²á·ááá¯á·áá±á¬ á¡áá¬áá áºáá¯ááᯠááŸá¬ááœá±ááœá±á·ááŸááá²á·ááŒá®áž ááœááºááááºáá¬áá áºáá¯áá²ááá¯á· á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá»á¬áž áááºááá¯á·á¡áá¯á¶ážáá»ááá¯á¶ááá¯ááºáᬠá¡ááááá¬ááᯠáá¯ááºááá¯ážááá¯ááºá á±áá«áááºá á¡á²áá«ááœá±á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáááºááá¯á·á¡áá¯á¶ážáá»ááááºááᯠáááºáá«ááá²áá² á ááºážáááºááá¯ááºáá±á¬ á¡ááááá¬áá áºáá¯ááŸááááºá
á€á¡áá¬á¡á¬ážáá¯á¶ážááẠááœá²ááŒá¬ážáá±á¬á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯ááá¯á· áá»áœááºá¯ááºááá¯á·áá±á¬ááºááŸáááœá¬ážáááºá¡áá áá±á¬ááºážááœááºáááº- áá»áœááºá¯ááºááá¯á·ááẠá ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠWindows ááá¯á¡ááºáá«áááºá ááááºá¡áá±ááŒáá·áºá á¡áááºá¡áá¬ááá¯á áááºáá±áá¬á áááºááá¯á·á¡áá¯á¶ážáá»ááááºá ááŸáá·áºá ááºážáááºááŸá¯ááá¯ááºáá¬á¡ááááá¬ááẠjenkins ááœááºááŸááááºá
áá±á¬ááºáá»ááº
Infrastructure ááá±á¬á· Code á¡ááá¯ááºážáá«áá²á
- repository ááœááºáá¯ááºá
- áá°áá¬ážá¡áá»ááºážáá»ááºáž á¡ááŒááºá¡ááŸááºáááºáá¶ááŒááºážá
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá ááºážáááºááŒááºážá
ááá·áºáá»á¬áž
á¡ááºá¹áááááºáá¬ážááŸááºáž ááá¯ááºááá¯ááºááá±á¬á·ááºá០ááá¯á·á áºááᯠááŒááºáá«á - á¡ááŒá±á¬ááºááŒá±áž 2019-04-24
SpbLUG DevopsConf 2019-05-28 á០áá®áá®ááá¯(RU) DINS DevOps ááá±áááºáž 2019-06-20 á០áá®áá®ááá¯(RU) Infrastructure Code ááá¯ááºážáá±á«ááºáž 300,000 áá»á±á¬áºááᯠáá±ážáá¬ážááŒááºážá០áááºáááºážá á¬áá»á¬áž &á á¬áá¬ážáá¬ážááŸááºáž á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá¡á¬áž áá¯ááºá¡ááŒá Ạáááºááá¯áẠáá±ážááá¯á·ááŸá¯ááá¯ááºááá¯ááºážááá¯á· áá±á«ááºážá ááºááŒááºážá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠáá¯ááºá¡ááŒá Ạá ááºážáááºááŒááºážá Ansible á¡áááºážááá¹ááá»á¬ážá áááá±á¬ááºáá±á¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº ááááºážááááºážááŸá¯ Ansible ááẠbash ááá¯ááºáá«á
source: www.habr.com