Come copiare i file su tutte le macchine usando Puppet Master?


12

Ho installato Puppetmaster in Ubuntu 11.04 e ho installato Puppet in tutti i miei client. Ho unito tutti i miei clienti fantoccio con il burattinaio. È possibile copiare un file su tutti questi client fantoccio dal burattinaio?

Per esempio:

Ho il file denominato datas.xls sul mio desktop (Puppet Master). Come copio questi file su tutti i miei client fantoccio nella seguente posizione (/ home / operator1 / Desktop / Backup /)?

Aggiornare:

  • Salve, il file non viene condiviso.
  • Come modificare questa riga puppet:///modules/module_name/datas.xlsil file da copiare si trova in questa posizione /etc/puppet/modules/mymodule/manifests/datas.xls?

Errore sul client: (risolto)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Errore 2 sul client:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

Nuovo aggiornamento:

Come applicare questo modulo a tutti i nodi? In modo tale che il file verrà copiato in tutti i nodi.


... ma non hai già posto questa domanda? askubuntu.com/questions/61080/…
fossfreedom

Sì, ma la soluzione non funziona più.
karthick87,

Inoltre non è molto chiaro, l'utente ha appena copiato il contenuto da alcuni siti Web.
karthick87,

Non c'è ancora un motivo per fare una nuova domanda (?) Tra cui ho copiato quello da un link che Jorge mi ha dato e mi ha detto di c / p;; afaik cosa c'è in quella risposta funziona ancora !?
Rinzwind,

Risposte:


24

Puppet è un po 'un mostro per aggirare la testa, quindi imparare dall'esempio non è una cosa negativa. Nel seguito suppongo che tu stia utilizzando i moduli: per favore, in un commento, se non lo sei o se hai bisogno di maggiori dettagli su come mettere insieme il modulo.

Diciamo che avvii un nuovo modulo chiamato mymodule. Nella directory principale delle marionette (di solito /etc/puppet) sul master delle marionette è necessario creare la directory manifest e files del modulo:

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

Quindi crea un file nella directory denominata init.ppe inserisci:

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

Quindi inserire il datas.xlsfile nella directory del modulo files- in questo esempio in modules/mymodule/files/. (Nota che può esserci anche una templatesdirectory per i modelli ).

Nel manifests/site.ppfile devi importare il modulo e includere la classe facendo qualcosa del tipo:

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

Assicurati che tutti i tuoi nodi ereditino dalla base e che dovrebbe essere tutto ciò che devi fare. A partire dal pupazzo 0.25 puoi usare espressioni regolari nel nome del nodo, ad esempio:

node server[0-9] inherits base {}

Fammi sapere nei commenti se hai bisogno di ulteriori chiarimenti.

Configurare un client per parlare con il burattinaio

Sul client, devi fare:

sudo apt-get install puppet

Quindi modifica /etc/default/puppete modifica START=noin START=yes.

Inoltre, modifica /etc/puppet/puppet.confe aggiungi una riga alla [main]sezione per indicare dove trovare il burattinaio:

server=puppet.mydomain.com

Quindi possiamo eseguire un test con sudo puppetd --test. In caso di errori chiave, potrebbe essere necessario passare al server principale delle marionette e firmare la chiave client. Per controllare il nome esatto che puoi fare sudo puppetca --liste poi sudo puppetca --sign server1.mydomain.com(o qualunque sia il nome del server dal comando list).

Ora inizia il servizio di marionette con sudo service puppet starte dovresti essere via. Il servizio fantoccio verrà eseguito ogni ora, quindi se aggiorni le tue ricette fantoccio verranno aggiornati anche tutti i tuoi clienti.

Eliminazione di file

Noto nella domanda originale che volevi sapere come eliminare i file. Dovresti modificare l' manifests/init.ppessere

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

Altri consigli utili

Se hai problemi ci sono alcune cose che puoi fare. Su qualsiasi macchina con pupazzo installato è possibile verificare la sintassi eseguendo

puppet --parseonly --ignoreimport myfile.pp

o controlla l'intero lotto togliendo la --ignoreimportbandiera, anche se questo può portare ad alcuni divertenti messaggi di errore che non sono realmente errori che ho trovato. Puoi anche eseguire il pupazzo dal vivo su una macchina client fantoccio facendo:

sudo puppetd --test

che mostra vari output utili, con errori e avvisi evidenziati in diversi colori. Se desideri ulteriori dettagli, puoi eseguire:

sudo puppetd --test --debug

ma questo generalmente genera così tanto output che è difficile guadare, quindi fallo solo se hai già provato i passaggi precedenti e sei bloccato e devi vedere tutto ciò che viene fatto.

Nota che questo si basa sul pupazzo 0.25.x che è quello che uso attualmente al lavoro, ed è anche la versione di Ubuntu 10.04. Il codice fantoccio nella sezione principale funzionerà sicuramente, ma le versioni successive di fantoccio hanno nuovi flag che possono aiutare con l'output di debug.


Fammi provare questa soluzione stasera e ti faccio sapere gli aggiornamenti. Grazie mille :)
karthick87

Come modificare questa riga, puppet:///modules/module_name/datas.xlsil file da copiare si trova in questa posizione/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87,

Il file da copiare deve essere inserito /etc/puppet/modules/mymodule/files/datas.xls: aggiornerò la risposta per essere più chiaro al riguardo.
Hamish Downer,

Oke grazie. come eseguire i manifest?
karthick87,

Come applicare questo modulo a tutti i nodi di Puppetmaster? Invece di applicarlo con forza a tutti i nodi eseguendopuppet agent --test
karthick87 il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.