Ինչպես կանչել դերերը Ansible-ի playbook-ում?
sobes.tech AI
Պատասխան AI-ից
Ansible-ում դերերը կարելի է կանչել մի քանի եղանակներով playbook-ի շրջանակում:
-
Օգտագործելով
rolesբանալի բառը playbook-ի մակարդակում՝# playbooks/my_playbook.yml - անուն: Դերերի կիրառումը սերվերների վրա hosts: webservers become: այո roles: - role: common # 'common' դերակատարության կանչ - role: nginx # 'nginx' դերակատարության կանչ vars: # Փոփոխականների փոխանցում դերակատարությանը nginx_port: 8080 - another_role # Կարճացված ձևով կանչԱյս եղանակը կիրառվում է դերակատարությունների կանչի համար, որոնք կատարվում են հերթով բոլոր
hosts-ների համար, որոնք նշված ենhostsհատվածում: -
Օգտագործելով
include_roleմոդուլը առաջադրանքների ցանկում՝# playbooks/my_playbook.yml - անուն: Դերերի կիրառումը պայմաններով hosts: appservers tasks: - անուն: Տվյալների բազայի դերակատարության ակտիվացում (միայն dev-ի համար) include_role: name: database when: env == 'dev' # Շարունակական կանչ - անուն: Դիմումի դերակատարության ակտիվացում include_role: name: app vars: app_version: 1.2.0 # Փոփոխականների փոխանցումinclude_roleմոդուլը կատարում է դերակատարությունը, կարծես դա լինի առաջադրանքների ցանկ, որը ներառված է ընթացիկ playbook-ի մեջ։ Այն թույլ է տալիս օգտագործել պայմաններ (when) և ցիկլեր (loop) դերակատարության վերահսկման համար: -
Օգտագործելով
import_roleմոդուլը առաջադրանքների ցանկում՝# playbooks/my_playbook.yml - անուն: Դերակատարության ներմուծում hosts: appservers tasks: - անուն: Բոլոր հոստերի համար դերակատարության ներմուծում import_role: name: app vars: app_config_file: /etc/app/config.conf # Փոփոխականների փոխանցումimport_roleմոդուլը մշակվում է պլեյբուքի վերլուծության փուլում՝ նախքան նրա գործնական կատարմանը։ Սա նշանակում է, որ բոլոր հրահանգները, ինչպիսիք ենwhen, կկիրառվեն դերակատարության բոլոր առաջադրանքների վրա, ոչ միայն կանչի վրա։ Փոփոխականները, որոնք փոխանցվում ենvars-ով, հասանելի կլինեն դերակատարության ներսում:
Հիմնական տարբերությունը include_role և import_role միջև ժամանակի առումով է։ import_role մշակում է ստատիկորեն վերլուծության փուլում, իսկ include_role՝ դինամիկորեն՝ գործարկման ժամանակ։ Սա ազդում է պայմանների և ցիկլերի օգտագործման հնարավորության վրա:
| Ֆունկցիա | include_role |
import_role |
|---|---|---|
| Վերլուծում | Դինամիկ | Ստատիկ |
when օգտագործում |
Այո | Ոչ |
loop օգտագործում |
Այո | Ոչ |
| Փոփոխականների օգտագործում, որոնք նախապես սահմանված են playbook-ում | Այո | Ոչ |
Ընտրությունը կախված է անհրաժեշտ ճկունությունից և վերլուծության ժամանակից։ Պարզ դերակատարությունների համար սովորաբար բավական է roles կամ import_role բանալիները։ Ավելի բարդ սցենարների համար, որոնք պահանջում են պայմաններ և ցիկլեր, օգտագործվում է include_role։