3.4 Ρύθμιση φακέλων εργασίας 📁
Η δομή που θα φτιάξουμε
Πριν εγκαταστήσουμε την Ansible, ας οργανώσουμε σωστά τους φακέλους εργασίας. Μια καλή δομή εξαρχής γλιτώνει πολύ μπέρδεμα αργότερα.
/home/ansible/
└── ansible/ ← ο κεντρικός φάκελος εργασίας
├── ansible.cfg ← κεντρική ρύθμιση Ansible
├── inventory/ ← οι servers μας
│ ├── hosts.ini ← static inventory
│ └── group_vars/ ← μεταβλητές ανά group
│ └── all.yml ← μεταβλητές για όλους
├── playbooks/ ← τα playbooks μας
├── roles/ ← τα roles μας
├── files/ ← αρχεία που στέλνουμε στους servers
└── templates/ ← Jinja2 templates
Βήμα 1: Δημιουργία δομής φακέλων
# Σιγουρέψου ότι είσαι ως ansible user
# ansible@ansible-controller:~$
# Δημιουργία όλης της δομής με μία εντολή
mkdir -p ~/ansible/{inventory/group_vars,playbooks,roles,files,templates}
# Επαλήθευση με tree
tree ~/ansible/
# Αναμενόμενο output:
# /home/ansible/ansible/
# ├── files/
# ├── inventory/
# │ └── group_vars/
# ├── playbooks/
# ├── roles/
# └── templates/
📝 Αν δεν έχεις tree:
sudo apt install tree -y
Βήμα 2: Δημιουργία ansible.cfg
Αυτό είναι το κεντρικό αρχείο ρυθμίσεων της Ansible. Θα το αναλύσουμε πλήρως στο Κεφάλαιο 5, αλλά ας φτιάξουμε μια βασική έκδοση τώρα:
cat > ~/ansible/ansible.cfg << 'EOF'
[defaults]
# Το inventory μας
inventory = ./inventory/hosts.ini
deprecation_warnings = False
interpreter_python = auto_silent
# Ο χρήστης σύνδεσης στους remote servers
remote_user = ansible
# Το SSH private key μας
private_key_file = /home/ansible/.ssh/id_ed25519
# Πόσοι servers παράλληλα (default: 5)
forks = 10
# Απενεργοποίηση host key checking (βολικό για αρχή)
host_key_checking = False
# Καλύτερο output
stdout_callback = default
result_format = yaml
# Logging
log_path = /home/ansible/ansible/ansible.log
[privilege_escalation]
# Sudo ρυθμίσεις
become = true
become_method = sudo
become_user = root
become_ask_pass = false
EOF
⚠️ Σημείωση για το
host_key_checking = False: Για εκμάθηση είναι βολικό γιατί δεν ρωτάει κάθε φορά για νέους servers. Σε production περιβάλλον το θέτουμεTrueγια ασφάλεια. Θα το δούμε στο Κεφάλαιο 5.
Βήμα 3: Δημιουργία βασικού Inventory
cat > ~/ansible/inventory/hosts.ini << 'EOF'
# ============================================
# Ansible Inventory
# Controller: ansible@ansible-controller
# ============================================
# Ο ίδιος ο controller
[controller]
localhost ansible_connection=local
# Debian based servers (Ubuntu, Debian, Armbian)
[debian_based]
# server01 ansible_host=192.168.1.X
# RedHat based servers (Rocky, AlmaLinux, CentOS)
[redhat_based]
# server01 ansible_host=192.168.1.X
# openSUSE based servers
[opensuse_based]
# server01 ansible_host=192.168.1.X
# Όλοι οι managed servers μαζί
[all_managed:children]
debian_based
redhat_based
opensuse_based
# Κοινές μεταβλητές για ΟΛΟΥΣ
[all:vars]
ansible_user = ansible
ansible_ssh_private_key_file= /home/ansible/.ssh/id_ed25519
ansible_become = true
ansible_become_method = sudo
EOF
Βήμα 4: Δημιουργία group_vars
cat > ~/ansible/inventory/group_vars/all.yml << 'EOF'
---
# Μεταβλητές που ισχύουν για ΟΛΟΥΣ τους servers
# Timezone
system_timezone: "Europe/Athens"
# Κοινά packages που θέλουμε παντού
common_packages:
- curl
- wget
- git
- nano
- htop
EOF
Βήμα 5: Επαλήθευση δομής
# Δες την τελική δομή
tree ~/ansible/
# Αναμενόμενο:
# /home/ansible/ansible/
# ├── ansible.cfg
# ├── files/
# ├── inventory/
# │ ├── group_vars/
# │ │ └── all.yml
# │ └── hosts.ini
# ├── playbooks/
# ├── roles/
# └── templates/
# Έλεγχος ansible.cfg
cat ~/ansible/ansible.cfg
# Έλεγχος inventory
cat ~/ansible/inventory/hosts.ini
Έλεγχος 3.4
✅ Δομή φακέλων δημιουργήθηκε
✅ ansible.cfg με βασικές ρυθμίσεις
✅ inventory/hosts.ini έτοιμο
✅ inventory/group_vars/all.yml έτοιμο