Sobes.tech
Junior

როლი რა შედგება, რა ფოლდერები და ფაილები შემადგენლობაში შედის?

sobes.tech AI

პასუხი AI-სგან

Ansible-ის როლი შედგება დირექტორიებისა და ფაილებისგან, რომლებიც განსაზღვრავენ დავალებებს, ცვლადებს, შაბლონებს, ფაილებს, დამუშავებლებს და მეტადატას კონკრეტული ფუნქციის შესრულებისთვის მართვად ნოდებზე.

როლის ძირითადი სტრუქტურა:

  • defaults/: დეფოლტ მნიშვნელობები როლისთვის.
  • vars/: სპეციფიკური ცვლადები როლისთვის, რომლებიც გადაფარავენ defaults/ მნიშვნელობებს.
  • tasks/: ძირითადი დავალებები, რომლებიც როლი ასრულებს. ფაილი main.yml აუცილებელია.
  • handlers/: დამუშავებლები, რომლებიც იძახიან გარკვეული მოვლენის დროს (მაგალითად, სერვისის გადატვირთვა). ფაილი main.yml აუცილებელია.
  • files/: ფაილები, რომლებიც გადაეცემიან მართვად ნოდებზე.
  • templates/: Jinja2 შაბლონები, რომლებიც გადაეცემიან მართვად ნოდებზე დამუშავების შემდეგ.
  • meta/: როლის შესახებ ინფორმაცია: დამოკიდებულებები, ავტორი, ლიცენზია. ფაილი main.yml აუცილებელია.
  • library/: მომხმარებლის მოდულები.
  • module_utils/: Utilities მომხმარებლის მოდულებისთვის.
  • lookup_plugins/: lookup-პლაგინები.
  • filter_plugins/: ფილტრის პლაგინები.

მაგალითი tasks/main.yml ფაილის შიგთავსი:

# tasks/main.yml
- name: დააყენოს Nginx ვებ სერვერი
  ansible.builtin.apt:
    name: nginx
    state: present

- name: გადაიტანოს Nginx კონფიგურაციის ფაილი
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
  notify: გადატვირთოს Nginx

handlers/main.yml ფაილის მაგალითი:

# handlers/main.yml
- name: გადატვირთოს Nginx
  ansible.builtin.service:
    name: nginx
    state: restarted

templates/nginx.conf.j2 შაბლონის მაგალითი:

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

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

defaults/main.yml ფაილის მაგალითი:

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

meta/main.yml ფაილის შიგთავსი:

# meta/main.yml
galaxy_info:
  author: Your Name
  description: როლი Nginx-ის ინსტალაციისა და კონფიგურაციისთვის
  license: MIT

  min_ansible_version: 2.9

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

  galaxy_tags: []

dependencies: []

ყოველი დირექტორია, გარდა library და module_utils, უნდა შეიცავდეს main.yml (ან main.yaml) ფაილს, რომელიც წარმოადგენს ამ ნაწილის შესვლის წერტილს როლისთვის.