Lewati ke konten utama

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

VariabelWajibDefaultDeskripsi
PORTTidak8080Port di mana layanan API akan mendengarkan.
GIN_MODETidakreleaseMode framework Gin (debug atau release).

Penyebaran

Penyebaran Docker

Layanan ini dikontainerisasi menggunakan build Docker multi-tahap.

Ringkasan Dockerfile:

  1. Builder: Menggunakan golang:alpine untuk membangun binary statis.
  2. Runtime: Menggunakan alpine:latest dan menginstal ansible, openssh-client, dan sshpass.

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 ansible dan utilitas SSH terinstal karena ia menjalankan perintah ansible-playbook sebagai 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_pass yang disediakan dalam permintaan.

3. Penyimpanan Aturan

Direktori rules-default/ harus dicadangkan atau dipasang ke volume persisten jika pengunggahan aturan dilakukan secara sering.