有什么办法使用puppet设置服务器的主机名?
我可以写一个自定义types,但也许有一个更简单的方法。
谢谢
[编辑]对不起,我应该提到我跑傀儡无主,傀儡先设置,然后它设置了一切。
看看我的“重命名”定义的想法。 它假定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", } }
创build一个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], } }