ProHoster > Blog > Tsamaiso > Litaelo: mokhoa oa ho lekola likarolo tse loketseng le ho tseba ka mathata pele ho tlhahiso
Litaelo: mokhoa oa ho lekola likarolo tse loketseng le ho tseba ka mathata pele ho tlhahiso
Hello mong le e mong!
Ke sebetsa ke le moenjiniere oa DevOps mosebetsing oa ho behela batho hoteleng. Ostrovok.ru. Sehloohong sena, ke batla ho bua ka phihlelo ea rona ea ho hlahloba likarolo tse utloahalang.
Ho Ostrovok.ru, re sebelisa ansible e le mookameli oa tlhophiso. Haufinyane tjena, re ile ra fihla tlhokahalong ea ho hlahloba likarolo, empa ha e le hantle, ha ho na lisebelisoa tse ngata bakeng sa sena - tse ratoang ka ho fetisisa, mohlomong, ke moralo oa Molek'hule, kahoo re ile ra etsa qeto ea ho e sebelisa. Empa ho ile ha fumaneha hore litokomane tsa hae li khutsitse ka maraba a mangata. Ha rea ka ra fumana buka e nang le lintlha tse lekaneng ka Serussia, kahoo re ile ra etsa qeto ea ho ngola sehlooho sena.
Molek'hule
Molek'hule - moralo oa ho thusa ho leka likarolo tse loketseng.
Tlhaloso e nolofalitsoeng: Molek'hule e etsa mohlala sethaleng seo u se hlalosang (leru, mochine oa sebele, setshelo; bakeng sa lintlha tse ling, bona karolo. mokhanni), e tsamaisa karolo ea hau ho eona, ebe e etsa liteko ebe e hlakola mohlala. Haeba u hloleha ho e 'ngoe ea mehato, Molek'hule e tla u tsebisa ka eona.
Joale ho feta.
Taba e seng kae
Nahana ka likarolo tse peli tsa bohlokoa tsa Molek'hule: Scenario le Driver.
Boemo
Sengoliloeng se na le tlhaloso ea hore na ho tla etsoa eng, hokae, joang le ka tatellano efe. Karolo e le 'ngoe e ka ba le mangolo a' maloa, 'me e' ngoe le e 'ngoe ke bukana e tseleng <role>/molecule/<scenario>, e nang le litlhaloso tsa liketso tse hlokahalang bakeng sa tlhahlobo. Script e tlameha ho kenyelletsoa default, e tla etsoa ka bo eona haeba u qala karolo ka Molek'hule. Mabitso a mangolo a latelang a ho uena.
Tatelano ya diketso tsa teko ho script e bitsoa matrix, mme ka ho sa feleng ke:
(Mehato e ngotsoe ?, e tlotsoe ka ho sa feleng haeba e sa hlalosoa ke mosebelisi)
lint - matha linters. Ka tloaelo li sebelisoa yamllint и flake8,
destroy - ho hlakola maemo a ho qala ha Molek'hule (haeba e teng),
dependency? - ho kenya ts'epo e nepahetseng ea karolo e lekiloeng,
syntax - ho lekola syntax ea karolo e sebelisoang ansible-playbook --syntax-check,
create - etsa mohlala,
prepare? - tokisetso ea mohlala; mohlala, hlahloba/kenya python2
converge - ho qalisoa ha buka ea ho bapala e ntseng e lekoa,
idempotence - ho qala buka ea ho bapala hape bakeng sa tlhahlobo ea boits'oaro,
side_effect? - liketso tse sa amaneng ka kotloloho le karolo, empa li hlokahala bakeng sa liteko,
verify - etsa liteko tsa sephetho se entsoeng ka ho sebelisa testinfra(ea kamehla) /goss/inspec,
cleanup? - (ka liphetolelo tse ncha) - ha re bua ka mokhoa o batlang, "ho hloekisa" lisebelisoa tsa ka ntle tse anngoeng ke Molek'hule,
destroy - Ho hlakola mohlala.
Tatelano ena e akaretsa maemo a mangata, empa e ka fetoloa haeba ho hlokahala.
E 'ngoe le e' ngoe ea mehato e ka holimo e ka tsamaisoa ka thoko le molecule <command>. Empa ho lokela ho utloisisoa hore bakeng sa taelo e 'ngoe le e' ngoe e joalo ho ka ba le tatellano ea eona ea liketso, eo u ka e fumanang ka ho e etsa. molecule matrix <command>. Ka mohlala, ha o tsamaisa taelo converge (ho tsamaisa buka ea ho bapala tlas'a teko), liketso tse latelang li tla etsoa:
$ molecule matrix converge
...
└── default # название сценария
├── dependency # установка зависимостей
├── create # создание инстанса
├── prepare # преднастройка инстанса
└── converge # прогон плейбука
Tatelano ea liketso tsena e ka hlophisoa. Haeba ho hong ho tsoa lenaneng ho se ho entsoe, e tla tloloa. Boemo ba hajoale, hammoho le tlhophiso ea maemo, Molecule e boloka lethathamong $TMPDIR/molecule/<role>/<scenario>.
Kenya mehato le ? o ka hlalosa liketso tse lakatsehang ka mokhoa oa ansible-playbook, 'me u etse lebitso la faele ho latela mohato: prepare.yml/side_effect.yml. Lebella lifaele tsena Molek'hule e tla ba ka har'a foldara ea mongolo.
mokhanni
Mokhanni ke setsi seo ho sona ho etsoang liteko.
Lethathamo la bakhanni ba tloaelehileng bao Molecule e nang le litempele tse lokiselitsoeng ke ka tsela e latelang: Azure, Docker, EC2, GCE, LXC, LXD, OpenStack, Vagrant, Delegated.
Maemong a mangata, li-templates ke lifaele create.yml и destroy.yml foldareng ea script e hlalosang popo le ho hlakoloa ha mohlala, ka ho latellana.
Mekhelo ke Docker le Vagrant, kaha litšebelisano le li-module tsa tsona li ka etsahala ntle le lifaele tse boletsoeng ka holimo.
Ho bohlokoa ho totobatsa mokhanni ea filoeng, kaha haeba e sebelisoa lifaeleng bakeng sa ho theha le ho hlakola mohlala, ho hlalosoa mosebetsi feela ka tlhophiso ea maemo, tse ling kaofela li lokela ho hlalosoa ke moenjiniere.
Mokhanni oa kamehla ke Docker.
Joale ha re tsoeleng pele ho itloaetsa le ho nahana ka likarolo tse ling moo.
Ho qala
Joaloka "lefats'e la hello", a re lekeng karolo e bonolo ea ho kenya nginx. Ha re khetheng docker joalo ka mokhanni - ke nahana hore boholo ba lona le e kentse (mme hopola hore docker ke mokhanni ea kamehla).
Ha re lokiseng virtualenv le kenya ho eona molecule:
Mohato o latelang ke ho qala karolo e ncha.
Ho qala karolo e ncha, hammoho le mongolo o mocha, ho etsoa ho sebelisoa taelo molecule init <params>:
> molecule init role -r nginx
--> Initializing new role nginx...
Initialized role in <path>/nginx successfully.
> cd nginx
> tree -L 1
.
├── README.md
├── defaults
├── handlers
├── meta
├── molecule
├── tasks
└── vars
6 directories, 1 file
E ile ea e-ba karolo e tloaelehileng e utloahalang. Ho feta moo, litšebelisano tsohle le limolek'hule tsa CLI li entsoe ho tsoa motsong oa karolo.
Ha re bone hore na ke eng e leng lethathamong la likarolo:
> tree molecule/default/
molecule/default/
├── Dockerfile.j2 # Jinja-шаблон для Dockerfile
├── INSTALL.rst. # Немного информации об установке зависимостей сценария
├── molecule.yml # Файл конфигурации
├── playbook.yml # Плейбук запуска роли
└── tests # Директория с тестами стадии verify
└── test_default.py
1 directory, 6 files
Ha re hlahlobeng config molecule/default/molecule.yml (kenya feela setšoantšo sa docker):
Shell ke khetla ea taelo e sebelisoang haeba sehlopha sa linaleli le gilt li sa koahele litlhoko tsa hau.
Ha ke na ho lula mona nako e telele, ho lekane ho hlalosoa ho litokomane.
mokhanni
Lebitso la mokganni. Ea rona ke docker.
lente
Letlapa le monate.
Likhetho tse sebetsang karolong ena ea tlhophiso ke bokhoni ba ho hlakisa faele ea tlhophiso bakeng sa yamllint, mefuta e fapaneng ea tikoloho, kapa ho tima linter:
E hlalosa tlhophiso ea maemo.
Tabeng ea docker e le mokhanni, Molek'hule e phetoa holim'a karolo ena, 'me karolo e' ngoe le e 'ngoe ea lenane e fumaneha ho Dockerfile.j2 joalo ka phetoho item.
Tabeng ea mokhanni e hlokang create.yml и destroy.yml, karolo e fumaneha ho tsona e le molecule_yml.platforms, 'me ho pheta-pheta holim'a eona ho se ho hlalositsoe lifaeleng tsena.
Kaha Molek'hule e fana ka taolo ea maemo ho li-module tse sebetsang, lethathamo la litlhophiso tse ka khonehang le tsona li lokela ho batloa moo. Bakeng sa docker, mohlala, module e sebelisoa docker_container_module. Ke li-module life tse sebelisoang ho bakhanni ba bang li ka fumanoa ho litokomane.
Hape le mehlala ea tšebeliso ea bakhanni ba sa tšoaneng e ka fumanoa litekong tsa Molek'hule ka boeona.
Nka sebaka mona likholo:7 mabapi le Botho.
motlatsi
"Supplier" - mokhatlo o laolang maemo. Tabeng ea Molek'hule, sena sea utloahala, ts'ehetso bakeng sa ba bang ha e reroe, kahoo karolo ena e ka bitsoa tlhophiso e anible e atolositsoeng ka caveat.
Mona o ka hlakisa lintho tse ngata, ke tla totobatsa lintlha tsa bohlokoa, ka maikutlo a ka:
libuka tsa ho bapala: o ka hlakisa hore na ke libuka life tsa ho bapala tse lokelang ho sebelisoa methating e itseng.
Lebitso le tlhaloso ea tatelano ea mongolo.
U ka fetola matrix ea kamehla ea taelo efe kapa efe ka ho eketsa senotlolo <command>_sequence le e le boleng ba eona ka ho hlalosa lethathamo la mehato eo re e hlokang.
Ha re re re batla ho fetola tatellano ea liketso ha re tsamaisa taelo ea playbook: molecule converge
Karolo ea rona e bonolo e ile ea lekoa ntle le mathata.
Ke habohlokoa ho hopola hore haeba ho na le mathata nakong ea mosebetsi molecule test, joale haeba u sa fetole tatellano ea kamehla, Molecule e tla hlakola mohlala.
Litaelo tse latelang li na le thuso bakeng sa ho lokisa liphoso:
> molecule --debug <command> # debug info. При обычном запуске Молекула скрывает логи.
> molecule converge # Оставляет инстанс после прогона тестируемой роли.
> molecule login # Зайти в созданный инстанс.
> molecule --help # Полный список команд.
Karolo e teng
Ho kenyelletsa mongolo o mocha karolong e teng ke ho tsoa bukeng ea karolo ka litaelo tse latelang:
# полный список доступных параметров
> molecule init scenarion --help
# создание нового сценария
> molecule init scenario -r <role_name> -s <scenario_name>
Haeba sena e le boemo ba pele ba karolo, ebe paramethara -s e ka tloheloa kaha e tla theha script default.
fihlela qeto e
Joalo ka ha u bona, Molek'hule ha e rarahane haholo, 'me ka ho sebelisa litempele tsa hau, ho fana ka mongolo o mocha ho ka fokotsoa ho fetola mefuta e fapaneng molemong oa ho theha le ho hlakola libuka tsa ho bapala. Molek'hule e hokahana hantle le lits'ebetso tsa CI, tse u lumellang ho eketsa lebelo la nts'etsopele ka ho fokotsa nako ea tlhahlobo ea matsoho ea libuka tsa ho bapala.
Kea leboha ha u mametse. Haeba u na le phihlelo ea ho hlahloba likarolo tse utloahalang, 'me ha e amane le Molek'hule, re bolelle ka eona litlhalosong!