HashiCorp adalah perusahaan perangkat lunak yang menyediakan produk-produk modular untuk penyediaan dan manajemen infrastruktur DevOps. Alat perangkat lunak HashiCorp awalnya dijual sebagai paket perangkat lunak dengan nama produk Atlas, namun saat ini modul-modul HashiCorp dijual terpisah.
Produk-produk HashiCorp dapat diterapkan secara terpisah atau bersama-sama dan digunakan bersama dengan teknologi lainnya. Banyak penawaran yang memiliki varian Open Source atau berbayar, dengan opsi berbayar yang khusus ditujukan untuk pengguna perusahaan. Sebagai contoh, Nomad adalah open source; namun, versi Enterprise berbayar dari HashiCorp menambahkan fitur operasional dan kolaborasi yang dirancang agar Nomad dapat diskalakan untuk audiens perusahaan.
Produk-produk HashiCorp memungkinkan kolaborasi dan otomatisasi di TI. Mereka memungkinkan pengguna untuk mendefinisikan infrastruktur sebagai kode, mulai dari pengembangan, pengujian, dan keamanan hingga logika penyebaran dan konfigurasi infrastruktur untuk operasi. Produk-produk ini mendukung berbagai jenis infrastruktur cloud dan pribadi. Biasanya, produk-produk HashiCorp mendukung layanan pihak ketiga melalui arsitektur plugin.
Perusahaan ini didirikan pada tahun 2012 oleh Mitchell Hashimoto dan Armon Dadgar, dan berkantor pusat di San Francisco. Beberapa pengguna HashiCorp antara lain Conde Nast, Mozilla, ClassPass, Cisco, Capgemini, dan OpenAI.
Produk-produk HashiCorp
Suite produk HashiCorp mencakup Nomad, Vagrant, Packer, Terraform, Vault, Consul, Sentinel, dan Serf.
Nomad
Nomad adalah manajer cluster dan penjadwal untuk deploy aplikasi di seluruh infrastruktur TI. Nomad menjadwalkan aplikasi dan layanan lainnya untuk deploy di Windows, Linux, dan Mac OS. Dukungan juga disertakan untuk aplikasi yang terkontainerisasi dan virtualisasi. Fitur HashiCorp Nomad mencakup kemampuan untuk mendeklarasikan pekerjaan, merencanakan perubahan, menjalankan aplikasi, dan memantau aplikasi.
Pengguna mengirimkan file pekerjaan deklaratif ke Nomad, yang secara otomatis menangani penjadwalan dan peningkatan aplikasi. Alat ini menggantikan langkah-langkah manual, yang dapat menghemat waktu dalam penyebaran sistem identik dalam jumlah besar. Dukungan untuk berbagai strategi penyebaran termasuk penyebaran rolling atau blue/green.
Vagrant
Vagrant adalah alat untuk membuat dan mengelola lingkungan pengembangan untuk perangkat lunak virtual. Vagrant mendukung pembuatan dan pengelolaan lingkungan untuk VirtualBox, VMware, Microsoft Hyper-V, AWS, dan Docker container. Tujuan dari alat ini adalah untuk menyederhanakan manajemen konfigurasi lingkungan virtual dengan mengotomatisasi konfigurasi.
Vagrant bekerja melalui penyedia dan pemberi penyediaan. Penyedia adalah layanan yang membuat lingkungan virtual, sementara pemberi penyediaan, seperti Chef, Ansible, dan Puppet, memungkinkan pengguna untuk mengontrol konfigurasi lingkungan virtual tersebut. Vagrant bertindak sebagai pembungkus untuk mengotomatisasi konfigurasi lingkungan virtual melalui pemberi penyediaan.
Packer
Packer adalah alat yang mengotomatisasi pembuatan gambar untuk platform termasuk AWS, Docker, OpenStack, VMware, dan VirtualBox. Plugin menyediakan dukungan untuk platform lainnya. Pengguna Packer dapat membuat beberapa gambar identik dari satu konfigurasi sumber untuk hidup di beberapa platform. Packer tidak menggantikan alat manajemen konfigurasi; sebaliknya, ia menggunakan alat manajemen konfigurasi seperti Chef. Sebagai contoh, Packer dapat memanfaatkan Chef untuk menginstal dan mengonfigurasi perangkat lunak dalam gambar.
Packer dapat menginstal dan mengonfigurasi perangkat lunak saat gambar dibangun, yang memungkinkan penyebaran infrastruktur yang lebih cepat daripada proses manual.
Terraform.
Terraform adalah alat infrastruktur sebagai kode yang mengotomatisasi provisioning infrastruktur di platform cloud, termasuk AWS, Google Compute Engine, OpenStack, dan Azure. Terraform memungkinkan pengguna untuk berkolaborasi dan berbagi konfigurasi dan modul, memantau riwayat infrastruktur, dan menggunakan kembali konfigurasi. Konfigurasi disimpan dalam kontrol versi, atau dapat dikemas sebagai modul yang dapat dibagikan dan dikolaborasikan. Konfigurasi yang sama dapat digunakan di berbagai lingkungan, seperti untuk staging dan produksi.
Terraform memungkinkan pengguna untuk mendefinisikan infrastruktur pusat data dalam bahasa konfigurasi untuk kemudian membuat model eksekusi untuk infrastruktur berbasis cloud. Pengguna dapat mengonversi API menjadi file deklaratif untuk dibagikan di antara tim.
Vault.
Vault adalah alat untuk mengelola kunci dan rahasia dalam sistem terdistribusi. Vault memungkinkan tim TI untuk mengontrol akses ke token, kata sandi, kunci enkripsi, dan sertifikat untuk melindungi data yang berpotensi sensitif.
Vault mencakup fitur-fitur seperti backend penyimpanan untuk data terenkripsi, Namespace terisolasi, plugin yang aman, audit log terperinci, penyewaan dan pembatalan rahasia, dan banyak lagi. Audit log terperinci memungkinkan pengguna untuk mengakses riwayat interaksi klien termasuk otentikasi, pembuatan token, dan lainnya. Penyewaan dan pembatalan rahasia dapat membatasi berapa lama kredensial tertentu berlaku melalui token berbasis waktu.
Vault menyediakan kunci utama dan menghasilkan kunci enkripsi untuk melindungi data. Kunci utama dibagi menjadi lima bagian. Tiga dari lima bagian diperlukan untuk membangun kembali kunci utama.
Vault tersedia dalam edisi open source, Enterprise Pro, dan Enterprise Premium. Enterprise Pro menambahkan fitur kolaborasi untuk menggunakan Vault dalam tim yang terpisah, dan Premium menambahkan fitur tata kelola untuk organisasi.
Consul
Consul adalah alat untuk deployment, konfigurasi, dan pemeliharaan arsitektur berbasis layanan (SOA). Alat HashiCorp ini adalah layanan terdistribusi mesh, yang akan menghubungkan, mengamankan, dan mengonfigurasi runtime di platform cloud publik dan cloud pribadi. Sebagai contoh, Consul dapat didukung melalui plugin di layanan cloud AWS, Azure, dan vSphere. Consul menyediakan penyimpanan key-value, RPC, penemuan layanan berbasis DNS, dan lainnya. Mekanisme deteksi acara, keanggotaan, dan kegagalan berasal dari teknologi pendamping Serf.
Alih-alih menggunakan load balancer seperti produk layanan mesh lainnya, Consul memulai instance dan mendaftarkannya sebagai bagian dari registri pusat. Dengan cara ini, layanan dapat langsung berkomunikasi satu sama lain tanpa harus melewati layanan lain sebelumnya. Mirip dengan load balancer, yang mengarahkan lalu lintas di sekitar kegagalan, Consul dapat menggunakan registri untuk mendeteksi dan menghindari layanan yang mengalami masalah kesehatan.
Sentinel
Sentinel adalah kerangka kerja kebijakan sebagai kode yang dapat disematkan framework. Organisasi TI menggunakan kebijakan untuk menentukan kondisi di mana perilaku atau tindakan diizinkan dalam perangkat lunak. Kebijakan sebagai kode, mirip dengan infrastruktur sebagai kode, merujuk pada pengelolaan kebijakan yang diterapkan pada infrastruktur TI dengan instruksi berbasis kode.
Sentinel digunakan untuk membuat keputusan berbasis logika terkait kebijakan dalam versi enterprise dari Consul, Nomad, Terraform, dan Vault. Sentinel menawarkan kebijakan dengan pengendalian rinci, di mana pengguna dapat melarang atau menimpa perilaku, seperti panggilan API tertentu, konfigurasi penyebaran yang tidak aman di Nomad, atau akses rahasia berdasarkan waktu di Vault. Sentinel juga dapat menegakkan kebijakan seperti format kunci di Consul.
Dalam Terraform, kebijakan diaktifkan untuk memvalidasi informasi untuk rencana, status, dan konfigurasi. Kebijakan di Nomad ditegakkan dalam artefak yang tepercaya, aplikasi yang diizinkan untuk dijalankan, atau dalam sistem kontrol akses Nomad (ACL), namun hanya sebelum menerima atau memperbarui pekerjaan baru dan yang sudah ada. Kebijakan Vault ditegakkan dengan semua API Vault dan dalam sistem ACL Vault. Kebijakan Consul ditegakkan dalam sistem ACL Consul, K/V, dan API.
Serf
Serf adalah alat untuk keanggotaan cluster, deteksi kegagalan, dan orkestrasi. Serf menyediakan fitur seperti keanggotaan grup dan siaran acara. Namun, Serf tidak mencakup fitur seperti penemuan layanan, penyimpanan kunci, atau pemeriksaan kesehatan lanjutan; yang semuanya disediakan oleh Consul.
Serf bertindak sebagai versi terbatas dari Consul. Misalnya, Serf hanya beroperasi di level node, sedangkan Consul menyediakan abstraksi baik di tingkat layanan maupun node. Selain itu, pemeriksaan kesehatan di Serf terbatas hanya untuk memastikan bahwa agen masih beroperasi. Meskipun terbatas, Serf berfokus pada ketersediaan dan toleransi partisi, berbeda dengan Consul yang berfokus pada konsistensi dan toleransi partisi. Consul akan membutuhkan server pusat untuk beroperasi; namun, Serf tidak memerlukan server terpusat dan dapat berjalan secara konsisten.