Skip to content

جدول اختصارات وحدات Ansible

Ansible هي أداة قوية لأتمتة العمليات. ستعرفك هذه المقالة على كيفية استخدام وحداتها الشائعة.

التنسيق (Format)

بنية الملف الأساسية

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

يرجى وضع الوحدات الخاصة بك تحت tasks.

تنسيق المهمة

تنسيق السطر الواحد

- 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"

إدارة المستودعات (Software Source)

- 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   # غلاف تسجيل الدخول
    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

تنفيذ السكربتات

- 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    # إنشاء متكرر (Recursive)
    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