Spacewalk untuk Natal

Halo, Habr!

Sesaat sebelum Natal, diputuskan untuk mempelajari Spacewalk di departemen TI - ini adalah sistem Red Hat, analog satelit gratis, untuk manajemen konfigurasi terpusat, pembaruan sistem, dan dukungan mudah untuk seluruh taman server.

Karena fakta bahwa dokumentasi yang tersedia di situs web resmi agak langka untuk komentar tambahan dari berbagai jenis pemecahan masalah, tugasnya adalah mempelajari produk untuk pengenalan bertahap pertama kali untuk menguji server, dan kemudian ke produk.

Gagasan utama untuk memperkenalkan Spacewalk bukan hanya sentralisasi dan penyederhanaan kontrol, tetapi juga agar tidak ada yang bisa memutakhirkan server server proyek baru dengan pena lucu, karena preseden sudah terjadi.

Setelah dua minggu bekerja, semua pengetahuan yang saya terima dimasukkan ke dalam analog internal Confluence, dan hari libur mendorong saya untuk menulis artikel tentang Habr.

Sebelum saya mulai, saya ingin menyoroti secara singkat apa yang dulu dan yang tidak terpengaruh, agar tidak berpura-pura menjadi manual lengkap untuk bekerja dengan Spacewalk:

+ Instalasi dan konfigurasi server / klien
+ Pengaturan sistem dalam GUI
+ Memecahkan masalah instalasi / memperbarui paket, bekerja dengan konfigurasi
+ Errata (mengumpulkan informasi tentang pembaruan kritis, kerentanan, dll.)

- Proxy (kebutuhan menghilang, setelah menyerah HA)
- tukang sepatu / kickstart
- OpenSCAP

Persyaratan sistem


Karena fakta bahwa seluruh infrastruktur berjalan pada VMWare, pekerjaan dilakukan pada VM yang menjalankan CentOS 7. Persyaratan sistem yang disarankan dari pengembang adalah:

  • RAM 4GB
  • 6GB ruang kosong untuk / var / satelit /
  • 12GB untuk DB

Saya menggunakan:

  • RAM 6GB
  • 4 CPU
  • HDD 40GB

Saya juga menyarankan Anda untuk menonaktifkan SELinux dan, jika tidak menggunakan, firewalld. Atau tambahkan layanan http ke pengecualian.

Catatan: di akhir artikel akan ada buku pedoman untuk Ansible, baik untuk bagian klien dan server, serta skrip bash. Dengan bantuan mereka, akan mungkin untuk mengerahkan seluruh infrastruktur dalam beberapa menit.

Instalasi


Instalasi itu sendiri dijelaskan dalam dokumentasi resmi dan di beberapa situs, namun, untuk integritas artikel, izinkan saya menyebutkan poin ini di sini.

Spacewalk bekerja dengan dua DBMS: PostgreSQL dan Oracle RDBMS. Saya memiliki pengalaman dengan yang pertama, dan saya akan menggunakannya sekarang.

Ada dua opsi instalasi: baik melalui penginstal otomatis dari Spacewalk, yang akan menginstal dan mengkonfigurasi sendiri dan database, namun, pada server yang sama, dan instalasi manual, di mana Anda dapat menempatkan DB dan aplikasi pada server yang berbeda. Saya akan mempertimbangkan kedua opsi, saya akan mulai dengan instalasi yang terpisah.

PostgreSQL


yum install -y postgresql-server 

Juga diperlukan untuk menghubungkan modul PL / Tcl untuk PG:

 yum install -y postgresql-pltcl postgresql-setup initdb systemctl start postgresql 

Buat database, pengguna, dan hubungkan modul:

 su - postgres -c 'PGPASSWORD=verystrong; createdb spcwlkdb ; createlang plpgsql spcwlkdb ; createlang pltclu spcwlkdb ; yes $PGPASSWORD | createuser -P -sDR spcwlkuser' 

Untuk menghindari masalah koneksi, ada baiknya mengubah /var/lib/pgsql/data/pg_hba.conf , menambahkan baris SEBELUM baris semua:

 local spcwlkdb spcwlkuser md5 host spcwlkdb spcwlkuser 127.0.0.1/8 md5 local spcwlkdb postgres ident 

