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/: Βοηθητικά εργαλεία για προσαρμοσμένες ενότητες.
  • lookup_plugins/: Πρόσθετα για αναζήτηση.
  • filter_plugins/: Πρόσθετα για φίλτρα.

Παράδειγμα περιεχομένου του αρχείου tasks/main.yml:

# tasks/main.yml
- name: Εγκατάσταση του web server 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.ymlmain.yaml), το οποίο αποτελεί το σημείο εισόδου για αυτό το μέρος του ρόλου.