[WORKAROUND] Túlbuzgó puppet

Fórumok

Adva van egy server cluster és abban egy server. Ez a server a telepítéskor megkapta a 10.x.y.z IP címet. Az üzembe álláskor azonban kapott, egy újabb, külső IP-t: a.b.c.d

Mivel a serverek configurálását puppet -el végzem erre is felkerült és ez állítja be az snmpd -t a serveren. A config augeas template -ből generálódik, oly módon, hogy egy facter -rel megnézem az eth0 -ra felhúzott global scope -u ip -t és beteszem egy fact -ba, aminek eth0_global_ip a neve.

Az augeas template ide vonatkozó része:

# Listen for connections
agentAddress udp:<%= eth0_global_ip %>:161,udp:127.0.0.1:161

Na ez eddig a mese része...

Az IP váltáskor, amíg jobb ötletem nem támad, ezen a node -on az snmp class -t kivettem a futtatandók közül és ekkor jött a meglepetés:
restore -oltam a korábbi configot, majd újra indítottam az snmpd -t. Helyre is jött minden, de a puppet következő futásakor vissza került a külső IP -s konfig.

Tehát a kérdés, a puppet honnan veszi, hogy ezt az osztályt (snmp) le kell futtatni és hogyan kérhetem meg, hogy felejtse el azt.

(Nem annyira szeretném átírni az snmp confoló osztályt, ha nem muszály)

Hozzászólások

nincs véletlenül parent class beállitva, multkor engem az szivatott...

Az van, hogy hiera_include() van:


node default {
    if( $kernel == "Linux" ) {
        hiera_include("classes")
    }
}

Ez pedig a server_fqdnje.yaml idevágó része:

classes:
  - common::network_time
  - common::compressor
  - common::http_ftp_clients
  - common::tools
  - ssh
  - ssh::server
  - nrpe
  - sysctl
  - users
  - ocsinventory::agent
  - serverinfo
  - vim
  - vim::vimrc

----
올드보이

En a helyedben nem az eth0 IP cimet vennem, hanem hieraban confolnek explicit IP cimet a halozatnak es arra referenciat adnek at az snmpd-nek. Sokkal uzembiztosabb, hiszen korant sem biztos, hogy az eth0 lesz a belso interfaced. Igy aztan nem fog megszivatni a puppet futtatas sem.

Ha kell egy pelda, tudod hogy hol talalsz meg. :)

--
Pásztor János
Sole Proprietor @ Opsbears
Development Lead @ IXOLIT

Az alap eset megtervezésére igaz, de ettől még nem értem miért viselkedik így a puppet, hiszen ettől még előferdülhet, hogy egy osztályra nincs szükségem, mert amit az confolt az már az adott hoszton nem érvényes.

----
올드보이

A --debug az mit mond? Nekem sokat szokott segiteni.
--
"ssh in a for loop is not a solution" – Luke Kanies, Puppet developer

Egyelőre workaround -oltam a problémát, mivel a debug kimenetből csak annyi derül ki, hogy az snmp class lefut. a logban pedig csak a normál működés logsorai vannak.

Jövőhét folyamán csinálok egy teszt hostot aztán kiderül mi történik.

Jelenleg anyit csináltam, hogy hiera -ba betettem egy stringet, ami ha létezik akkor azt teszem a template -be ha nem létezik akkor az eredeti fact tartalmát.

Köszönöm a tippeket mindenkinek!

----
올드보이