Mulai ulang semuanya:

 systemctl restart postgresql 

Jika Anda bermaksud untuk menginstal aplikasi dan database pada server yang berbeda, pastikan bahwa paket postgresql-contrib diinstal pada server database.

Spacewalk


Kami menghubungkan repositori:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm 

Juga sambungkan epel:

 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

Jawa:

 (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) 

Sekarang secara langsung installer untuk Spacewalk-postgres:

 yum -y install spacewalk-setup-postgresql 

Terhubung ke basis data kami:

 spacewalk-setup-postgresql create --db spcwlkdb --user spcwlkuser --password verystrong 

Jika Anda menggunakan metode database / aplikasi yang terpisah, Anda harus menambahkan flag --standalone dan menentukan alamat IP dari server database, juga jangan lupa untuk membuka port 5432.

Catatan: Saya menyarankan menyetel basis data sesuai dengan perangkat keras Anda untuk operasi yang lebih produktif dari keseluruhan sistem.

Sekarang instal Spacewalk sendiri dan jalankan instalasi:

 yum -y install spacewalk-postgresql spacewalk-setup --external-postgresql 

Berikutnya, beberapa pertanyaan akan diajukan, baik mengenai sertifikat SSL dan database. Anda dapat memasukkan semua nilai secara manual, atau Anda dapat menggunakan flag --answer-file dan menentukan path ke file dengan jawaban untuk mengotomatisasi instalasi di masa depan:

 admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = HMP ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y 

Untuk mengontrol aplikasi secara langsung, Anda harus menggunakan:

 /usr/sbin/spacewalk-service [stop|start|restart] 

Untuk menampilkan semua layanan pihak ketiga yang berkontribusi pada aplikasi:

 spacewalk-service status 

Opsi Dua, instalasi otomatis


Setelah menghubungkan repositori, atur dan jalankan:

 yum -y install spacewalk-setup-postgresql yum -y install spacewalk-postgresql spacewalk-setup 

Sekali lagi, pertanyaan akan ditanyakan mengenai database dan SSL, kami menggunakan kunci --answer-file dan path ke file dengan jawabannya.

Saluran Pangkalan & Anak, Repos


Untuk mengelola stasiun klien, Spacewalk menggunakan sistem saluran yang disebut, yang dapat berupa main (child) atau child (child), repositori yang Anda perlukan dilampirkan ke setiap saluran, serta kunci - dengan klien yang dipasangkan dengan server.

Akibatnya, repositori disinkronkan dengan saluran, yang, pada gilirannya, terhubung dengan klien, dan Spacewalk berfungsi secara umum. Errata, yang dapat dikaitkan dengan saluran, juga layak disebut, yang menyederhanakan pembaruan dan kontrol paket.

Semua klien dapat dikelompokkan berdasarkan berbagai kriteria, baik dengan saluran yang sama dan dengan saluran atau repositori yang berbeda. Hal ini dimungkinkan untuk bekerja dengan sejumlah besar klien sekaligus, yang membantu untuk membuat pembaruan di 100+ server.

Daftar semua paket yang diinstal tersedia, dan setelah sinkronisasi repositori dan mungkin untuk instalasi. Beberapa poin intuitif, dan tidak masuk akal untuk mempertimbangkan setiap item baris demi baris.

Semua tindakan di Spacewalk berlangsung sesuai jadwal (Jadwal), hampir semua tindakan dapat dikonfigurasi untuk waktu yang paling nyaman bagi Anda.

Setelah instalasi, akan mungkin untuk pergi ke alamat server Anda, melakukan konfigurasi lebih lanjut melalui antarmuka grafis:



Masukkan kata sandi, nama administrator, nama organisasi (yang juga merupakan salah satu cara untuk mengelola klien), dan buka panel mulai.

Untuk saat ini, Anda dapat menjelajahi sendiri opsi yang tersedia, atau beralih ke membuat saluran.

Channels - Kelola Saluran Software - Buat Saluran:



Saya merekomendasikan pengaturan nama saluran sesuai dengan jenis dan tipe OS yang akan terikat ke saluran ini, misalnya, CentOS_7_x86_64 , Anda dapat memilih sha256 dengan aman sebagai cek, bidang Ringkasan Channell dimaksudkan untuk deskripsi kecil saluran. Anda juga dapat secara opsional memberikan informasi tambahan.

