Skip to content

Cheat Sheet Ενοτήτων (Modules) Ansible

Το Ansible είναι ένα ισχυρό εργαλείο αυτοματοποίησης λειτουργιών. Αυτό το άρθρο θα σας παρουσιάσει τη χρήση των κοινών ενοτήτων του.

Μορφή (Format)

Βασική Δομή Αρχείου

---
- hosts: production
  remote_user: root
  tasks:
  - ···

Παρακαλούμε τοποθετήστε τις ενότητές σας κάτω από το tasks.

Μορφή Εργασιών (Task Format)

Μορφή μιας γραμμής

- apt: pkg=vim state=present

Μορφή αντιστοίχισης (Mapping)

- apt:
    pkg: vim
    state: present

Μορφή αναδιπλούμενου βαθμωτού (Folded Scalar)

- apt: >
    pkg=vim
    state=present

Μπορείτε να χρησιμοποιήσετε οποιαδήποτε από τις παραπάνω μορφές για να ορίσετε εργασίες. Για σύντομες δηλώσεις συνιστάται η μορφή μιας γραμμής, ενώ για μεγαλύτερες δηλώσεις συνιστάται η μορφή αντιστοίχισης.

Ενότητες (Modules)

Aptitude

Διαχείριση Πακέτων

- apt:
    pkg: nodejs
    state: present # absent | latest
    update_cache: yes
    force: no

Αρχείο Πακέτου Deb

- apt:
    deb: "https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb"

Διαχείριση Αποθετηρίων (Πηγές λογισμικού)

- apt_repository:
    repo: "deb https://··· raring main"
    state: present

Κλειδί Αποθετηρίου

- apt_key:
    id: AC40B2F7
    url: "http://···"
    state: present

Σχετικά με το Git

- git:
    repo: git://github.com/
    dest: /srv/checkout
    version: master
    depth: 10
    bare: yes

Αναφορά: ενότητα git

Ρυθμίσεις Git

- git_config:
    name: user.email
    scope: global # local | system
    value: hi@example.com

Αναφορά: ενότητα git_config

Διαχείριση Χρηστών

- user:
    state: present    # Κατάσταση: παρών
    name: git        # Όνομα χρήστη
    system: yes      # Χρήστης συστήματος
    shell: /bin/sh   # Shell σύνδεσης
    groups: admin    # Ομάδες
    comment: "Git Version Control"  # Σχόλιο

Αναφορά: ενότητα user

Διαχείριση Υπηρεσιών

- service:
    name: nginx      # Όνομα υπηρεσίας
    state: started   # Κατάσταση: ξεκίνησε
    enabled: yes     # Ενεργοποίηση στην εκκίνηση

Αναφορά: ενότητα service

Σχετικά με το Shell

εντολή shell

- shell: apt-get install nginx -y

Επιπλέον επιλογές

- shell: echo hello
  args:
    creates: /path/file  # Παράλειψη αν το αρχείο υπάρχει
    removes: /path/file  # Παράλειψη αν το αρχείο δεν υπάρχει
    chdir: /path        # Μετάβαση σε αυτόν τον κατάλογο πριν την εκτέλεση

Παράδειγμα εντολών πολλαπλών γραμμών

- shell: |
    echo "hello there"
    echo "multiple lines"

Αναφορά: ενότητα shell

Εκτέλεση Σεναρίων (Scripts)

- script: /x/y/script.sh
  args:
    creates: /path/file  # Παράλειψη αν το αρχείο υπάρχει
    removes: /path/file  # Παράλειψη αν το αρχείο δεν υπάρχει  
    chdir: /path        # Μετάβαση σε αυτόν τον κατάλογο πριν την εκτέλεση

Αναφορά: ενότητα script

Λειτουργίες Αρχείων

Διαχείριση Αρχείων

- file:
    path: /etc/dir
    state: directory # Τύπος: κατάλογος|αρχείο|σύνδεσμος|σκληρός σύνδεσμος|touch|απών

    # Προαιρετικές παράμετροι:
    owner: bin      # Ιδιοκτήτης
    group: wheel    # Ομάδα
    mode: 0644      # Δικαιώματα
    recurse: yes    # Αναδρομική δημιουργία
    force: yes      # Αναγκαστική δημιουργία συμβολικού συνδέσμου

Αναφορά: ενότητα file

Αντιγραφή Αρχείων

- copy:
    src: /app/config/nginx.conf   # Αρχείο πηγής
    dest: /etc/nginx/nginx.conf   # Θέση προορισμού

    # Προαιρετικές παράμετροι:
    owner: user     # Ιδιοκτήτης
    group: user     # Ομάδα
    mode: 0644      # Δικαιώματα
    backup: yes     # Δημιουργία αντιγράφου ασφαλείας

Αναφορά: ενότητα copy

Πρότυπα (Templates)

- template:
    src: config/redis.j2       # Αρχείο πηγής προτύπου
    dest: /etc/redis.conf      # Θέση προορισμού

    # Προαιρετικές παράμετροι:
    owner: user     # Ιδιοκτήτης
    group: user     # Ομάδα
    mode: 0644      # Δικαιώματα
    backup: yes     # Δημιουργία αντιγράφου ασφαλείας

Αναφορά: ενότητα template

Τοπικές Λειτουργίες

Τοπική Εκτέλεση

- name: Εκτέλεση λειτουργίας τοπικά
  local_action: shell echo hello

Έξοδος Εντοπισμού Σφαλμάτων (Debug)

- debug:
    msg: "Hello {{ var }}"

Αναφορά: ενότητα debug