ProHoster > Blog > Rianachd > Stiùireadh: mar a nì thu deuchainn air dreuchdan iomchaidh agus faighinn a-mach mu dhuilgheadasan mus tèid a thoirt gu buil
Stiùireadh: mar a nì thu deuchainn air dreuchdan iomchaidh agus faighinn a-mach mu dhuilgheadasan mus tèid a thoirt gu buil
Hello a h-uile duine!
Tha mi ag obair mar innleadair DevOps ann an seirbheis glèidhidh taigh-òsta. Ostrovok.ru. San artaigil seo, tha mi airson bruidhinn mun eòlas againn ann a bhith a’ dèanamh deuchainn air dreuchdan iomchaidh.
Aig Ostrovok.ru, bidh sinn a’ cleachdadh ansible mar mhanaidsear rèiteachaidh. O chionn ghoirid, thàinig sinn chun an fheum air dreuchdan deuchainn, ach mar a thionndaidh e a-mach, chan eil uimhir de dh ’innealan ann airson seo - am fear as mòr-chòrdte, is dòcha, is e am frèam Molecule, agus mar sin chuir sinn romhainn a chleachdadh. Ach thionndaidh e a-mach gu bheil na sgrìobhainnean aige sàmhach mu iomadh duilgheadas. Cha b 'urrainn dhuinn leabhar-làimhe mionaideach gu leòr a lorg ann an Ruiseanach, agus mar sin chuir sinn romhainn an artaigil seo a sgrìobhadh.
Moileciuil
Molecule - frèam gus cuideachadh le bhith a’ dèanamh deuchainn air dreuchdan ciallach.
Tuairisgeul nas sìmplidhe: Bidh am moileciuil a’ cruthachadh eisimpleir air an àrd-ùrlar a shònraich thu (sgòth, inneal mas-fhìor, soitheach; airson tuilleadh fiosrachaidh, faic an earrann Driver), ruith do dhreuchd air, an uairsin ruith deuchainnean agus cuir às don eisimpleir. Ma dh'fhàilligeas air aon de na ceumannan, bheir am Molecul fios dhut mu dheidhinn.
A-nis barrachd.
Pàirt de theòiridh
Beachdaich air dà phrìomh bhuidheann den Molecule: Scenario agus Driver.
A ’chùis
Tha tuairisgeul anns an sgriobt air dè, càite, ciamar agus dè an t-sreath a thèid a choileanadh. Faodaidh grunn sgriobtaichean a bhith aig aon dreuchd, agus tha gach fear na eòlaire air an t-slighe <role>/molecule/<scenario>, anns a bheil tuairisgeul air na gnìomhan a dh’ fheumar airson an deuchainn. Feumaidh an sgriobt a bhith air a ghabhail a-steach default, a thèid a chruthachadh gu fèin-ghluasadach ma thòisicheas tu an dreuchd le Molecule. Tha ainmean nan sgriobtaichean a leanas an urra riut fhèin.
Canar sreath de ghnìomhan deuchainn ann an sgriobt Matrix, agus gu bunaiteach is e:
(Ceumannan air an ainmeachadh ?, air a leum gu bunaiteach mura h-eil an neach-cleachdaidh air a shònrachadh)
lint - a 'ruith lòchrain. Gu gnàthach gan cleachdadh yamllint и flake8,
destroy - cuir às do shuidheachaidhean bhon fhoillseachadh mu dheireadh den Molecule (ma tha sin ann),
dependency? - stàladh eisimeileachd iomchaidh an dreuchd a chaidh a dhearbhadh,
syntax - a 'sgrùdadh co-chòrdadh na dreuchd a' cleachdadh ansible-playbook --syntax-check,
create - a 'cruthachadh eisimpleir,
prepare? - ag ullachadh an eisimpleir; me sgrùdadh/stàlaich python2
converge - cur air bhog an leabhar-cluiche ga dheuchainn,
idempotence - ag ath-thòiseachadh an leabhar-cluiche airson an deuchainn iempotency,
side_effect? - gnìomhan nach eil ceangailte gu dìreach ris an dreuchd, ach a tha riatanach airson deuchainnean,
verify - deuchainnean ruith den rèiteachadh a thàinig às a sin a’ cleachdadh testinfra(àbhaisteach) /goss/inspec,
cleanup? - (ann an dreachan ùra) - gu ìre mhòr, “glanadh” a’ bhun-structair a-muigh air an tug am Molecule buaidh,
destroy - Sguab às eisimpleir.
Tha an sreath seo a’ còmhdach a’ mhòr-chuid de chùisean, ach faodar atharrachadh ma tha sin riatanach.
Faodar gach aon de na ceumannan gu h-àrd a ruith air leth le molecule <command>. Ach bu chòir a thuigsinn gum faodadh sreath ghnìomhan fhèin a bhith ann airson gach àithne mar sin, a gheibh thu a-mach le bhith a’ cur an gnìomh molecule matrix <command>. Mar eisimpleir, nuair a ruith an àithne converge (a’ ruith an leabhar-cluiche fo dheuchainn), thèid na gnìomhan a leanas a choileanadh:
$ molecule matrix converge
...
└── default # название сценария
├── dependency # установка зависимостей
├── create # создание инстанса
├── prepare # преднастройка инстанса
└── converge # прогон плейбука
Faodar sreath nan gnìomhan sin a dheasachadh. Ma tha rudeigin bhon liosta air a dhèanamh mu thràth, thèid a leigeil seachad. An staid làithreach, a bharrachd air rèiteachadh nan suidheachaidhean, bidh am Molecule a’ stòradh san eòlaire $TMPDIR/molecule/<role>/<scenario>.
Cuir ceumannan le ? faodaidh tu cunntas a thoirt air na gnìomhan a tha thu ag iarraidh ann an cruth leabhar-cluiche iomchaidh, agus ainm an fhaidhle a dhèanamh a rèir a’ cheum: prepare.yml/side_effect.yml. An dùil na faidhlichean seo Bidh am moileciuil sa phasgan sgriobt.
Driver
Is e eintiteas a th’ ann an draibhear far a bheilear a’ cruthachadh eisimpleirean deuchainn.
Tha an liosta de dhraibhearan àbhaisteach aig a bheil teamplaidean deiseil aig Molecule mar a leanas: Azure, Docker, EC2, GCE, LXC, LXD, OpenStack, Vagrant, Tiomnaichte.
Anns a 'mhòr-chuid de chùisean, tha teamplaidean nam faidhlichean create.yml и destroy.yml sa phasgan sgriobt a bheir cunntas air cruthachadh agus cuir às do eisimpleir, fa leth.
Is e na h-eisgeadan Docker and Vagrant, oir faodaidh eadar-obrachadh leis na modalan aca tachairt às aonais na faidhlichean a chaidh ainmeachadh.
Is fhiach cuideam a chuir air an draibhear tiomnaichte, oir ma thèid a chleachdadh anns na faidhlichean airson eisimpleir a chruthachadh agus a dhubhadh às, chan eil ach obrachadh le rèiteachadh nan suidheachaidhean air a mhìneachadh, bu chòir don innleadair an còrr a mhìneachadh.
Is e Docker an draibhear bunaiteach.
A-nis gluaisidh sinn air adhart gu bhith a 'cleachdadh agus a' beachdachadh air feartan eile an sin.
Getting Started
Mar “saoghal hello”, leig dhuinn deuchainn a dhèanamh air àite stàlaidh nginx sìmplidh. Taghaidh sinn docker mar an draibhear - tha mi a ’smaoineachadh gu bheil a’ mhòr-chuid agaibh air a chuir a-steach (agus cuimhnich gur e docker an draibhear bunaiteach).
Dèanamaid ullachadh virtualenv agus stàlaich e ann molecule:
Is e an ath cheum an dreuchd ùr a thòiseachadh.
Bithear a’ tòiseachadh dreuchd ùr, a bharrachd air sgriobt ùr, a’ cleachdadh an àithne 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
Thionndaidh e a-mach dreuchd àbhaisteach neo-chomasach. A bharrachd air an sin, tha a h-uile eadar-obrachadh le CLI Molecules air a dhèanamh bho bhunait na dreuchd.
Chì sinn dè a tha anns an eòlaire dreuchd:
> tree molecule/default/
molecule/default/
├── Dockerfile.j2 # Jinja-шаблон для Dockerfile
├── INSTALL.rst. # Немного информации об установке зависимостей сценария
├── molecule.yml # Файл конфигурации
├── playbook.yml # Плейбук запуска роли
└── tests # Директория с тестами стадии verify
└── test_default.py
1 directory, 6 files
Nì sinn mion-sgrùdadh air an config molecule/default/molecule.yml (cuir an àite dìreach dealbh docker):
Tha an earrann seo a’ toirt cunntas air tùs nan eisimeileachd.
Roghainnean a dh'fhaodadh a bhith ann: galaxy, buntainn, slige.
Is e dìreach slige àithne a th’ ann an Shell a thathas a’ cleachdadh air eagal ‘s nach bi galaxy agus gilt a’ còmhdach na feumalachdan agad.
Cha bhith mi a’ fuireach an seo airson ùine mhòr, tha e gu leòr air a mhìneachadh ann an sgrìobhainnean.
dràibhear
Ainm an driver. 'S e docker a th' annainn.
lìon
Tha yamllint air an lionn.
Is e roghainnean feumail anns a’ phàirt seo den config an comas faidhle rèiteachaidh a shònrachadh airson yamllint, caochladairean àrainneachd air adhart, no an loidhne-lìn a dhì-cheadachadh:
A 'toirt cunntas air suidheachadh nan suidheachaidhean.
A thaobh docker mar dhràibhear, tha am Moilecule air aithris thairis air an roinn seo, agus tha gach eileamaid den liosta ri fhaighinn ann an Dockerfile.j2 mar chaochladair item.
Ann an cùis dràibhear a tha a dhìth create.yml и destroy.yml, tha an earrann ri fhaotainn annta mar molecule_yml.platforms, agus tha aithrisean thairis air air a mhìneachadh anns na faidhlichean seo mu thràth.
Leis gu bheil am Moilecule a’ toirt smachd air cùisean do mhodalan iomchaidh, bu chòir coimhead air an liosta de shuidheachaidhean a dh’ fhaodadh a bhith ann an sin cuideachd. Airson docker, mar eisimpleir, tha am modal air a chleachdadh docker_container_module. Gheibhear na modalan a thathas a’ cleachdadh ann an draibhearan eile ann sgrìobhainnean.
A bharrachd air eisimpleirean de chleachdadh diofar dhraibhearan a gheibhear ann an deuchainnean a' Mhoileciuil fein.
Cuir na àite an seo ceud: 7 air Ubuntu.
neach-solair
"Solaraiche" - buidheann a bhios a 'stiùireadh shuidheachaidhean. A thaobh Molecule, tha seo cunntachail, chan eil taic do dhaoine eile air a phlanadh, agus mar sin faodar an roinn seo ainmeachadh mar rèiteachadh leudaichte neo-chomasach le caveat.
An seo faodaidh tu tòrr rudan a shònrachadh, comharraichidh mi na prìomh phuingean, nam bheachd-sa:
leabhraichean-cluiche: faodaidh tu sònrachadh dè na leabhraichean cluiche a bu chòir a chleachdadh aig ìrean sònraichte.
Ainm agus tuairisgeul sreath sgriobtaichean.
Faodaidh tu matrix gnìomh bunaiteach àithne sam bith atharrachadh le bhith a’ cur an iuchair ris <command>_sequence agus mar luach air a shon le bhith a’ mìneachadh liosta nan ceumannan a dh’ fheumas sinn.
Canaidh sinn gu bheil sinn airson sreath nan gnìomhan atharrachadh nuair a bhios sinn a’ ruith an àithne ruith leabhar-cluiche: molecule converge
Stèidhich frèam airson deuchainnean agus loidhne ris. Tha an loidhne àbhaisteach testinfra и flake8. Tha na roghainnean a dh'fhaodadh a bhith mar an ceudna mar a tha gu h-àrd:
Chaidh ar dleastanas sìmplidh a dhearbhadh gun duilgheadasan.
Is fhiach cuimhneachadh ma tha duilgheadasan ann rè an obair molecule test, an uairsin mura do dh'atharraich thu an t-sreath bunaiteach, sguabaidh am Molecul às an eisimpleir.
Tha na h-òrdughan a leanas feumail airson debugging:
> molecule --debug <command> # debug info. При обычном запуске Молекула скрывает логи.
> molecule converge # Оставляет инстанс после прогона тестируемой роли.
> molecule login # Зайти в созданный инстанс.
> molecule --help # Полный список команд.
Dreuchd a tha ann mar-thà
Tha e a’ cur sgriobt ùr ri dreuchd a tha ann mu thràth bhon eòlaire dreuchd leis na h-òrdughan a leanas:
# полный список доступных параметров
> molecule init scenarion --help
# создание нового сценария
> molecule init scenario -r <role_name> -s <scenario_name>
Mas e seo a’ chiad suidheachadh san dreuchd, an uairsin am paramadair -s faodar a fàgail air falbh oir cruthaichidh e sgriobt default.
co-dhùnadh
Mar a chì thu, chan eil am Molecule gu math toinnte, agus le bhith a’ cleachdadh na teamplaidean agad fhèin, faodar cleachdadh sgriobt ùr a lughdachadh gu bhith a’ deasachadh caochladairean ann an cruthachadh agus cuir às do leabhraichean cluiche. Bidh am moileciuil a’ fighe a-steach gu sgiobalta le siostaman CI, a leigeas leat astar an leasachaidh àrdachadh le bhith a’ lughdachadh na h-ùine airson deuchainn làimhe air leabhraichean-cluiche.
Tapadh leibh airson an aire agad. Ma tha eòlas agad ann a bhith a’ dèanamh deuchainn air dreuchdan iomchaidh, agus nach eil e co-cheangailte ris a’ Mhoilecule, innis dhuinn mu dheidhinn anns na beachdan!