Sekarang buat saluran anak dan ikat ke saluran utama. Kami menggunakan cara yang sama seperti membuat saluran utama, hanya di bidang Saluran Induk kami akan menunjukkan saluran yang sebelumnya dibuat.

Ikat repositori ke saluran utama dan anak perusahaan.
Channels - Kelola Gudang



Untuk saluran utama, saya menggunakan Sumber Daya Basis, untuk saluran tambahan - Pembaruan.

Setelah membuat repositori, Anda harus menghubungkannya ke saluran.
Channels - Kelola Saluran Software , buka saluran utama Anda, buka bagian Repositori.



Akan ada semua repositori yang dibuat, pilih yang Anda butuhkan, tandai, dan klik Perbarui Sumber Daya.

Selanjutnya, buka subkunci Sinkronisasi:



Di mana Anda dapat menyinkronkan repositori dan saluran, konfigurasikan jadwal untuk sinkronisasi.

Catatan: dalam kasus pena lucu saya, saya harus menghapus repositori standar dari sistem klien.

Instalasi klien, memasangkan klien dengan server, manajemen kunci, mengatur saluran konfigurasi


Seperti yang saya sebutkan sebelumnya, Spacewalk menggunakan sistem kunci dari Red Hat Network, yang digunakan untuk pemasangan dan manajemen.

Untuk membuat kunci, pergi ke Sistem - Kunci Aktivasi - Buat Kunci:



Semuanya sangat sederhana di sini, apakah perlu menyebutkan bahwa Anda dapat mengatur sendiri kunci Anda sendiri, formatnya akan selalu 1-XXXXXX , dan juga, setiap tombol terpasang ke saluran. Bendera Universal Default memaksa sistem baru untuk mengambil parameter kunci.

Instalasi Klien

Hubungkan repositori klien dan instal paket yang diperlukan:

 rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm 


Catatan: rhncfg-aksi dan deltarpm diperlukan agar konfigurasi dan kendali jarak jauh berfungsi dengan benar.

Spacewalk menggunakan rhn_check untuk menyinkronkan server klien, yang berjalan setiap 4 jam. Nilai ini dapat dikurangi menjadi 60 menit, tetapi bagi saya tidak ada opsi yang optimal, oleh karena itu ada dua opsi: gunakan osad, yang datang dengan Spacewalk, atau cukup tambahkan cronjob untuk rhn_check, misalnya, untuk setiap menit saat kami uji sistem, maka nilainya dapat diubah sesuka Anda.

 crontab -e * * * * * /usr/sbin/rhn_check 

Ini juga tidak akan salah untuk menambahkan / usr / bin / rhn-action-control --enable-all ke Cron juga, ini digunakan untuk menyebarkan konfigurasi, dan kadang-kadang menjadi bodoh.

Kami kembali ke manajemen kunci, dan menyalin ID kunci yang kami buat, dan mengeksekusi:

 rhnreg_ks --serverUrl=http://your-server-ip/XMLRPC --activationkey=1-YOURKEY --force 

Hanya saja, jangan lupa untuk mengubah IP dan nilai-nilai kunci untuk Anda sendiri. Sekali lagi, saya menyarankan Anda untuk menggunakan flag --force , karena saya melihat ada masalah tanpa menggunakan flag ini.

Kami kembali ke Sistem - Semua , kami senang melihat sistem kami. Anda sekarang dapat membukanya dan menjelajahi apa dan bagaimana di sana, tetapi untuk sekarang saya sangat merekomendasikan membuat grup untuk manajemen sistem yang lebih nyaman.

Sistem - System Goups - Buat Grup , isi nama dan deskripsi, simpan, buka grup yang baru dibuat, buka bagian Sistem dan tambahkan sistem ke grup.

Sekarang berlangganan sistem ke saluran, Sistem - Sistem Anda - Folder Perangkat Lunak - Subfolder Saluran Perangkat Lunak:



Pilih saluran Anda dan klik konfirmasi. Untuk bersenang-senang, Anda dapat mencoba menginstal paket, Perangkat Lunak - Paket - Instal .

