Sobes.tech
Junior

Rol nədir, hansı qovluqlar və fayllar onu təşkil edir?

sobes.tech Süni İntellekt

AI-dan cavab

Ansible rolu, idarə olunan düyünlərdə müəyyən bir funksiyanı yerinə yetirmək üçün tapşırıqlar, dəyişənlər, şablonlar, fayllar, handlerlər və meta məlumatlar təyin edən qovluqlar və fayllardan ibarətdir.

Rolun əsas qovluq strukturu:

  • defaults/: Rol üçün dəyişənlərin standart dəyərləri.
  • vars/: Rol-ə xas dəyişənlər. defaults/-dən dəyərləri üst-üstə qoyur.
  • tasks/: Rol tərəfindən yerinə yetirilən əsas tapşırıqlar. main.yml faylı vacibdir.
  • handlers/: Xüsusi hadisələr zamanı işə salınan handlerlər (məsələn, xidməti yenidən başlatmaq). main.yml faylı vacibdir.
  • files/: İdarə olunan düyünlərə köçürüləcək fayllar.
  • templates/: İşlənmədən sonra idarə olunan düyünlərə köçürüləcək Jinja2 şablon faylları.
  • meta/: Rol haqqında məlumatlar: asılılıqlar, müəllif, lisenziya. main.yml faylı vacibdir.
  • library/: Xüsusi modullar.
  • module_utils/: Xüsusi modullar üçün utilitlər.
  • lookup_plugins/: Lookup üçün plaginlər.
  • filter_plugins/: Filtrlər üçün plaginlər.

tasks/main.yml faylının nümunə məzmunu:

# tasks/main.yml
- name: Nginx veb serverini quraşdır
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Nginx konfiqurasiya faylını köçür
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: Nginx-i yenidən başlat

handlers/main.yml faylının nümunə məzmunu:

# handlers/main.yml
- name: Nginx-i yenidən başlat
  ansible.builtin.service:
    name: nginx
    state: restarted

templates/nginx.conf.j2 faylının nümunə məzmunu:

# templates/nginx.conf.j2
server {
    listen {{ http_port }};
    server_name {{ server_name }};

    location / {
        proxy_pass http://localhost:{{ app_port }};
    }
}

defaults/main.yml faylının nümunə məzmunu:

# defaults/main.yml
http_port: 80
server_name: localhost
app_port: 8080

meta/main.yml faylının məzmunu:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: Nginx quraşdırmaq  konfiqurasiya etmək üçün rol.
  license: MIT

  min_ansible_version: 2.9

  platforms:
  - name: Debian
    versions:
    - all
  - name: Ubuntu
    versions:
    - bionic

  galaxy_tags: []

dependencies: []

Hər bir qovluq, librarymodule_utils istisna olmaqla, bu rolun bu hissəsinə giriş nöqtəsi olan main.yml (və ya main.yaml) faylını içerməlidir.