Newsgroup: it.comp.os.linux.sys
Titolo: template ruby puppet e risultato incomprensibile

ciao a tutti.
 
ho un template puppet dove voglio assegnare la memoria al DB, in percentuale 
rispetto alla memoria di sistema. 
Eseguo quindi il seguente comando dal prompt irb: 
(`/bin/gawk '/MemTotal/{print $2}' /proc/meminfo`.to_f * 0.75 / 1000).floor
 
0.75 è parametrizzato, funziona, mi piace e ottengo il risultato sperato. 
Lo metto paro paro nel template: 
innodb-buffer-pool-size=<%= (`/bin/gawk '/MemTotal/{print $2}' /proc/meminfo`.to_f * @mariadb_total_memory_usage.to_f / 1000).floor %>M
 
e da completamente di matto. 
Ottengo un risultato circa 5 volte superiore. 
Qualcuno capisce la ratio che c'è dietro ... o molto velatamente, vi 
viene in mente un metodo più pulito? 
 
Non riesco ad usare bene la variabile memorysize di facter, perché nelle 
macchine con meno di 1GB il valore viene espresso in MB (causa del fatto 
che puppet a volte fa un po' cag....)

 innodb-buffer-pool-size=<%=
 
La butto al buio: prova con un non-printing tag, prova a leggere il 
file da Ruby.
 
-- 
Andrea
 


sto provando una via di mezzo: `/usr/bin/free`.split(' ')[7]
 
innodb-buffer-pool-size=<%= (`/usr/bin/free`.split(' ')[7].to_f * @mariadb_total_memory_usage.to_f / 1000).floor %>M
 
 
vediamo se funziona...

 vediamo se funziona...
 
Pazzesco. 
Ottengo lo stesso identico numero di cui sopra: un numero 4,8 volte più grande di quello che ottengo dal prompt di ruby.

Ottengo lo stesso identico numero di cui sopra: un numero 4,8 volte più grande di quello che ottengo dal prompt di ruby.
 
Prova a tirare fuori tutto l'output di /usr/bin/free. Viene fuori una roba che
in my.ini non va bene, certo; ma almeno capisci da dove viene quel numero. Poi
rimetti le cose a posto.
 
...su *quale* macchina viene eseguito quel template, a proposito?
 
Leonardo
 
-- 
 
Questi non hanno speranza di morte; e la lor cieca vita e' tanto bassa,
Che 'nvidiosi son d'ogne altra sorte. Fama di loro il mondo esser non lassa;
Misericordia e Giustizia li sdegna; non ragioniam di lor, ma guarda e passa.

 Prova a tirare fuori tutto l'output di /usr/bin/free. 
 
con `/usr/bin/free`.split(' ')[7] io trasformo l'output in array e prendo 
l'ottavo elemento (è simil python fin qui). 
 
Comunque, trattasi di una specie di strano baco sul puppet-master. 
 
1. se eseguo puppet con il puppet-master da di matto. 
2. se lo eseguo dal prompt ruby funziona alla perfezione.
3. se scarico i file yaml, template a classi ed eseguo puppet in modalità 
masterless funziona.
 
 
la cosa strana è che con la modalità masterless, uso comunque la stessa
versione di puppet. L'unica differenza consiste nel fatto che non 
carico i template dal socket del puppet master. 
bah.... 

 ...su *quale* macchina viene eseguito quel template, a proposito?
 
mi fai venire un dubbio....  che sta per trasformarsi in una 
stronzata :) 
Cioè, che in modalità master-less il template viene computato dal 
mio server linux (una redhat 64 bit 6.qualcosa). E fin qui non mi sbaglio.
Invece, nella modalità standard, il puppet master mi darebbe la pappa pronta. 
Ma penso che sto dicendo una stronzata vista l'ora tarda..... 
 
NOOOOOO CAZZOOOOOOO ... scusate la parola non gentile, ma adesso ho capito: 
il comando viene eseguito sul puppet master e mi viene fuori un parametro 
in base alla memoria installata sul puppet master! 
super-vaffa!
Pertanto ho trovato un modo per sapere che il puppet-master ha una memoria 
4,8 superiore alla mia.
 
 
Grazie per la domanda, che ha fatto scaturire la riposta :)

 mi fai venire un dubbio...
 
;-)


 
Devo usare il facter... se compare la stringa MB faccio il calcolo in un modo, se compare GB divido circa per mille 

 Devo usare il facter... se compare la stringa MB faccio il calcolo in un modo, se compare GB divido circa per mille
 
<% if @memorysize =~ /GB/ -%>
innodb-buffer-pool-size=<%= (@memorysize.gsub(' GB','').to_f * 1024 * @mariadb_total_memory_usage.to_f).floor %>M
<% elsif @memorysize =~ /MB/ -%>
innodb-buffer-pool-size=<%= (@memorysize.gsub(' MB','').to_f * @mariadb_total_memory_usage.to_f ).floor %>M
<% end -%>