Konfigurasi dan Penyebaran
Pendahuluan
Dokumen ini mencakup variabel lingkungan, penyebaran Docker, dan pertimbangan operasional untuk Ansible Service.
Konfigurasi
Layanan ini dikonfigurasi terutama melalui variabel lingkungan.
Variabel Lingkungan
| Variabel | Wajib | Default | Deskripsi |
|---|---|---|---|
PORT | Tidak | 8080 | Port di mana layanan API akan mendengarkan. |
GIN_MODE | Tidak | release | Mode framework Gin (debug atau release). |
Penyebaran
Penyebaran Docker
Layanan ini dikontainerisasi menggunakan build Docker multi-tahap.
Ringkasan Dockerfile:
- Builder: Menggunakan
golang:alpineuntuk membangun binary statis. - Runtime: Menggunakan
alpine:latestdan menginstalansible,openssh-client, dansshpass.
Menjalankan dengan Docker:
docker build -t ravenxcope-ansible:latest .
docker run -d \
--name ansible-service \
-p 8080:8080 \
ravenxcope-ansible:latest
[!IMPORTANT] Kontainer harus memiliki
ansibledan utilitas SSH terinstal karena ia menjalankan perintahansible-playbooksebagai subproses.
Autentikasi SSH
Layanan ini mendukung autentikasi SSH berbasis kata sandi untuk host jarak jauh. Layanan ini menggunakan utilitas sshpass secara internal (melalui Ansible) untuk menangani kata sandi yang disediakan dalam permintaan API.
Pengecekan Host Key
Secara default, layanan menonaktifkan pengecekan host key SSH (ANSIBLE_HOST_KEY_CHECKING=False) untuk memastikan bahwa penyebaran otomatis tidak terhambat oleh permintaan interaktif "percayai host ini".
Catatan Operasional
1. Eksekusi Dalam-Memori (In-Memory)
Rekaman eksekusi playbook disimpan dalam map di memori.
- Risiko: Menghentikan ulang (restart) layanan akan menghapus semua riwayat eksekusi dan log.
- Praktik Terbaik: Backend Ravenxcope harus menangkap dan menyimpan status/output akhir jika riwayat jangka panjang diperlukan.
2. Konkurensi
Layanan ini menggunakan Go routine untuk menjalankan playbook secara asinkron.
- Beberapa playbook dapat berjalan secara bersamaan.
- Eskalasi Sudo/hak istimewa ditangani melalui
ansible_become_passyang disediakan dalam permintaan.
3. Penyimpanan Aturan
Direktori rules-default/ harus dicadangkan atau dipasang ke volume persisten jika pengunggahan aturan dilakukan secara sering.