Marek Soudny wrote on 2019/08/20 08:26:

Mirku, upgrad rsyncem me nikdy nenapadl, ale kdyz uz jsi ho zminil, rozumim tomu dobre, ze na 1 "builder" stroji udelas klasicky make buildworld, buildkernel, installkernel a installworld, vcetne rebootu a mergemaster(u) a vysledny (base?) system pak "jednoduse" rsyncnes, s osetrenim nejakyho exclude listu s /etc/{passwd,group,master.passwd}, na ostatni servery, ktery pak jenom rebootnes?

Ano, tak nejak to je. Nejdriv jsem pouzival centralni build, primountovany na ostatni masiny pres NFS, takze na cilovych strojich se spoustel uz jen installkernel a installworld. Coz sice funguje, ale i s kazdym patch level updatem se prepisuji vsechny soubory v base, coz na nekterych VM trva strasne dlouho, protoze jsou od provideral imitovane na 200 IOPS. Takze to, co normalne trva 2 minuty tam trva pul hodiny.

Takze pak jsem prisel s tim, udelat na buildserveru samostatny adresar, do ktereho udelam installkernel a installworld s nastavenim DESTDIR. Tim vznikne instalace bez souboru v /etc/, takze tohle uz se da rsyncem prenaset na ostatni stroje. Porad tam je ale problem s tim, ze se zmeni cas modifikace u souboru, u kterych se nezmenil jejich obsah (respektive byly prepsane stejnym obsahem). Sice se po siti nemusi obsah souboru prenaset, ale zmena casu na cilovem stroji stejne vyvola dalsi diskovou operaci. Tomu jsem se potreboval vyhnout.

Takze jsem to pak posunul jeste o kousek dal a na build serveru mam tech adresaru vice:

/vol0/rsync_updates/11.3-RELEASE_amd64
/vol0/rsync_updates/11.3-RELEASE-p1_amd64
/vol0/rsync_updates/11.3-RELEASE-p2_amd64
/vol0/rsync_updates/11.3-UPDATED_amd64
/vol0/rsync_updates/11.3-CHANGES_amd64

Takze kdyz vysla 11.3, udelal jsem make installkernel a installworld DESTDIR=/vol0/rsync_updates/11.3-RELEASE_amd64 Naklonoval ho do 11.3-UPDATED_amd64 (pouzivam ZFS) a z toho 11.3-UPDATED_amd64 se pak pouziva rsync pro kopirovani na cilove stroje

Kdyz vysla 11.3-RELEASE-p1, tak jsem udelal instalaci s DESTDIR do 11.3-RELEASE-p1_amd64. Nasledne pak spocitam checksumy pro vsechny soubory v 11.3-RELEASE_amd64 a v 11.3-RELEASE-p1_amd64 - tam, kde se checksum a velikost souboru lisi, soubor prekopiruju do 11.3-UPDATED_amd64 a do 11.3-CHANGES_amd64 Takze v 11.3-UPDATED_amd64 je zase kompletni base system (bez /etc/) v aktualni verzi a v 11.3-CHANGES_amd64 jsou jenom soubory, ktere se mezi RELEASE a RELEASE-p1 zmenily - to pro pripad, ze bych je chtel distribuovat i nejak jinak. Treba si z nich zabalit TAR atp.

Kdyz vysla 11.3-RELEASE-p2, tak se zase udela buildworld buildkernel, installkernel a installworld do adresare 11.3-RELEASE-p2_amd64, spocitaji checksumy, rozdilne soubory se nakopiruji do 11.3-UPDATED_amd64 a 11.3-CHANGES_amd64 a z 11.3-UPDATED_amd64 se to rsyncem roznese na cilove stroje.

Nemuzu zatim prohlasit, jak moc (ne)spolehlivy tenhle system je. Pouzivam to asi pul roku. Na zacatku bylo v planu pouzivat na version upgrade to reseni s NFS a jen na patch level updaty pouzivat rsync, ale jednou jsem si to omylem pustil na stroji, kde byla 10.4 a rsyncem jsem to upgradnul na 11.2. Takze kdyz to proslo a stroj nabootoval, trosku jsem si jeste pohral se scriptem, aby me to upozornilo na rozdilne verze atd., ale ted delam upgrady z 11.2 na 11.3 taky rsyncem a zatim jsem na problem nenarazil. Cimz nerikam, ze problem nastat nemuze. Urcite muze.

Zatim jsem mel ale daleko vetsi prusvih s tim, kdyz jsem se pokusil po tom rsync upgrade pouzit etcupdate misto stareho dobreho mergemasteru (necim se /etc/ updatovat musi, to rsync vyresit nemuze)

etcupdate mi na vsech strojich, kde jsem ho zkousel, zmeni prava na skriptech v /etc/rc.d - nenastavi jim spustitelnost - tem, ktere etcupdate musel mergovat - takze po rebootu nenabehly nejake sluzby a treba taky ldconfig.

Navic mi etcupdate hlasi konflikty i v souborech, do kterych jsem ja nezasahoval a mergemaster je dokaze sam v poklidu updatovat bez manualniho zasahu.

Pouzivate nekdo uspesne etcupdate?

Mirek
--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem