Usa il pupazzo per impostare il nome host?


13

Esiste un modo per impostare il nome host di un server usando il pupazzo?

Potrei scrivere un tipo personalizzato, ma forse c'è un modo più semplice.

Grazie

[Modifica] Mi dispiace, avrei dovuto menzionare che eseguo burattina senza master, il burattino viene prima impostato e poi imposta tutto il resto.


Potrebbe essercene uno, ma non ne conosco uno. Sospetto che non lo sia perché il server firma il certificato del client che include il nome host. Normalmente il nome host viene impostato durante la distribuzione, quindi fantoccio installato e collegato al server. Non so come automatizzeresti l'impostazione dopo il tempo di installazione via burattino.
Sirex,

Mi dispiace, avrei dovuto menzionare che eseguo burattina senza master, il burattino viene prima impostato e poi imposta tutto il resto.
Andrei Serdeliuc,

Risposte:


10

Dai un'occhiata alla mia definizione di "rinomina" per le idee. Presume Debian e potrebbe funzionare anche su Ubuntu.

define rename() {
    # We only need puppet so we can restart it. In practice, there's
    # little point in renaming a machine through puppet without a
    # running puppet service
    include puppet::conf

    # We only need apt because puppet management of its package
    include apt

    host { "$hostname": ensure => absent }

    host { "$fqdn": ensure => absent }

    $alias = regsubst($name, '^([^.]*).*$', '\1')

    host { "$name":
        ensure => present,
        ip     => $ipaddress,
        alias  => $alias ? {
            "$hostname" => undef,
            default     => $alias
        },
        before => Exec['hostname.sh'],
    }

    file { '/etc/mailname':
        ensure  => present,
        owner   => 'root',
        group   => 'root',
        mode    => 644,
        content => "${name}\n",
    }

    file { '/etc/hostname':
        ensure  => present,
        owner   => 'root',
        group   => 'root',
        mode    => 644,
        content => "${name}\n",
        notify  => Exec['hostname.sh'],
    }

    exec { 'hostname.sh':
        command     => '/etc/init.d/hostname.sh start',
        refreshonly => true,
        notify      => Service['puppet'],
    }
} 

define rename::domain() {
    rename { "${hostname}.${name}": }

    common::line { 'remove_old_domain':
        ensure => absent,
        file   => '/etc/resolv.conf',
        line   => "domain $domain",
    }

    common::line { 'add_new_domain':
        ensure => present,
        file   => '/etc/resolv.conf',
        line   => "domain $name",
    }
}

Fondamentalmente faccio la stessa cosa, tranne che ho anche una risorsa di file per /etc/resolv.conf, che imposta il mio dominio. Corro anche senza padrone.
François Beausoleil,

1

Crea un modulo sethostname. Ecco il init.pp:

class sethostname {
  file { "/etc/hostname":
    ensure  => present,
    owner   => root,
    group   => root,
    mode    => '0644',
    content => "$::fqdn\n",
    notify  => Exec["set-hostname"],
  }
  exec { "set-hostname":
    command => '/bin/hostname -F /etc/hostname',
    unless  => "/usr/bin/test `hostname` = `/bin/cat /etc/hostname`",
    notify  => Service[$rsyslog::params::service_name],
  }
}

https://gist.github.com/VertigoRay/6024253


notare che $fqdndeve essere un valore corretto. Puoi anche rimuovere la $rsysloglinea.
confiq
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.