Saluran konfigurasi

Untuk mengelola konfigurasi antara server klien / mesin lokal, serta remote control, ada baiknya mengatur saluran konfigurasi dan menghubungkan sistem ke sana.
Kita pergi ke Konfigurasi - Saluran Konfigurasi - Buat Saluran Konfigurasi , atur nama, deskripsi, simpan, lalu di Konfigurasi - Kelola Saluran Konfigurasi - Berlangganan Saluran dan tandatangani saluran konfigurasi ke saluran perangkat lunak, dan ke sistem.



Sekarang kita dapat menggunakan konfigurasi dari server dan mesin lokal, dan membuat partisi.

Konfigurasi - Tambah File - Buat File / Unggah File:



Selain itu, kami dapat mengirim perintah jarak jauh dalam bentuk skrip bash:



Saya mengingatkan Anda bahwa semua tindakan melalui Jadwal, daftar semua tindakan yang diterapkan pada sistem ini dapat ditemukan di bagian Acara:



Kesalahan

Salah satu fitur terpenting dalam Spacewalk adalah dukungan errata, yang dengan mudah mengikat ke saluran dan memungkinkan Anda untuk memantau tingkat pentingnya pembaruan terbaru. Ini dikonfigurasi secara langsung di server, selain skrip, Anda perlu mengunduh paket yang diperlukan untuk Pearl:

 yum -y install perl-Frontier-RPC perl-Text-Unidecode wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl chmod +x errata-import.pl 

Kemudian buat pembaruan utama dan skrip koleksi errata, yang akan disimpan di / etc / rhn /:

 #!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='root' export SPACEWALK_PASS='verystrong' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS 

Dalam ekspor, tentukan nama dan kata sandi administrator Spacewalk, yang Anda tentukan di awal.

Mari kita membuat skrip dapat dieksekusi dan menambahkannya ke Cron:

 chmod +x spcwlk_errata.sh crontab -e 0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata.sh 

Mari kita jalankan sekarang untuk melihat perubahan pada antarmuka grafis. Eksekusi akan memakan waktu.



Ringkasan


Poin penting, menurut pendapat saya, yang secara pribadi saya lewatkan, adalah menyiapkan dan menginstal proxy, serta meningkatkan seluruh sistem sebagai HA. Saya punya ide untuk mengkonfigurasi aplikasi melalui alat pacu jantung, dan melakukan sinkronisasi pada database. Akibatnya, diputuskan untuk meninggalkan ide ini, mengingat armada server stasiun klien yang tidak terlalu besar. Namun, jika sistem terbukti sangat berguna dalam enam bulan ke depan, Anda mungkin harus memperluas server asli.

Otomasi


Server:

