꼭두각시를 사용하여 호스트 이름을 설정 하시겠습니까?


13

꼭두각시를 사용하여 서버의 호스트 이름을 설정하는 방법이 있습니까?

사용자 정의 유형을 작성할 수는 있지만 더 간단한 방법이있을 수 있습니다.

감사

[편집] 죄송합니다. 꼭두각시 마스터리스를 실행하고 꼭두각시를 먼저 설정 한 다음 다른 모든 것을 설정했습니다.


하나가있을 수 있지만 하나는 모르겠습니다. 서버가 호스트 이름을 포함하는 클라이언트의 인증서에 서명했기 때문에 존재하지 않는 것 같습니다. 일반적으로 호스트 이름은 배포 중에 설정되고 퍼펫이 설치되어 서버에 연결됩니다. 꼭두각시를 통해 설치 시간이 지난 후 어떻게 설정을 자동화하는지 모르겠습니다.
Sirex

미안, 내가 꼭두각시 마스터리스를 실행한다고 언급 했어야하는데, 꼭두각시가 먼저 설정되고 다른 모든 것이 설정됩니다.
Andrei Serdeliuc

답변:


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에 대한 파일 리소스가 있고 도메인을 설정한다는 점을 제외하고는 본질적으로 동일한 작업을 수행합니다. 나는 또한 마스터리스를 실행합니다.
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.