होस्टनाम सेट करने के लिए कठपुतली का उपयोग करें?


13

क्या कठपुतली का उपयोग करके सर्वर के होस्टनाम को सेट करने का कोई तरीका है?

मैं एक कस्टम प्रकार लिख सकता हूं, लेकिन शायद एक सरल तरीका है।

धन्यवाद

[संपादित करें] क्षमा करें, मुझे उल्लेख करना चाहिए था कि मैं कठपुतली को बेकार चलाता हूं, कठपुतली को पहले सेटअप किया जाता है और फिर वह सब कुछ सेट करता है।


एक हो सकता है, लेकिन मुझे एक का पता नहीं है। मुझे संदेह है क्योंकि सर्वर क्लाइंट के प्रमाणपत्र पर हस्ताक्षर नहीं करता है जिसमें होस्टनाम शामिल है। आम तौर पर होस्टनाम को तैनाती के दौरान सेट किया जाता है, फिर कठपुतली स्थापित की जाती है और सर्वर से जुड़ी होती है। मुझे नहीं पता कि आप कठपुतली के माध्यम से समय स्थापित करने के बाद इसकी सेटिंग को कैसे स्वचालित करेंगे।
साइरेक्स

क्षमा करें, मुझे उल्लेख करना चाहिए था कि मैं कठपुतली मास्टरलेस चलाता हूं, कठपुतली पहले सेटअप की जाती है और फिर यह सब कुछ सेट करता है।
आंद्रेई सेर्डेलियुक

जवाबों:


10

विचारों के लिए मेरी "नामकरण" परिभाषा पर एक नज़र डालें। यह डेबियन मान लेता है, और उबंटू पर भी काम कर सकता है।

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

मैं अनिवार्य रूप से एक ही काम करता हूं, इसके अलावा मेरे पास /etc/resolv.conf के लिए एक फ़ाइल संसाधन भी है, जो मेरे डोमेन की स्थापना करता है। मैं मास्टरलेस भी चलाता हूं।
फ्रांस्वा ब्यूसोइल

1

एक sethostname मॉड्यूल बनाएँ। यहाँ है 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


ध्यान दें कि $fqdnसही मूल्य होना चाहिए। आप $rsyslogलाइन भी हटा सकते हैं ।
14
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.