Skrip Bash untuk penyebaran server (DISABLES firewalld):

 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm (cd /etc/yum.repos.d && curl -O https://copr.fedorainfracloud.org/coprs/g/spacewalkproject/java-packages/repo/epel-7/group_spacewalkproject-java-packages-epel-7.repo) yum -y install spacewalk-setup-postgresql spacewalk-postgresql wget perl-Frontier-RPC perl-Text-Unidecode perl-XML-Simple # mkdir /usr/share/spcwlk-tmp/ echo 'admin-email = root@localhost ssl-set-cnames = spcwlkserver ssl-set-org = Unicorn ssl-set-org-unit = EOH ssl-set-city = Prague ssl-set-state = SCK ssl-set-country = CZ ssl-password = verystrong ssl-set-email = root@localhost ssl-config-sslvhost = Y db-backend=postgresql db-name=spcwlkdb db-user=spcwlkuser db-password=verystrong db-host=localhost db-port=5432 enable-tftp=Y' > /usr/share/spcwlk-tmp/spcwlk_answer spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer # systemctl stop firewalld systemctl disable firewalld # 


Script Bash untuk menginstal errata (pertama-tama atur nama dan kata sandi untuk administrator Spacewalk):
 #!/bin/sh # wget https://raw.githubusercontent.com/stevemeier/cefs/master/errata-import.pl -P /etc/rhn/ echo '#!/bin/bash cd /etc/rhn/ wget -N http://cefs.steve-meier.de/errata.latest.xml wget -N https://www.redhat.com/security/data/oval/com.redhat.rhsa-all.xml export SPACEWALK_USER='gui username' export SPACEWALK_PASS='Password to your gui account' ./errata-import.pl --server YourServerIPAddress --errata errata.latest.xml --rhsa-oval com.redhat.rhsa-all.xml --publish unset SPACEWALK_USER unset SPACEWALK_PASS' > /etc/rhn/spcwlk_errata.sh # chmod +x /etc/rhn/errata-import.pl chmod +x /etc/rhn/spcwlk_errata.sh # echo '#!/bin/bash # /etc/rhn/./spcwlk_errata.sh' > /etc/rhn/spcwlk_errata_cron.sh chmod +x /etc/rhn/spcwlk_errata_cron.sh echo '0 2 * * 7 /usr/bin/sh /etc/rhn/spcwlk_errata_cron.sh' >> /var/spool/cron/root /etc/rhn/./spcwlk_errata.sh # 


Playbook yang memungkinkan untuk penyebaran server (jangan lupa untuk menambahkan file jawaban):
 - hosts: spcwlk-server tasks: - name: Install Spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8/epel-7-x86_64/00736372-spacewalk-repo/spacewalk-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install epel repo yum: name: https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state: present - name: Install PostgreSQL packages yum: name: - spacewalk-setup-postgresql - spacewalk-postgresql - wget - perl-Frontier-RPC - perl-Text-Unidecode - perl-XML-Simple - name: Creates directory for Spacewalk answer file file: path: /usr/share/spcwlk-tmp/ state: directory mode: 0755 - name: Deploy answer file copy: src: /etc/ansible/spcwlk_answer dest: /usr/share/spcwlk-tmp/spcwlk_answer - name: Spacewalk Server Deploy shell: spacewalk-setup --answer-file=/usr/share/spcwlk-tmp/spcwlk_answer - name: Stop firewalld systemd: name: firewalld state: stopped enabled: no 


Pelanggan:

Skrip Bash untuk penerapan klien (jangan lupa tentang IP dan kunci):
 #!/bin/sh # rpm -Uvh https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm yum -y install rhn-client-tools rhn-check rhn-setup rhnsd m2crypto yum-rhn-plugin rhncfg-actions deltarpm wget echo '#!/bin/bash # /usr/sbin/rhn_check' > rhn_check.sh mv rhn_check.sh /etc/cron.hourly/ chmod +x /etc/cron.hourly/rhn_check.sh echo '* * * * * /usr/bin/sh /etc/cron.hourly/rhn_check.sh' >> /var/spool/cron/root /usr/bin/rhn-actions-control --enable-all cd /usr/share/rhn/ wget http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT rhnreg_ks --serverUrl=http://172.22.64.41/XMLRPC --activationkey=1-xxxxxxxxxxxxxxxxxxxxxxxxxxxx --force 


Playbook anisble untuk penyebaran klien:
 - hosts: spcwlk-clients tasks: - name: Install spacewalk repo yum: name: https://copr-be.cloud.fedoraproject.org/results/@spacewalkproject/spacewalk-2.8-client/epel-7-x86_64/00742644-spacewalk-repo/spacewalk-client-repo-2.8-11.el7.centos.noarch.rpm state: present - name: Install client packages yum: name: - rhn-client-tools - rhn-check - rhn-setup - rhnsd - m2crypto - yum-rhn-plugin - rhncfg-actions - deltarpm - wget - name: Create cronjob for rhn_check cron: name: "rhn_check" minute: "*" hour: "*" day: "*" month: "*" weekday: "*" job: "/usr/sbin/rhn_check" - name: Enable controls for config and remote control deployment shell: /usr/bin/rhn-actions-control --enable-all - name: Get certificate from server to client get_url: url: http://YourServerIPAddress/pub/RHN-ORG-TRUSTED-SSL-CERT dest: /usr/share/rhn/ - name: Register client to server rhn_register: state: present server_url: http://YourServerIPAddress/XMLRPC activationkey: "{{ activation_key }}" 


Terima kasih semua sudah membaca artikelnya. Semoga beruntung

Source: https://habr.com/ru/post/id435578/


All Articles