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/: ปลั๊กอินสำหรับ 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) ซึ่งเป็นจุดเริ่มต้นสำหรับส่วนนี้ของบทบาท