Sobes.tech
Junior

Milyen komponensekből és fájlokból áll egy szerep a DevOps-ban?

sobes.tech MI

Válasz az MI-től

A DevOps-ban szerepet, amely leggyakrabban az Ansible segítségével valósul meg, a következő fő összetevőkből és fájlokból áll:

  • tasks/: Kötet, amely tartalmazza a szerep által végrehajtott feladatokat. A fő fájl a main.yml.
    // tasks/main.yml
    - name: nginx telepítése
      apt:
        name: nginx
        state: present
    
  • handlers/: Kötet, amely eseménykezelőket tartalmaz. A fő fájl a main.yml. A kezelők csak akkor futnak le, ha a hozzájuk tartozó feladatok állapota változik.
    // handlers/main.yml
    - name: nginx újraindítása
      service:
        name: nginx
        state: restarted
    
  • defaults/: Kötet, amely a szerep alapértelmezett változóértékeit tartalmazza. A fő fájl a main.yml. Ezek a változók a legalacsonyabb prioritással rendelkeznek.
    // defaults/main.yml
    nginx_port: 80
    
  • vars/: Kötet, amely a szerephez tartozó specifikus változókat tartalmazza. A fő fájl a main.yml. Ezek a változók magasabb prioritással rendelkeznek, mint a defaults/-ben lévők.
    // vars/main.yml
    nginx_user: www-data
    
  • files/: Kötet, amely fájlokat tartalmaz, amelyeket változtatás nélkül másolnak a célgépekre.
    // tasks/main.yml
    - name: Statikus fájl másolása
      copy:
        src: my_static_file.conf
        dest: /etc/nginx/conf.d/my_static_file.conf
    
  • templates/: Kötet, amely sablonfájlokat (általában Jinja2 formátumban) tartalmaz, amelyeket feldolgozás után (változók helyettesítése) másolnak a célgépekre.
    // templates/nginx.conf.j2
    server {
        listen {{ nginx_port }};
        ...
    }
    
    // tasks/main.yml
    - name: nginx konfigurálása
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: nginx újraindítása
    
  • meta/: Kötet, amely a szerep metaadatait tartalmazza, például függőségeket. A fő fájl a main.yml.
    // meta/main.yml
    dependencies:
      - role: another_role
        variable: value
    
  • library/: (Opcionális) Kötet, amely saját Ansible modulokat tartalmaz.
  • module_utils/: (Opcionális) Kötet, amely saját segédprogramokat tartalmaz, amelyeket modulokban használnak.
  • lookup_plugins/, filter_plugins/, stb.: (Opcionális) Kötetek, amelyek saját pluginokat tartalmaznak különböző típusokhoz.

A tipikus szerep szerkezete így néz ki:

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

Ezek az összetevők lehetővé teszik az automatizálás szervezését a telepítés, konfigurálás és szolgáltatáskezelés terén strukturált és újrahasznosítható módon.