Dalam prosesnya, muncul ide untuk mengotomatiskan pengiriman skrip PowerShell, serta menyinkronkan kerja tim di antara administrator sistem dengan skrip yang berjalan pada server yang berbeda. Artikel ini dirancang untuk administrator menang sederhana yang tidak terbiasa dengan git, gitlab, ci / cd dan masalah devops lainnya, jadi jika Anda tertarik, silakan tanyakan di bawah cat.
Mari kita mulai dengan masalah yang muncul saat bekerja
- kurangnya versi;
- ketidakkonsistenan antar kolega saat menyelesaikan skrip;
- kehilangan skrip yang bermanfaat saat rekan kerja pergi;
- pengiriman naskah secara manual ke tempat-tempat pelaksanaannya;
- kekacauan dangkal.
Semua masalah ini sebenarnya kecil dalam kasus-kasus yang terisolasi, tetapi ketika semua ini sudah pada skala tim dan tumpukan skrip, saya ingin mengatur semuanya.
Untuk menyederhanakan hidup saya, saya menggunakan produk Gitlab yang luar biasa, sudah digunakan bersama kami dan digunakan oleh pembuat enkode. Saya tidak akan mempertimbangkan
proses instalasi gitlab dan
gitlab-runner , saya hanya akan mengklarifikasi bahwa kita sudah memiliki
gitlab yang telah dikonfigurasi
dengan otorisasi domain dan windows runner terpisah dengan
pelaksana powershell , yang akan melakukan tugas-tugas penyebaran kami. Untuk scripting saya menggunakan
Kode Visual Studio yang sangat baik.
Kami mengatur pekerjaan di gitlab
Jadi di sini kita mulai, sebagai permulaan kita perlu membuat grup di gitlab, yang akan mencakup semua administrator sistem kami.
Selanjutnya, tambahkan kolega kami ke Anggota dengan hak Pengembang dan Anda dapat mulai membuat proyek. Kami membuat proyek di grup kami, sehingga kolega kami secara otomatis akan mendapatkan akses ke sana.
Setelah membuat proyek, pada halaman pertama akan ada semua tips tentang topik "apa yang harus dilakukan selanjutnya." Dalam kasus kami, kami perlu memulai file yang ada dari workstation kami di gitlab. Sebagai contoh, semua ini terletak pada direktori "E: \ scripts \ powershellmegaproject". Gunakan prompt yang sesuai dan jalankan di komputer Anda:
cd E:\scripts\powershellmegaproject git init git remote add origin http://gitlab.domain.net/sysadminsdev/powershellmegaproject.git git add . git commit -m "Initial commit" git push -u origin master
Bingo! Semua file kami dari direktori "E: \ scripts \ powershellmegaproject" sekarang ada di proyek kami.
Apa selanjutnya Buka VSCode dan cobalah untuk membuat perubahan pada skrip powershell kami yang terletak di direktori ini. Setelah menyimpan file, kita akan melihat pemberitahuan di bagian Kontrol Sumber, tempat Anda dapat melihat perubahan dan membuat komit. Selanjutnya, kami mendorong ke server:
Mari kita periksa situs web proyek di gitlab, akan ada konten sebenarnya dari file tersebut, dan dalam sejarah commit, Anda dapat melacak perubahannya.
Pengaturan CI / CD
Saatnya untuk mengkonfigurasi pengiriman skrip ke server. Agar CI / CD berfungsi, pelari harus tersedia untuk proyek Anda. Anda dapat menetapkannya di admin gitlab - pelari, atau menggunakan pelari bersama.
Dan sekarang ke proyek. Agar CI / CD berfungsi, Anda perlu membuat file .gitlab-ci.yml dengan deskripsi tindakan dalam direktori dengan proyek kami (petunjuk dan bantuan tentang hal ini juga dapat dilihat saat membuka menu gitlab - CI / CD - Pipelines). Anda dapat memilih berbagai metode untuk mengirimkan file, dari hanya menyalin file ke rsync atau git pull ke server yang diinginkan. Karena kami sedang mempertimbangkan skenario paling sederhana, itu hanya akan menyalin PowerShell. Untuk melakukan ini, buat folder pada server target dengan skrip tersedia untuk umum di jaringan dan berikan perubahan akses kepada pengguna yang menjalankan layanan gitlab-runner kami.
Isi .gitlab-ci.yml dengan konten sederhana:
deploy_stage: variables: DEST_DIR: \\srv-megaserver\scripts\powershellmegaproject script: - remove-item -path $DEST_DIR\* -recurse - gci -Recurse | Copy-Item -Destination $DEST_DIR
Di sini kita menulis path ke direktori kita dalam sebuah variabel (dalam proyek lain Anda cukup menyalin file ini dan mengubah direktori tujuan) dan dengan perintah powershell sederhana, pertama-tama kita menghapus seluruh isi direktori, dan kemudian menyalin segala sesuatu dari proyek kami ke folder ini.
Komit, dorong perubahan, dan periksa. Dalam folder kami di server, semua file harus diperbarui. Anda dapat melihat status dan eksekusi Pipeline di bagian yang sama dari gitlab - ci / cd - pipelines kami, contoh dari eksekusi yang sukses:
Running with gitlab-runner 11.3.1~beta.4.g0aa5179e (0aa5179e) on gl-runner2-windows a24eda81 Using Shell executor... Running on SRV-GL-RUNNER2... Fetching changes... HEAD is now at e6e9a2c update ci file From http://gitlab.domain.net/sysadminsdev/powershellmegaproject e6e9a2c..5f5cfce master -> origin/master Checking out 5f5cfceb as master... Skipping Git submodules setup $ remove-item -path $DEST_DIR\* -recurse $ gci -Recurse | Copy-Item -Destination $DEST_DIR Job succeeded
Misalkan pada server ini tugas telah dikonfigurasi untuk menjalankan skrip ini dari proyek di penjadwal, sebagai akibatnya kami selalu mendapatkan eksekusi file proyek yang sebenarnya.Ada apa dengan rekan kerja?
Ini sederhana, buat folder untuk proyek, buka di ps / cmd dan kloning proyek untuk diri kita sendiri.
cd e:\projects git clone http://gitlab.domain.net/sysadminsdev/powershellmegaproject.git
Semuanya, lalu bekerja di VSCode dengan membuka folder, membuat komit dan mendorong.
Apa yang kita capai sebagai hasilnya?
- semua skrip disimpan dalam repositori;
- seluruh grup administrasi dapat bekerja dengan skrip;
- semua perubahan terlihat dalam cerita;
- setiap administrator yang baru dibuat segera melihat semua perkembangan dan dia tidak perlu menjalankan server dan mencari tahu "di mana-apa yang dilakukan";
- semua perubahan produktif secara otomatis dikirim ke "tempat kerja yang produktif".
Kami menghilangkan semua masalah kami, dan juga sangat menyederhanakan hidup kami sebagai sebuah tim.
Bonus
Tambahkan file README.md ke direktori proyek untuk menjelaskan apa yang terjadi dalam skrip ini.
Tambahkan file Changelog untuk menjelaskan perubahan.
ps: apa lagi yang bisa kamu lakukan? Anda dapat memutar pelari di buruh pelabuhan, Anda dapat mengkonfigurasi penjadwal dalam memungkinkan , Anda masih dapat melakukan banyak hal yang lebih rumit, tetapi tujuan dari artikel ini adalah untuk menyederhanakan pemahaman alat ini untuk pemula.