Saya seorang pengembang web, tetapi saya juga tertarik pada beberapa tugas administrasi. Oleh karena itu, langkah baru dari administrasi murni ke dev-ops berguna bagi saya.
Bagaimanapun, saya memiliki beberapa masalah untuk memasukkan beberapa hal ke dalam suatu hubungan. Mungkin tidak ada, jadi saya ingin meminta bantuan untuk klarifikasi.
Pada dasarnya, apa yang ingin saya hubungkan adalah empat jenis perangkat lunak (dari pemahaman saya). Produk yang tepat tidak masalah, Anda dapat menempatkan perangkat lunak serupa sebagai alternatif:
- Vagrant: Dari pemahaman saya adalah untuk mengotomatiskan pembuatan dan pengelolaan VM: Menyiapkannya, memulai dan menghentikannya. Ini dapat dilakukan dengan menggunakan VM lokal atau jarak jauh, misalnya pada platform cloud.
- Docker: "VM ringan", berdasarkan pada beberapa konsep kernel Linux, yang dapat digunakan untuk menjalankan proses secara terpisah, misalnya dalam lingkungan hosting web bersama.
- Chef: Alat untuk mengatur dan mengkonfigurasi sistem operasi, misalnya di dalam VM.
- OpenStack: Alat yang memungkinkan Anda untuk membangun cloud pribadi Anda sendiri, karenanya dapat dibandingkan dengan sesuatu seperti AWS.
Pertanyaan # 1: Apakah penjelasan saya benar, atau apakah saya salah dengan beberapa (atau semua) dari konsumsi ini?
Pertanyaan # 2: Bagaimana saya bisa mencampur semua alat itu? Apakah itu masuk akal?
Dalam imajinasi saya dan dari sudut pandang saya, Anda bisa pergi dan
- gunakan OpenStack untuk membangun cloud Anda sendiri,
- menggunakan Vagrant untuk mengelola VM yang dijalankan di cloud,
- gunakan Chef untuk mengatur VM ini
- dan akhirnya menggunakan Docker untuk menjalankan proses di dalam VM.
Apakah ini benar? Dan jika demikian, dapatkah Anda memberi saya saran tentang cara mulai menggunakan semua ini (itu cukup banyak pada saat yang sama, dan saya belum tahu harus mulai dari mana)?
Jawaban:
Mari kita gunakan halaman web masing-masing untuk mencari tahu apa semua proyek ini. Namun, saya akan mengubah urutan daftar Anda:
Chef : Chef adalah platform otomatisasi yang mengubah infrastruktur menjadi kode.
Ini adalah perangkat lunak manajemen konfigurasi . Sebagian besar dari mereka menggunakan paradigma yang sama: mereka memungkinkan Anda untuk menentukan kondisi mesin yang Anda inginkan, terkait dengan file konfigurasi, perangkat lunak yang diinstal, pengguna, grup, dan banyak jenis sumber daya lainnya. Sebagian besar dari mereka juga menyediakan fungsionalitas untuk mendorong perubahan ke mesin tertentu, proses yang biasanya disebut orkestrasi .
Vagrant : Membuat dan mengonfigurasi lingkungan pengembangan yang ringan, dapat direproduksi, dan portabel.
Ini menyediakan cara yang dapat direproduksi untuk menghasilkan mesin tervirtualisasi sepenuhnya menggunakan Oracle VirtualBox atau teknologi VMWare sebagai penyedia . Vagrant dapat berkoordinasi dengan perangkat lunak manajemen konfigurasi untuk melanjutkan proses instalasi di mana installer sistem operasi selesai. Ini dikenal sebagai provisi .
Docker : Proyek sumber terbuka untuk mengemas, mengirim dan menjalankan aplikasi apa pun sebagai wadah yang ringan
Fungsionalitas perangkat lunak ini agak tumpang tindih dengan Vagrant, di mana ia menyediakan sarana untuk mendefinisikan instalasi sistem operasi, tetapi sangat berbeda dalam teknologi yang digunakan untuk tujuan ini. Docker menggunakan wadah Linux , yang bukan mesin virtual per se, tetapi proses terisolasi yang berjalan di sistem file yang terisolasi. Docker juga dapat menggunakan sistem manajemen konfigurasi untuk menyediakan wadah.
OpenStack : Perangkat lunak sumber terbuka untuk membuat awan privat dan publik.
Meskipun benar bahwa OpenStack dapat digunakan pada satu mesin , penyebaran seperti itu murni untuk pembuktian konsep, mungkin tidak terlalu fungsional karena keterbatasan sumber daya.
Target utama untuk instalasi OpenStack adalah lingkungan multi-node bare metal, di mana komponen yang berbeda dapat digunakan dalam perangkat keras khusus untuk mencapai hasil yang lebih baik.
Fungsionalitas utama OpenStack adalah dukungannya untuk banyak teknologi virtualisasi, dari yang sepenuhnya tervirtualisasi (VirtualBox, VMWare), hingga paravirtualized (KVM / Qemu) dan juga container (LXC) dan bahkan User Mode Linux (UML) .
Saya sudah mencoba menghadirkan produk-produk ini sebagai komponen arsitektur tertentu. Dari sudut pandang saya, masuk akal untuk pertama-tama dapat mendefinisikan kebutuhan Anda sehubungan dengan lingkungan yang Anda butuhkan (Chef, Wayang, Ansible, ...), kemudian dapat menyebarkannya dengan cara yang terkontrol (Vagrant, Docker , ...) dan akhirnya skala ke ukuran global jika perlu.
Seberapa banyak dari semua fungsi ini yang Anda butuhkan harus didefinisikan dalam ruang lingkup proyek Anda.
Juga perhatikan saya sudah terlalu menyederhanakan sebagian besar semua penjelasan teknis. Silakan gunakan tautan yang direferensikan untuk informasi terperinci.
sumber
Saya pikir datang dari latar belakang pengembang akan membuat menjadi 'devops' sebenarnya lebih rumit, pertanyaan Anda hampir 3 tahun sehingga akan menarik untuk mendengar bagaimana Anda menemukan perjalanan, saya akan memberikan jawaban dari sudut pandang sys admin tentang aplikasi yang Anda sebutkan di atas dan mudah-mudahan akan menjelaskan, atau memberikan perspektif non teknis yang akan menjelaskan mengapa seseorang (admin atau dev) akan mulai mempertimbangkan dengan tepat apa yang Anda minta misalnya dari para devops Perspektif apa hubungan antara x, y, z apakah alat-alat ini lebih besar dari jumlah bagian-bagiannya?
Saya benar-benar berpikir admin sys memiliki keunggulan di sini, sebagian besar aplikasi yang Anda sebutkan dalam pertanyaan Anda memecahkan masalah admin 'dan dengan demikian memberikan lingkungan pusat data yang lebih abstrak, dan ini pada gilirannya lebih diprogram untuk pengembang dan yang baru' strategi devops '(baca strategi / tim, devops bukan orang). Jadi apa hubungannya dengan aplikasi yang Anda sebutkan? bagaimana ini memberikan pendekatan holistik untuk layanan TI?
Itu memang apa, tapi apa fungsinya? - sistem operasi yang paling tepat namanya adalah DOS - itu mengoperasikan disk Anda dengan mengabstraksi BIOS, OpenStack mengoperasikan pusat data Anda dan abstrak infrastruktur Anda (IaaS - adalah Jargon untuk sistem operasi pusat data). Sekarang pusat data Anda memiliki API, sintaks perintah dan GUI, OpenStack dapat menggerakkan hypervisor, switch, router, firewall, jaringan area penyimpanan, load balancers, host docker dll. Openstack menggunakan 'plugin' pabrik perangkat keras Anda atau fungsi tertentu dapat ada hanya dalam perangkat lunak sebagai perangkat lunak menentukan sesuatuatau virtualisasi fungsi jaringan. Di atas OpenStack ini, dan semua cloud lainnya, dapat mengatur infrastruktur mereka sendiri dengan membaca skrip yang Anda lemparkan ke mesin orkestrasi atau dipicu berdasarkan aturan (peningkatan, penurunan, dll.). Jadi openstack adalah lapisan abstraksi raksasa, mis. Saya tidak peduli saklar apa yang saya miliki, beri saya jaringan dengan perintah ini , atau, buat saya beban seimbang, HA, tersedia untuk umum, penskalaan otomatis, nama domain terdaftar, penyimpanan terlampir thingy - dengan skrip ini saya temukan di internet.
Docker adalah lapisan abstraksi lainnya dan seperti cloud adalah teknologi yang mengganggu, itu mengubah industri karena ia memecahkan banyak masalah operasional seperti ketergantungan perangkat lunak, peningkatan, isolasi data, dan portabilitas yang tipis. Java menjadi populer karena portabilitas kode sumbernya yang tidak perlu dipikirkan oleh pengembang, menjalankan JVM berarti kode mereka harus dijalankan pada mesin kopi selama itu mendukung java. Docker memecahkan masalah serupa, untuk menjalankan Aplikasi saya, Anda memerlukan host buruh pelabuhan, bukan, Anda memerlukan versi python, kernel ini, distro linux ini dan sebagainya, aplikasi masih memiliki dependensi itu tentu saja, tetapi host yang mendasari tidak peduli dan admin tidak peduli apa yang Anda lakukan di dalam wadah yang terisolasi ( ke titik tertentu). Docker mengubah paradigma pengembangan dan operasi, memperlakukan seluruh sistem operasi dan layanannya seperti biner. kita bisa mendapatkannya dari repositori , versi, modifikasi, jalankan dengan parameter dll.
Ya, dan tidak mengganggu seperti dua yang pertama, Chef, boneka, kemungkinan, garam, manajer operasi pusat sistem dan sejumlah besar aplikasi lain di ruang ini menyediakan cara bagi pengembang dan admin untuk memodelkan penyebaran, peningkatan, dan tindakan lainnya (konfigurasi perubahan), sepertinya tidak ada badan standar atas melihat upaya ini seperti ada untuk cloud . Tapi kami tidak berurusan dengan sesuatu yang definitif seperti Infrastruktur jadi, itu lebih menyakitkan untuk mempelajari ini dan tidak banyak yang dapat ditransfer dari satu ke yang lain.
Ini adalah yang aneh dalam daftar aplikasi yang Anda sebutkan, Vagrant adalah alat untuk pengembang dan mainan untuk admin, Anda dapat dengan cepat berdiri di lingkungan pengembangan dengan gelandangan, misalnya saya ingin mengembangkan aplikasi android, ambil IDE dari gelandangan, saya pikir itu akan diambil alih oleh Docker segera.
Inilah mengapa saya pikir admin memiliki keunggulan, kami harus melakukan sebagian besar ini secara manual dan tahu apa yang salah, manifes wayang, komputasi awan, dan orkestra buruh pelabuhan akan lebih mudah bagi kami, pengembang akan menemukan diri mereka mengambil banyak garis singgung jadi saya saran untuk calon devops adalah menjadi admin terlebih dahulu.
sumber
Saya baru saja menyelesaikan proyek penyebaran OpenStack yang menggunakan server Chef di dalam instance Vagrant: https://github.com/bluechiptek/bluechipstack/blob/master/README.md
Masalah utama dengan melakukan hal ini adalah mendapatkan instance Vagrant IP yang sama setiap kali Anda ingin mengelola node. Jika Anda melakukan pengalamatan statis, itu berfungsi dengan baik. Melakukannya melalui VPN kurang dari ideal.
sumber
Pada akhirnya, saya hanya menggunakan kombinasi Vagrant dan Docker.
Saya menggunakan gelandangan untuk menyediakan mesin (ada penyedia cloud tambahan tapi saya menggunakan dibangun di VirtualBox. Karena saya menggunakan pendekatan ini jaringan eksternal dan penyimpanan cukup banyak manual, tetapi jika Anda menggunakan sesuatu seperti plugin gelandangan-aws Anda bisa beri tahu AWS untuk menyediakan suku cadang yang diperlukan untuk Anda.
Skrip penyediaan saya menggunakan poin ke lokasi aman yang berisi sertifikat CA dan kunci yang digunakan untuk menandatangani CSR bersama dengan
docker swarm join
token. Selain itu saya menginstal mesin buruh pelabuhan dan mengkonfigurasinya untuk bergabung dengan gerombolan (menginisialisasi jika tidak ada).Setelah itu diselesaikan, saya cukup melakukan
docker stack deploy
dari mesin lokal saya atau membangun kotak untuk menyebarkan tumpukan dengan semua yang saya butuhkan.Dalam kasus saya, saya hanya menjatuhkan koki yang mendukung hanya menggunakan skrip instalasi pos sederhana yang melakukan
yum
atauapt-get
pada skrip penyediaan saya.Saya juga menggunakan plugin pemicu gelandangan untuk menambahkan skrip tambahan sebelum menghancurkan (dalam kasus saya untuk meninggalkan segerombolan).
Bagian yang menyenangkan dari pemusatan dengan Vagrant adalah Anda dapat mereplikasi lingkungan pada sistem lain atau komputer tunggal untuk pengembangan hanya perlu menambah atau mengubah
provider
bagian tersebut. Pikiran Anda, saya belum melalui pengaturan OpenStack pada satu komputer untuk mengelola VirtualBox.sumber