ใช้หุ่นเชิดเพื่อตั้งชื่อโฮสต์?


13

มีวิธีการตั้งค่าชื่อโฮสต์ของเซิร์ฟเวอร์โดยใช้หุ่นเชิดหรือไม่?

ฉันสามารถเขียนแบบกำหนดเอง แต่อาจจะมีวิธีที่ง่ายกว่า

ขอบคุณ

[แก้ไข] ขออภัยฉันควรจะพูดถึงว่าฉันเรียกใช้หุ่นเชิดไร้เดียงสาหุ่นเชิดได้ทำการติดตั้งก่อนแล้วจึงทำการตั้งค่าทุกอย่างอื่น


อาจมีอย่างใดอย่างหนึ่ง แต่ฉันไม่รู้จักหนึ่ง ฉันสงสัยว่าไม่มีเพราะเซิร์ฟเวอร์เซ็นใบรับรองของลูกค้าที่มีชื่อโฮสต์ โดยปกติชื่อโฮสต์จะถูกตั้งค่าในระหว่างการปรับใช้จากนั้นติดตั้งหุ่นกระบอกและเชื่อมโยงกับเซิร์ฟเวอร์ ฉันไม่รู้ว่าคุณจะทำการตั้งค่าอัตโนมัติหลังจากเวลาติดตั้งผ่านหุ่นเชิด
Sirex

ขออภัยฉันควรจะกล่าวถึงว่าฉันเรียกใช้หุ่นเชิดไร้เดียงสาหุ่นเชิดถูกตั้งค่าก่อนแล้วจึงตั้งค่าทุกอย่างอื่น
Andrei Serdeliuc

คำตอบ:


10

ลองดูที่คำจำกัดความ "การเปลี่ยนชื่อ" ของฉันสำหรับแนวคิด มันถือว่า Debian และอาจทำงานบน 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",
    }
}

โดยพื้นฐานแล้วฉันทำสิ่งเดียวกันยกเว้นฉันยังมีทรัพยากรไฟล์สำหรับ /etc/resolv.conf ตั้งค่าโดเมนของฉัน ฉันทำงานไม่เชี่ยวชาญเช่นกัน
François Beausoleil

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บรรทัด
confiq
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.