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