ProHoster > Блог > Gudanarwa > Umarnin: yadda za a gwada m matsayin da kuma gano game da matsaloli kafin samarwa
Umarnin: yadda za a gwada m matsayin da kuma gano game da matsaloli kafin samarwa
Hello kowa da kowa!
Ina aiki a matsayin injiniyan DevOps a sabis na yin ajiyar otal. Ostrovok.ru. A cikin wannan labarin, ina so in yi magana game da kwarewarmu wajen gwada ayyuka masu yiwuwa.
A Ostrovok.ru, muna amfani da mai yiwuwa azaman mai sarrafa sanyi. Kwanan nan, mun zo da bukatar gwada ayyuka, amma kamar yadda ya juya, babu kayan aiki da yawa don wannan - mafi mashahuri, watakila, shine tsarin Molecule, don haka mun yanke shawarar yin amfani da shi. Amma ya zamana cewa takardunsa sun yi shiru game da ramummuka da yawa. Ba za mu iya samun isassun cikakken littafin jagora cikin Rashanci ba, don haka mun yanke shawarar rubuta wannan labarin.
Bayanin Sauƙaƙe: Kwayoyin halitta suna ƙirƙirar misali akan dandamalin da kuka ƙayyade (girgije, injin kama-da-wane, akwati; don ƙarin cikakkun bayanai, duba sashin Direba), gudanar da aikin ku a kai, sannan gudanar da gwaje-gwaje kuma ya goge misalin. Idan rashin nasara akan ɗayan matakan, Molecule zai sanar da ku game da shi.
Yanzu ƙari.
A bit of ka'idar
Yi la'akari da maɓalli biyu masu mahimmanci na Kwayoyin: Scenario da Driver.
Tarihin
Rubutun ya ƙunshi bayanin menene, a ina, ta yaya kuma a wane jeri za a yi. Ɗayan rawar zai iya samun rubutun da yawa, kuma kowane kundin adireshi ne a kan hanya <role>/molecule/<scenario>, wanda ya ƙunshi bayanin ayyukan da ake buƙata don gwajin. Dole ne a haɗa rubutun default, wanda za a ƙirƙira ta atomatik idan kun fara aikin da Molecule. Sunayen rubutun masu zuwa ya rage naku.
Ana kiran jerin ayyukan gwaji a cikin rubutun matrix, kuma ta hanyar tsoho shine:
(Mataki masu alama ?, an tsallake ta ta tsohuwa idan mai amfani bai bayyana shi ba)
lint - Gudun linters. Ana amfani da ta tsohuwa yamllint и flake8,
destroy - share lokuta daga ƙaddamar da Molecule na ƙarshe (idan akwai),
dependency? - shigarwa na abin dogara mai yiwuwa na aikin da aka gwada,
syntax - duba juzu'i na rawar ta amfani da ansible-playbook --syntax-check,
converge - ƙaddamar da littafin wasan kwaikwayo da ake gwadawa,
idempotence - sake kunna littafin wasan don gwajin idempotency,
side_effect? - ayyukan da ba su da alaƙa kai tsaye da rawar, amma wajibi ne don gwaje-gwaje;
verify - Gudun gwaje-gwaje na sakamakon sanyi ta amfani da testinfra(default) /goss/inspec,
cleanup? - (a cikin sabbin nau'ikan) - kusan magana, "tsaftacewa" abubuwan more rayuwa na waje da kwayoyin halitta suka shafa,
destroy - Share misali.
Wannan jeri yana ɗaukar mafi yawan lokuta, amma ana iya canzawa idan ya cancanta.
Ana iya gudanar da kowane matakan da ke sama daban tare da molecule <command>. Amma ya kamata a fahimci cewa kowane irin wannan umarni na iya samun jerin ayyukansa, wanda zaku iya ganowa ta hanyar aiwatarwa. molecule matrix <command>. Misali, lokacin gudanar da umarni converge (Gudanar da littafin wasan a ƙarƙashin gwaji), za a aiwatar da ayyuka masu zuwa:
$ molecule matrix converge
...
└── default # название сценария
├── dependency # установка зависимостей
├── create # создание инстанса
├── prepare # преднастройка инстанса
└── converge # прогон плейбука
Za a iya gyara jerin waɗannan ayyukan. Idan an riga an yi wani abu daga lissafin, za a tsallake shi. Halin halin yanzu, da kuma tsarin yanayin, Molecule yana adanawa a cikin kundin adireshi $TMPDIR/molecule/<role>/<scenario>.
Ƙara matakai tare da ? Kuna iya kwatanta ayyukan da ake so a cikin tsarin littafin-playbook, kuma ku sanya sunan fayil bisa ga mataki: prepare.yml/side_effect.yml. Yi tsammanin waɗannan fayilolin Kwayoyin za su kasance a cikin babban fayil ɗin rubutun.
Direba
Direba wata ƙungiya ce inda aka ƙirƙiri misalin gwaji.
Jerin daidaitattun direbobi waɗanda Molecule ke da shirye-shiryen samfuri sune kamar haka: Azure, Docker, EC2, GCE, LXC, LXD, OpenStack, Vagrant, Wakili.
A mafi yawan lokuta, samfura fayiloli ne create.yml и destroy.yml a cikin babban fayil ɗin rubutun da ke bayyana ƙirƙira da gogewa na misali, bi da bi.
Keɓancewar Docker da Vagrant, kamar yadda hulɗa tare da tsarin su na iya faruwa ba tare da fayilolin da aka ambata ba.
Yana da daraja a yi la'akari da Delegate direban, tun da idan aka yi amfani da shi a cikin fayiloli don ƙirƙirar da share misali, kawai aiki tare da daidaitawa na lokuta da aka bayyana, sauran ya kamata a bayyana ta injiniya.
Tsohuwar direba shine Docker.
Yanzu bari mu ci gaba don yin aiki kuma muyi la'akari da ƙarin fasali a wurin.
FarawaEND_LINK
A matsayin "sannu duniya", bari mu gwada aikin shigarwa na nginx mai sauƙi. Bari mu zaɓi docker a matsayin direba - Ina tsammanin yawancin ku an shigar da shi (kuma ku tuna cewa docker shine direban tsoho).
Mataki na gaba shine fara sabon aikin.
Ƙaddamar da sabon matsayi, da kuma sabon rubutun, ana yin ta ta amfani da umarnin 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
Ya zama babban rawar da za ta iya takawa. Bugu da ari, duk hulɗa tare da CLI Molecules an yi su ne daga tushen rawar.
Bari mu ga abin da ke cikin kundin jagora:
> tree molecule/default/
molecule/default/
├── Dockerfile.j2 # Jinja-шаблон для Dockerfile
├── INSTALL.rst. # Немного информации об установке зависимостей сценария
├── molecule.yml # Файл конфигурации
├── playbook.yml # Плейбук запуска роли
└── tests # Директория с тестами стадии verify
└── test_default.py
1 directory, 6 files
Bari mu bincika saitin molecule/default/molecule.yml (maye gurbin hoton docker kawai):
Yana bayyana tsarin yanayin.
A cikin yanayin docker a matsayin direba, Molecule an ƙirƙira shi akan wannan sashe, kuma kowane ɓangaren jerin yana samuwa a ciki. Dockerfile.j2 a matsayin m item.
A wajen direban da ke bukata create.yml и destroy.yml, sashen yana samuwa a cikinsu kamar haka molecule_yml.platforms, kuma an riga an siffanta maimaitawa akansa a cikin waɗannan fayilolin.
Tun da Molecule yana ba da ikon sarrafa al'amura zuwa nau'ikan iyawa, jerin saitunan da za a iya kuma ya kamata a nemi a can. Don docker, alal misali, ana amfani da module docker_container_module. Wadanne modules ake amfani da su a wasu direbobi za a iya samu a ciki takardun.
Hakanan ana iya samun misalan amfani da direbobi daban-daban a cikin gwaje-gwajen Kwayoyin da kansa.
Sauya nan cen:7 a kan Ubuntu.
mai bayarwa
"Mai bayarwa" - wani mahaluži da ke kula da lokuta. A cikin yanayin Molecule, wannan yana yiwuwa, ba a shirya tallafi ga wasu ba, don haka ana iya kiran wannan sashe mai tsawaita tsawaitawa tare da faɗakarwa.
Anan za ku iya tantance abubuwa da yawa, zan haskaka mahimman batutuwa, a ra'ayi na:
littattafan wasa: za ka iya tantance waɗanne littattafan wasan kwaikwayo ya kamata a yi amfani da su a wasu matakai.
Suna da bayanin jerin rubutun.
Kuna iya canza matrix ɗin aikin tsoho na kowane umarni ta ƙara maɓallin <command>_sequence kuma a matsayin darajarta ta hanyar ayyana jerin matakan da muke buƙata.
Bari mu ce muna son canza jerin ayyuka yayin gudanar da umarnin gudu na littafin wasan: molecule converge
An gwada aikinmu mai sauƙi ba tare da matsala ba.
Ya kamata a tuna cewa idan akwai matsaloli a lokacin aikin molecule test, to, idan ba ku canza tsarin tsoho ba, Molecule zai share misalin.
Umurnai masu zuwa suna da amfani don gyara kuskure:
> molecule --debug <command> # debug info. При обычном запуске Молекула скрывает логи.
> molecule converge # Оставляет инстанс после прогона тестируемой роли.
> molecule login # Зайти в созданный инстанс.
> molecule --help # Полный список команд.
Matsayin da yake wanzu
Ƙara sabon rubutun zuwa aikin da ake da shi shine daga cikin directory directory tare da umarni masu zuwa:
# полный список доступных параметров
> molecule init scenarion --help
# создание нового сценария
> molecule init scenario -r <role_name> -s <scenario_name>
Idan wannan shine yanayin farko a cikin rawar, sai siga -s za a iya tsallake kamar yadda zai haifar da rubutun default.
ƙarshe
Kamar yadda kuke gani, Molecule ɗin ba ya da sarƙaƙiya sosai, kuma ta amfani da samfuran ku, ƙaddamar da sabon rubutun za a iya rage shi zuwa gyara masu canji a cikin ƙirƙira da share littattafan wasan kwaikwayo. Kwayoyin halitta suna haɗuwa da juna tare da tsarin CI, wanda ke ba ku damar haɓaka saurin ci gaba ta hanyar rage lokacin gwajin littafin wasan kwaikwayo.
Na gode da kulawar ku. Idan kuna da gogewa wajen gwada ayyuka masu yiwuwa, kuma ba shi da alaƙa da Molecule, gaya mana game da shi a cikin sharhin!