https://www.cryingcloud.com/blog/2022/8/10/installing-ha-maas-metal-as-a-service
Ini adalah proses yang saya gunakan untuk menginstal MAAS dalam konfigurasi HA. Perjalanan instalasi Anda mungkin berbeda-beda, berdasarkan pilihan konfigurasi. Ini ditulis untuk berbagi pengalaman saya di luar penggunaan MAAS dalam konfigurasi Test/POC instans tunggal
Komponen & Versi
Ubuntu 20.04.4 LTS (Focal Fossa)
Postgres SQL 14.5 (replikasi streaming)
MAAS 3.2.2 (melalui snaps)
Proksi HA 2.6.2
Kaca 1.0.0
Konfigurasi Server (untuk referensi dalam pengaturan konfigurasi)
2x pengontrol Wilayah/API, 2x pengontrol Rak, 2x Server Umum
SV5-SU1-BC2-01 [DB Utama / Pengendali Wilayah / Proksi HA]
SV5-SU1-BC2-02 [DB Sekunder / Pengontrol Wilayah / Proksi HA]
SV5-SU1-BC2-03 [Pengontrol Rak / Kaca]
SV5-SU1-BC2-04 [Pengontrol Rak]
SV5-SU1-BC2-05 [Server Umum]
SV5-SU1-BC2-06 [Server Umum]
Prasyarat
Server yang digunakan dengan IP Statis
Akses Internet
pengalaman Linux/Ubuntu yang terbatas sangat membantu
Pengetahuan editor VIM (atau editor teks Linux lainnya)
Instalasi Postgres SQL Utama
Pertama, kita perlu menginstal Postgres SQL. Saya menggunakan replikasi streaming untuk memastikan ada salinan database. Anda dapat memilih metode lain untuk melindungi database Anda.
# INSTALL PRIMARY POSTGRES SQL
# Run on SV5-SU1-BC2-01 (Primary DB)
sudo apt update && sudo apt upgrade
sudo apt -y install gnupg2 wget vim bat
sudo apt-cache search postgresql | grep postgresql
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt -y update
sudo apt -y install postgresql-14
systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"
sudo -u postgres psql -c "SHOW data_directory;"
# CREATE USERS AND DATABASE FOR MAAS
# Run on SV5-SU1-BC2-01 (Primary DB) only
export MAASDB=maasdb
export MAASDBUSER=maas
# WARNING you have to escape special characters for the password
export MAASDBUSERPASSWORD=secret
sudo -u postgres psql -c "CREATE USER \"$MAASDBUSER\" WITH ENCRYPTED PASSWORD '$MAASDBUSERPASSWORD'"
sudo -u postgres createdb -O $MAASDBUSER $MAASDB
# Check user and database via query
sudo -u postgres psql
# List databases
\l
# list users
\du
# drop DB
#DROP DATABASE <DBNAME>;
# quit
\q
# POSTGRESSQL LISTEN ADDRESS
sudo vi /etc/postgresql/14/main/postgresql.conf
# search for listen_addresses ='localhost' uncomment and edit listen_addresses ='*' save and quit
# ALLOW DATA ACCESS
sudo vi /etc/postgresql/14/main/pg_hba.conf
#add lines
# host maasdb maasdbuser 172.30.0.0/16 md5
# host replication maasdbrep 172.30.0.0/16 md5
# CHECK LOG FOR ERROR
tail -f /var/log/postgresql/postgresql-14-main.log
# Additional Commands
# PostgresSQL restart Command
# sudo systemctl restart postgresql
# Uninstall PostgresSQL
# sudo apt-get --purge remove postgresql postgresql-*
Konfigurasikan Replikasi Streaming SQL Postgres
# INSTALL SECONDARY POSTGRES SQL
# RUN on SV5-SU1-BC2-02 (Secondary DB)
sudo apt update && sudo apt upgrade
sudo apt -y install gnupg2 wget vim bat
sudo apt-cache search postgresql | grep postgresql
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt -y update
sudo apt -y install postgresql-14
systemctl status postgresql
sudo -u postgres psql -c "SELECT version();"
sudo -u postgres psql -c "SHOW data_directory;"
# RUN on SV5-SU1-BC2-01 (Primary DB)
# CREATE REPLICATION USER
export MAASREPUSER=maasdbrep
export MAASREPASSWORD=secret
sudo -u postgres psql -c "CREATE USER \"$MAASREPUSER\" WITH REPLICATION ENCRYPTED PASSWORD '$MAASREPASSWORD'"
# CREATE REPLICATION SLOT
# RUN on SV5-SU1-BC2-01 (Primary DB)
sudo -u postgres psql
select * from pg_create_physical_replication_slot('maasdb_repl_slot');
select slot_name, slot_type, active, wal_status from pg_replication_slots;
# CONFIGURE REPLICATION
# RUN on SV5-SU1-BC2-02 (Secondary DB)
sudo systemctl stop postgresql
sudo -u postgres rm -rf /var/lib/postgresql/14/main/*
sudo -u postgres pg_basebackup -D /var/lib/postgresql/14/main/ -h 172.30.9.66 -X stream -c fast -U maasdbrep -W -R -P -v -S maasdb_repl_slot
# enter password for maasdbrep user
sudo systemctl start postgresql
# CHECK LOG FOR ERROR
tail -f /var/log/postgresql/postgresql-14-main.log
# CHECK REPLICATION
# RUN on SV5-SU1-BC2-01 (Primary DB)
sudo -u postgres psql -c "select * from pg_stat_replication;"
Pengendali Wilayah Instalasi MAAS
# All Hosts
sudo snap install --channel=3.2 maas
# INITIATE FIRST CONTROLLER
# Run on SV5-SU1-BC2-01
sudo maas init region --database-uri "postgres://maas:secret@SV5-SU1-BC2-01/maasdb" |& tee mass_initdb_output.txt
## use default MAAS URL, Capture MAAS_URL
# INITIATE SECOND CONTROLLER
# Run on SV5-SU1-BC2-02
sudo maas init region --database-uri "postgres://maas:secret@sv5-su1-bc2-01/maasdb" |& tee mass_initdb_output.txt
# Capture MAAS_SECRET for additional roles
sudo cat /var/snap/maas/common/maas/secret
# CREATE ADMIN
# follow prompts, can import SSH keys via lanuchpad user
sudo maas createadmin
Instal Pengontrol Rak
# INSTALL RACK CONTROLLERS
# run on SV5-SU1-BC2-03 & SV5-SU1-BC2-04
sudo maas init rack --maas-url $MAAS_URL --secret $MAAS_SECRET
# CHECK MAAS SERVICES
sudo maas status
# CONFIGURE SECONDARY API IP ADDRESS
sudo vi /var/snap/maas/current/rackd.conf
# Update contents of file to include both API URLs
maas_url:
- http://172.30.9.66:5240/MAAS
- http://172.30.9.57:5240/MAAS
Instal HA Proxy untuk Pengontrol Wilayah / API
# INSTALL HAPROXY BINARIES
# run on SV5-SU1-BC2-01 and SV5-SU1-BC2-02
sudo add-apt-repository ppa:vbernat/haproxy-2.6 --yes
sudo apt update
sudo apt-cache policy haproxy
sudo apt install haproxy -y
sudo systemctl restart haproxy
sudo systemctl status haproxy
haproxy -v
# CONFIGURE HA PROXY
sudo vi /etc/haproxy/haproxy.cfg
# update this content
timeout connect 90000
timeout client 90000
timeout server 90000
# insert this content at the end of the file
frontend maas
bind *:80
retries 3
option redispatch
option http-server-close
default_backend maas
backend maas
timeout server 90s
balance source
hash-type consistent
server maas-api-1 172.30.9.66:5240 check
server maas-api-2 172.30.9.57:5240 check
sudo systemctl restart haproxy
Tambahkan catatan Host ke DNS

Telusuri MAAS melalui nama DNS
Aktifkan VLAN DHCP
Pertama pergi ke Subnet untuk mencari jaringan sekunder

Anda perlu menambahkan setidaknya rentang dinamis. Anda mungkin ingin menyertakan rentang cadangan umum

Sekarang kita dapat menambahkan server DHCP ke Fabric, pilih VLAN yang berisi subnet Anda

Berikan DHCP, Anda sekarang dapat memilih pengontrol rak primer dan sekunder dan klik konfigurasikan DHCP

Pesan Server Pertama
Temukan server yang dapat Anda boot PXE untuk menguji konfigurasi DHCP

Selama server dapat berkomunikasi di jaringan, Anda akan melihatnya mengambil alamat IP dari rentang dinamis yang kami tentukan

gambar ubuntu akan dimuat dan Maas akan mulai mendaftarkan server ke dalam basis datanya

kembali ke konsol kita dapat melihat server telah diberi nama acak dan sedang melakukan commissioning

Server telah terdaftar dan sekarang terdaftar sebagai 'Baru'

Kita dapat menugaskan server untuk membawanya di bawah Kontrol Maas

ada opsi tambahan yang dapat Anda pilih dan tes lain yang dapat Anda jalankan, lihat Maas.io untuk informasi lebih lanjut

Anda dapat menguji perangkat keras, Disk, memori, dan CPU Anda untuk mengetahui potensi masalah

Anda dapat mengedit nama server dan memeriksa bagian komisioning, pengujian, dan log saat server sedang dikomisioning
Akhirnya, Anda akan melihat status server sebagai siap. Kami memiliki nama baru untuk server ini dan kami dapat melihat bahwa 'Commissioning' dan 'Tests' semuanya berhasil.
berikut adalah dua server yang ditugaskan di MAAS 'Siap' untuk digunakan dalam lingkungan pengujian ini
untuk contoh yang lebih besar saya dapat menunjukkan kepada Anda di lingkungan lab kami, kami memiliki 195 server di bawah kendali Maas dengan 48 tag dinamis untuk membantu mengatur dan mengelola perangkat keras kami
Membuat Tag Server
Akan lebih mudah untuk mengatur server dengan menggunakan tag berdasarkan jenis perangkat keras. Mari kita buat 3 tag untuk mengidentifikasi vendor perangkat keras, model server, dan model CPU.
Pilih 'Log' dan 'Unduh' dan pilih 'Keluaran Mesin (XML) untuk mengunduh file server XML

di sini Anda dapat menelusuri berkas tersebut sehingga Anda dapat menemukan konten yang Anda perlukan untuk membuat pencocokan regex. Anda perlu memahami cara membuat pencarian regex. Ada contoh dan situs web yang dapat membantu dalam hal ini.

Kembali ke 'Mesin' dan pilih 'Tag'

pilih 'Buat Tag Baru'
//node[@class="system"]/product = "ProLiant BL460c Gen8 (745916-S01)"
//node[@class="system"]/vendor = "HP"
//node[@id="cpu:0"]/product = "Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz"
Anda dapat melihat tag dinamis yang terkait dengan server pertama yang Anda komisikan

Menyebarkan Gambar
pertama mari kita unduh image ubuntu tambahan image LTS terbaru 22.04
Gambar akan diunduh dan disinkronkan dengan pengontrol rak


Sebelum menyebarkan gambar ini, pastikan kita telah mengimpor kunci SSH. Saya telah membuatnya menggunakan PuTTYgen. Saya tidak akan membahas pembuatan atau pengunggahan kunci ini di sini, lihat dokumentasi yang ada. Di lingkungan Lab, ini mencakup kunci administrasi saya dan kunci umum yang dibagikan dengan admin lain.

Pilih 'Mesin', pilih 'Siap'

kita tidak bisa
Sewa Jangka Panjang DHCP
Anda mungkin ingin mempertimbangkan untuk memperpanjang waktu sewa DHCP untuk subnet dengan menggunakan cuplikan. Kami menggunakan DHCP untuk manajemen OOB dan memperpanjang waktu sewa akan memberikan kontinuitas tambahan pada perangkat jaringan sekaligus berupaya mengurangi kompleksitas konfigurasi.
Tambahkan Statistik Pendengaran ke Proxy HA
# CONFIGURE HA PROXY
sudo vi /etc/haproxy/haproxy.cfg
# insert this content at the end of the file
listen stats
bind localhost:81
stats enable # enable statistics reports
stats hide-version # Hide the version of HAProxy
stats refresh 30s # HAProxy refresh time
stats show-node # Shows the hostname of the node
stats uri / # Statistics URL
sudo systemctl restart haproxy
Telusuri alamat DNS umum dan port statistik
Pasang Kaca (Pemantauan DHCP)
# INSTALL GLASS
sudo apt-get install -y nodejs
nodejs -v
cd /opt
sudo git clone https://github.com/Akkadius/glass-isc-dhcp.git
cd glass-isc-dhcp
sudo mkdir logs
sudo chmod u+x ./bin/ -R
sudo chmod u+x *.sh
sudo apt install npm -y
sudo npm install
sudo npm install forever -g
sudo npm start
# CONFIGURE GLASS
sudo vi /opt/glass-isc-dhcp/config/glass_config.json
"leases_file": "/var/snap/maas/common/maas/dhcp/dhcpd.leases",
"log_file": "/var/snap/maas/common/log/dhcpd.log",
"config_file": "/var/snap/maas/common/maas/dhcpd.conf",
# START GLASS
sudo npm start

telusuri nama atau IP server pada port 3000 dan Anda dapat melihat antarmuka.

konten ini dari sistem Lab utama dengan lebih banyak data

Anda dapat menggunakan antarmuka ini untuk mencari data seperti alamat mac atau alamat IP dan melihat data sewa awal dan akhir
Ada detail lebih lanjut tentang cara mengonfigurasi solusi ini di proyek GitHub itu sendiri
Akses API baris perintah
Terkadang Anda hanya ingin mendapatkan data dari baris perintah. Maas memiliki sejumlah operasi yang dapat dilakukan dari baris perintah. Dalam contoh ini, kita akan mengambil kata sandi pengguna MAAS untuk iLO
Anda perlu mendapatkan kunci API Anda, ditemukan di bawah nama pengguna Anda dan 'Kunci API' pilih salin
SSH ke salah satu host MAAS Anda, jalankan perintah
maas login <nama pengguna> <url api> <kunci api>
dokumentasi maas.io berisi informasi lebih lanjut tentang perintah API MAAS | API . Menjalankan maas <username> akan menunjukkan kepada Anda perintah-perintah
mari kita lihat apa yang bisa dilakukan oleh operasi mesin
terdapat operator parameter daya dan operasi mesin memerlukan system_id. Untuk menjaga contoh ini tetap sederhana, kita akan mengambil kode mesin dari browser, tetapi Anda bisa mendapatkan informasi ini dari baris perintah
jika kita menggabungkan semua ini, kita sekarang dapat menjalankan perintah dan mengekstrak kata sandi iLO dari database MAAS melalui API di baris perintah
Pemecahan Masalah IPMI - Alat IPMI
MAAS bekerja dengan sangat baik dalam mengambil alih perangkat keras apa pun, mengendalikan port manajemen iLO/BMC/Drac/OOB, dan membuat pengguna untuk mem-boot dan mengendalikan perangkat keras server. Jika Anda menelusuri mesin Anda dan memilih konfigurasi, Anda dapat melihat bagian konfigurasi daya.

Ini berisi pengaturan yang digunakan MAAS untuk mengendalikan perangkat keras tersebut.
Pada kesempatan langka, Anda mengalami masalah, pertama-tama pastikan firmware Anda mutakhir. Saya memasang alat IPMI yang dapat membantu untuk menguji atau memecahkan masalah operasi IPMI secara manual. Kita dapat menggunakan rincian yang dikumpulkan pada langkah sebelumnya untuk menjalankan kueri
# INSTALL IPMPTOOL
# Run on SV5-SU1-BC2-03 and SV5-SU1-BC2-04 where IPMI operations take place
sudo apt install ipmitool -y
ipmitool -I lanplus -H 172.20.10.177 -U maas -P 8in0zOE1Lxx -L OPERATOR power status

Menjalankan Kueri PowerShell pada keluaran API
Dan sekarang topik favorit saya… PowerShell. Sekarang bayangkan Anda dapat mengendalikan MAAS melalui kueri PowerShell Anda sendiri… Saya tahu, kan?!?
# INSTALL POWERSHELL
# Update the list of packages
sudo apt-get update
# Install pre-requisite packages.
sudo apt-get install -y wget apt-transport-https software-properties-common
# Download the Microsoft repository GPG keys
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
# Update the list of packages after we added packages.microsoft.com
sudo apt-get update
# Install PowerShell
sudo apt-get install -y powershell
# Start PowerShell
pwsh
# SIMPLE EXAMPLE QUERY
maas maasadmin machines read | convertfrom-json
maas maasadmin machines read | convertfrom-json | select resource_uri

Apa lagi yang mungkin? Katakanlah Anda memiliki chassis blade dan melalui kekuatan manajemen terpusat, Anda mem-boot semua blade secara PXE sekaligus. MAAS akan mendaftarkan ratusan host.
Apakah Anda ingin mencocokkan nomor seri slot bilah dengan nomor sasis?
Terima kasih, tapi itu akan menjadi penolakan yang tegas dariku.
bagaimana dengan PowerShell?
Sangat!
# SCRIPT TO SET MACHINE NAME
# Find the serial number of each Chassis and define prefix
$scaleunit = @{ '8Z35xxx' = 'SV5-SU3-BC1';'8Z56xxx' = 'SV5-SU3-BC2';'11N7xxx' = 'SV5-SU3-BC3';'G7S6xxx' = 'SV5-SU3-BC4';'DBR6xxx' = 'SV5-SU3-BC5'}
# Read machines into a variable
$machines = maas maasadmin machines read | ConvertFrom-Json
# process variables and set hostname
foreach ($machine in $machines){
$chassis = ($machine.hardware_info.chassis_type)
#Grab info for M1000e blades
if ($chassis -eq "Multi-system chassis") {
# Find blade slot
$slot = ($machine.hardware_info.mainboard_serial).split(".")[3]
$chassisid = ($machine.hardware_info.chassis_serial)
$suname = $scaleunit.$chassisid
$newname = "$suname-$slot"
write-host $newname
if ($newname -ne $machine.hostname) {
maas maasadmin machine update $machine.system_id hostname=$newname
}
}
else {}
}
Ini hanyalah salah satu contoh bagaimana Anda dapat memanfaatkan data MAAS. Anda dapat menggunakannya untuk memperbarui CMBD Anda. Dalam gambar di bawah ini, kami menggunakan jalur Sunbirds DC untuk mengelola perangkat keras dan telah membuat bidang khusus yang dibuat secara dinamis dan akan menghubungkan Anda langsung ke MAAS untuk menemukan server tertentu.
Ada banyak hal yang dapat Anda lakukan untuk mengintegrasikan MAAS ke lingkungan Anda untuk mengurangi beban pengelolaan perangkat keras lama.