Gunakan boneka untuk mengatur nama host?


13

Apakah ada cara mengatur nama host server menggunakan boneka?

Saya bisa menulis jenis kustom, tapi mungkin ada cara yang lebih sederhana.

Terima kasih

[Sunting] Maaf, saya seharusnya sudah menyebutkan saya menjalankan wayang tanpa master, wayang diatur terlebih dahulu dan kemudian mengatur segala sesuatu yang lain.


Mungkin ada satu, tetapi saya tidak tahu. Saya menduga tidak ada karena server menandatangani sertifikat klien yang menyertakan nama host. Biasanya nama host ditetapkan selama penyebaran, kemudian wayang diinstal dan ditautkan ke server. Saya tidak tahu bagaimana Anda akan mengotomatiskan pengaturannya setelah menginstal waktu melalui boneka.
Sirex

Maaf, saya seharusnya sudah menyebutkan saya menjalankan wayang master, wayang adalah pengaturan pertama dan kemudian mengatur segala sesuatu yang lain.
Andrei Serdeliuc

Jawaban:


10

Lihatlah definisi "penggantian nama" untuk ide. Ini mengasumsikan Debian, dan mungkin bekerja di Ubuntu juga.

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",
    }
}

Saya pada dasarnya melakukan hal yang sama, kecuali saya juga memiliki sumber daya file untuk /etc/resolv.conf, mengatur domain saya. Aku juga berlari tanpa master.
François Beausoleil

1

Buat modul sethostname. Inilah 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


perhatikan bahwa itu $fqdnharus bernilai benar. Anda juga dapat menghapus $rsysloggaris.
confiq
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.