ansible-directory-structure
Ansibleμμ inventory
, playbooks
, roles
λ₯Ό ν¬ν¨ν λλ ν 리 ꡬ쑰λ κ°λ
μ±κ³Ό μ¬μ¬μ©μ±, μ μ§λ³΄μ μ©μ΄μ±, νκ²½ λΆλ¦¬, μν λͺ
νν λ±μ μν΄ νμ€μ μΈ κ΅¬μ‘°λ‘ κ΅¬μ±νλ κ²μ΄ μ’μ΅λλ€. μλμ μ€λ¬΄μμ κ°μ₯ λ리 μ°μ΄λ λλ ν 리 ꡬ쑰 μμμ κ° κ΅¬μ±μμμ μν μ μ€λͺ
λ릴κ²μ.
π Best Practice λλ ν 리 ꡬ쑰β
ansible-project/
βββ inventories/
β βββ production/
β β βββ hosts.yml
β β βββ group_vars/
β β βββ all.yml
β β βββ web.yml
β β βββ db.yml
β βββ staging/
β βββ hosts.yml
β βββ group_vars/
βββ playbooks/
β βββ site.yml
β βββ web.yml
β βββ db.yml
β βββ k3s-cluster.yml
βββ roles/
β βββ common/
β β βββ tasks/
β β βββ templates/
β βββ k3s/
β βββ helm/
β βββ argocd/
β βββ app/
βββ files/
β βββ custom-configs/
βββ templates/
β βββ nginx.conf.j2
βββ group_vars/
β βββ all.yml
βββ ansible.cfg
βββ requirements.yml
π§© κ° κ΅¬μ±μμ μ€λͺ β
1. inventories/
β
-
νκ²½λ³ μΈλ²€ν 리 μ μ (μ: production, staging)
-
κ° νκ²½λ³
hosts.yml
+group_vars/
κ΅¬μ‘°λ‘ λλ μ μ§λ³΄μ μ©μ΄ -
π SSH μ 보, λ³μ μ€μ , νΈμ€νΈ κ·Έλ£Ήν λ±μ μ€μ
ansible-playbook -i inventories/production/hosts.yml playbooks/site.yml
2. playbooks/
β
-
μ€μ μ€νλ νλ μ΄λΆ YAML νμΌ μμΉ
-
λ³΄ν΅ μν (role)μ λ¬Άλ μμ λ¨μμ orchestration μν μν
-
μ:
web.yml
,k3s-cluster.yml
,deploy-app.yml
- name: Web setup
hosts: web
roles:
- common
- nginx
3. roles/
β
-
Ansibleμ ν΅μ¬ μ¬μ¬μ© λ¨μ
-
κ° μν (role)μ λ 립μ μΈ κΈ°λ₯ λ¨μ (μ:
k3s
,helm
,argocd
) -
νμ λλ ν λ¦¬λ‘ λΆλ¦¬:
roles/helm/
βββ tasks/main.yml
βββ defaults/main.yml
βββ files/
βββ templates/
βββ handlers/main.yml
βββ vars/main.yml
- λ€λ₯Έ νλ‘μ νΈμμλ μ¬μ¬μ© κ°λ₯
4. group_vars/
, host_vars/
β
-
κ·Έλ£Ή λλ κ°λ³ νΈμ€νΈ λ¨μ λ³μ μ€μ
-
group_vars/all.yml
: λͺ¨λ νκ²½μ κ³΅ν΅ μ μ©λλ λ³μ
μ: group_vars/web.yml
nginx_port: 80
5. files/
, templates/
β
-
files/
: κ·Έλλ‘ λ³΅μ¬ν νμΌλ€ -
templates/
: Jinja2 λ¬Έλ² μ¬μ©νμ¬ λ³μλ₯Ό λμ μΌλ‘ λ£μ μ μλ ν νλ¦Ώ
6. ansible.cfg
β
-
Ansible μ€νμ λν μ€μ μ μ μ
-
μ: κΈ°λ³Έ inventory, ssh args, roles_path λ±
[defaults]
inventory = inventories/production/hosts.yml
roles_path = roles
β μ΄μ κΈ°μ€ μμ½β
λλ ν 리 | λͺ©μ |
---|---|
inventories/ | νκ²½λ³ μΈλ²€ν 리 λ° λ³μ κ΄λ¦¬ |
playbooks/ | μ€ν λ¨μ λ¬Άμ (νΈμΆμ ) |
roles/ | κΈ°λ₯ λ¨μ μ¬μ¬μ© λͺ¨λ |
group_vars/ | κ·Έλ£Ήλ³ λ³μ |
host_vars/ | νΈμ€νΈλ³ λ³μ |
files/ | μ μ νμΌ λ°°ν¬ |
templates/ | Jinja2 κΈ°λ° ν νλ¦Ώ |
ansible.cfg | κΈ°λ³Έ λμ μ€μ |
π§ TIPβ
-
λ‘컬μμ κ΄λ¦¬νλ€κ° ν΄λΌμ°λλ‘ νμ₯ν κ³νμ΄λΌλ©΄ μ΄ κ΅¬μ‘°λ κ·Έλλ‘ νμ₯ κ°λ₯
-
μν λ§ μΆκ°νκ³ ,
inventory
λ§ ν΄λΌμ°λμ λ§κ² λ리면 λ¨