Kami telah melancarkan penyedia Terraform rasmi untuk bekerjasama dengan Selectel. Produk ini membolehkan pengguna melaksanakan pengurusan sumber sepenuhnya melalui metodologi Infrastruktur-sebagai-kod.
Pembekal pada masa ini menyokong pengurusan sumber perkhidmatan "Awan peribadi maya" (selepas ini dirujuk sebagai VPC). Pada masa hadapan, kami merancang untuk menambah pengurusan sumber untuk perkhidmatan lain yang disediakan oleh Selectel.
Seperti yang anda sedia maklum, perkhidmatan VPC dibina pada OpenStack. Walau bagaimanapun, disebabkan fakta bahawa OpenStack tidak menyediakan alat asli untuk menyediakan awan awam, kami melaksanakan fungsi yang hilang dalam set API tambahan yang memudahkan pengurusan objek komposit kompleks dan menjadikan kerja lebih mudah. Beberapa fungsi yang tersedia dalam OpenStack ditutup daripada penggunaan langsung, tetapi tersedia melalui API kami.
Penyedia Selectel Terraform kini termasuk keupayaan untuk mengurus sumber VPC berikut:
projek dan kuota mereka;
pengguna, peranan dan token mereka;
subnet awam, termasuk merentas wilayah dan VRRP;
lesen perisian.
Pembekal menggunakan pustaka Go awam kami untuk bekerja dengan API VPC. Kedua-dua perpustakaan dan pembekal itu sendiri adalah sumber terbuka, pembangunan mereka dijalankan pada Github:
Untuk mengurus sumber awan lain, seperti mesin maya, cakera, kelompok Kubernetes, anda boleh menggunakan penyedia OpenStack Terraform. Dokumentasi rasmi untuk kedua-dua pembekal boleh didapati di pautan berikut:
Untuk bermula, anda perlu memasang Terraform (arahan dan pautan ke pakej pemasangan boleh didapati di laman web rasmi).
Untuk beroperasi, pembekal memerlukan kunci API Selectel, yang dibuat dalam panel kawalan akaun.
Manifes untuk bekerja dengan Selectel dibuat menggunakan Terraform atau menggunakan set contoh siap sedia yang tersedia dalam repositori Github kami: terraform-contoh.
Repositori dengan contoh dibahagikan kepada dua direktori:
modul, mengandungi modul kecil boleh guna semula yang mengambil set parameter sebagai input dan mengurus set kecil sumber;
contoh, mengandungi contoh set lengkap modul yang saling berkaitan.
Selepas memasang Terraform, mencipta kunci API Selectel dan membiasakan diri dengan contoh, mari beralih kepada contoh praktikal.
Dalam fail vars.tf semua parameter yang akan digunakan semasa memanggil modul diterangkan. Sebahagian daripada mereka mempunyai nilai lalai, sebagai contoh, pelayan akan dibuat dalam zon ru-3a dengan konfigurasi berikut:
Jika perlu, anda boleh menentukan kunci awam yang berbeza. Kunci tidak perlu ditentukan sebagai laluan fail; anda juga boleh menambah nilai sebagai rentetan.
Selanjutnya dalam fail ini modul dilancarkan projek_dengan_pengguna и server_local_root_disk, yang menguruskan sumber yang diperlukan.
hujah abaikan_perubahan membolehkan anda mengabaikan perubahan atribut id untuk imej yang digunakan untuk mencipta mesin maya. Dalam perkhidmatan VPC, kebanyakan imej awam dikemas kini secara automatik sekali seminggu dan pada masa yang sama imejnya id juga berubah. Ini disebabkan oleh keistimewaan komponen OpenStack - Glance, di mana imej dianggap sebagai entiti tidak berubah.
Jika anda mencipta atau mengubah suai pelayan atau cakera sedia ada yang mempunyai sebagai hujah id_gambar digunakan id imej awam, kemudian selepas imej itu dikemas kini, menjalankan manifes Terraform sekali lagi akan mencipta semula pelayan atau cakera. Menggunakan hujah abaikan_perubahan membolehkan anda mengelakkan situasi sedemikian.
Nota: hujah abaikan_perubahan muncul dalam Terraform agak lama dahulu: tarik#2525.
hujah abaikan_ubah saiz_pengesahan diperlukan untuk berjaya mengubah saiz cakera tempatan, teras atau memori pelayan. Perubahan sedemikian dibuat melalui komponen OpenStack Nova menggunakan permintaan mengubah saiz. Nova lalai selepas permintaan mengubah saiz meletakkan pelayan ke dalam status verify_resize dan menunggu pengesahan tambahan daripada pengguna. Walau bagaimanapun, tingkah laku ini boleh diubah supaya Nova tidak menunggu tindakan tambahan daripada pengguna.
Argumen yang ditentukan membenarkan Terraform untuk tidak menunggu status verify_resize untuk pelayan dan bersedia untuk pelayan berada dalam status aktif selepas menukar parameternya. Hujah tersedia daripada versi 1.10.0 penyedia OpenStack Terraform: tarik#422.
Mencipta Sumber
Sebelum menjalankan manifes, sila ambil perhatian bahawa dalam contoh kami, dua pembekal berbeza dilancarkan dan pembekal OpenStack bergantung pada sumber pembekal Selectel, kerana tanpa membuat pengguna dalam projek, adalah mustahil untuk mengurus objek kepunyaannya. . Malangnya, atas sebab yang sama kita tidak boleh menjalankan arahan sahaja terraform terpakai dalam contoh kita. Pertama kita perlu lakukan memohon untuk modul projek_dengan_pengguna dan selepas itu untuk segala-galanya.
Nota: Isu ini belum diselesaikan dalam Terraform, anda boleh mengikuti perbincangan di Github di isu #2430 и isu #4149.
Selepas menjalankan arahan, Terraform akan menunjukkan sumber yang ingin dicipta dan meminta pengesahan:
Plan: 3 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Setelah projek, pengguna dan peranan telah dibuat, anda boleh mula mencipta sumber yang tinggal:
Anda boleh bekerja dengan mesin maya yang dicipta melalui SSH menggunakan IP yang ditentukan.
Mengedit Sumber
Selain mencipta sumber melalui Terraform, ia juga boleh diubah suai.
Sebagai contoh, mari kita tingkatkan bilangan teras dan memori untuk pelayan kami dengan menukar nilai untuk parameter pelayan_vcpus и pelayan_ram_mb dalam fail contoh/vpc/server_local_root_disk/main.tf:
Dalam kami contoh repositori Anda juga boleh melihat manifes untuk mencipta mesin maya dengan pemacu rangkaian.
Contoh mencipta kluster Kubernetes
Sebelum kita beralih kepada contoh seterusnya, kita akan membersihkan sumber yang kita buat sebelum ini. Untuk melakukan ini dalam akar projek terraform-examples/examples/vpc/server_local_root_disk Mari jalankan arahan untuk memadam objek OpenStack:
Dalam kedua-dua kes, anda perlu mengesahkan pemadaman semua objek:
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
Contoh ini mencipta projek, pengguna yang mempunyai peranan dalam projek dan menimbulkan satu gugusan Kubernetes. Dalam fail vars.tf anda boleh melihat nilai lalai, seperti bilangan nod, cirinya, versi Kubernetes, dsb.
Untuk mencipta sumber yang serupa dengan contoh pertama, pertama sekali kita akan mula memulakan modul dan mencipta sumber modul projek_dengan_penggunadan kemudian mencipta segala-galanya:
Kami akan memindahkan penciptaan dan pengurusan kluster Kubernetes melalui komponen OpenStack Magnum. Anda boleh mengetahui lebih lanjut tentang cara bekerja dengan kluster dalam salah satu daripada kami artikel sebelumnya, serta dalam asas pengetahuan.
Semasa menyediakan kluster, cakera dan mesin maya akan dibuat dan semua komponen yang diperlukan akan dipasang. Penyediaan mengambil masa kira-kira 4 minit, di mana Terraform akan memaparkan mesej seperti:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
Setelah pemasangan selesai, Terraform akan menunjukkan bahawa kluster sudah sedia dan memaparkan IDnya:
Untuk mengurus kelompok Kubernetes yang dibuat melalui utiliti kubectl anda perlu mendapatkan fail akses kluster. Untuk melakukan ini, pergi ke projek yang dibuat melalui Terraform dalam senarai projek dalam akaun anda:
Seterusnya, ikuti pautan seperti xxxxxx.selvpc.ruyang muncul di bawah nama projek:
Untuk maklumat log masuk, gunakan nama pengguna dan kata laluan yang anda buat melalui Terraform. Jika anda tidak menipu vars.tf atau utama.tf untuk contoh kami, pengguna akan mempunyai nama tf_user. Anda mesti menggunakan nilai pembolehubah sebagai kata laluan TF_VAR_user_password, yang dinyatakan pada permulaan terraform terpakai lebih awal.
Di dalam projek anda perlu pergi ke tab Kubernetes:
Di sinilah kluster yang dibuat melalui Terraform terletak. Muat turun fail untuk kubectl anda boleh pada tab "Akses":
Arahan pemasangan terletak pada tab yang sama. kubectl dan penggunaan yang dimuat turun config.yaml.
Selepas pelancaran kubectl dan menetapkan pembolehubah persekitaran KUBECONFIG anda boleh menggunakan Kubernetes:
Apabila bilangan nod berubah, kluster akan kekal tersedia. Selepas menambah nod melalui Terraform, anda boleh menggunakannya tanpa konfigurasi tambahan:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
tf-cluster-rz6nggvs4va7-master-0 Ready,SchedulingDisabled master 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-0 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-1 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-2 Ready <none> 3m v1.12.4
Kesimpulan
Dalam artikel ini kami berkenalan dengan cara utama untuk bekerja "Awan peribadi maya" melalui Terraform. Kami akan gembira jika anda menggunakan pembekal Selectel Terraform rasmi dan memberikan maklum balas.
Sebarang pepijat yang ditemui dalam pembekal Selectel Terraform boleh dilaporkan melalui Isu Github.