Sobes.tech
Junior

Ի՞նչ բաղադրիչներից և ֆայլերից է բաղկացած դերակատարությունը DevOps-ում։

sobes.tech AI

Պատասխան AI-ից

DevOps- ում դերը, որը առավել հաճախ իրականացնում է Ansible-ով, բաղկացած է հետևյալ հիմնական բաղադրիչներից և ֆայլերից.

  • tasks/: Ֆոլդեր, որը պարունակում է գործառույթները, որոնք իրականացնում է դերը: Հիմնական ֆայլը — main.yml:
    // tasks/main.yml
    - name: Ներբեռնել nginx
      apt:
        name: nginx
        state: present
    
  • handlers/: Ֆոլդեր, որը պարունակում է հսկիչներ: Հիմնական ֆայլը — main.yml. Հսկիչները գործարկվում են միայն այն ժամանակ, երբ փոփոխություն է տեղի ունենում գործառույթներում, որոնք նրանց "տեղեկացնում" են:
    // handlers/main.yml
    - name: Վերագործարկել nginx
      service:
        name: nginx
        state: restarted
    
  • defaults/: Ֆոլդեր, որը պարունակում է դերի նախնական արժեքները փոփոխականների համար: Հիմնական ֆայլը — main.yml. Այս փոփոխականները ունեն ամենացածր առաջնահերթությունը:
    // defaults/main.yml
    nginx_port: 80
    
  • vars/: Ֆոլդեր, որը պարունակում է դերի հատուկ փոփոխականները: Հիմնական ֆայլը — main.yml. Այս փոփոխականները ունեն ավելի բարձր առաջնահերթություն, քան defaults/:
    // vars/main.yml
    nginx_user: www-data
    
  • files/: Ֆոլդեր, որը պարունակում է ֆայլեր, որոնք կկատարվեն առանց փոփոխությունների՝ ուղղակի կկցվեն նպատակային մեքենաներին:
    // tasks/main.yml
    - name: Կատարված ֆայլի պատճենում
      copy:
        src: my_static_file.conf
        dest: /etc/nginx/conf.d/my_static_file.conf
    
  • templates/: Ֆոլդեր, որը պարունակում է շաբլոնային ֆայլեր (հաճախ Jinja2 ձևաչափով), որոնք կկատարվեն և կտեղադրվեն նպատակային մեքենաներին՝ փոխարինելով փոփոխականները:
    // templates/nginx.conf.j2
    server {
        listen {{ nginx_port }};
        ...
    }
    
    // tasks/main.yml
    - name: Կարգավորել nginx
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Վերագործարկել nginx
    
  • meta/: Ֆոլդեր, որը պարունակում է մետադատվածքներ, ինչպիսիք են կախվածությունները:
    // meta/main.yml
    dependencies:
      - role: another_role
        variable: value
    
  • library/: (Ընտրովի) Ֆոլդեր, որը նախատեսված է օգտագործողի մոդուլների համար:
  • module_utils/: (Ընտրովի) Ֆոլդեր, որը պարունակում է օգտագործողի utility-ներ, որոնք օգտագործվում են մոդուլներում:
  • lookup_plugins/, filter_plugins/ և այլն՝ (Ընտրովի) Ֆոլդեր, որոնք պարունակում են օգտագործողի պլագիններ տարբեր տեսակների:

Տիպիկ դերի կառուցվածքը հետևյալն է:

my_role/
├── tasks/
│   └── main.yml
├── handlers/
│   └── main.yml
├── defaults/
│   └── main.yml
├── vars/
│   └── main.yml
├── files/
│   └── my_static_file.conf
├── templates/
│   └── nginx.conf.j2
└── meta/
    └── main.yml

Այս բաղադրիչները թույլ են տալիս կազմակերպել ավտոմատացման գործընթացը՝ տեղադրելու, կարգավորելու և կառավարելու ծառայությունները և համակարգերը կառուցվածքային և վերօգտագործվող ձևաչափով։