boneka - mendefinisikan host wildcard di nodes.pp

10

Apakah ada cara untuk mendefinisikan host wildcard di nodes.pp puppetmaster

katakanlah saya ingin semua host di satu domain menerima satu set kelas yang dapat saya lakukan sesuatu seperti:

# nodes.pp
#

node basenode {
  include  admina, adminb, admic
  }


node "*.acme.com" {
    include adminc
    }
lepole
sumber

Jawaban:

9

Tidak dengan cara ini. Anda dapat membuat simpul 'default' yang akan berlaku untuk klien yang ditandatangani.

node "default" {
   include foo
}

Tetapi Anda hanya dapat memiliki 1 default. Jika Anda ingin meniru fungsi yang Anda jelaskan, Anda dapat menggunakan metode klasifikasi external_nodes. Pada dasarnya Anda menulis skrip yang mengembalikan yaml yang valid ketika klien terhubung. Skrip itu dapat melakukannya sesuai keinginan Anda, periksa fqdn, permintaan db, tekan ldap, dll.

Tongkat
sumber
+1 Setuju dengan external_nodes
David Pashley
16

Ekspresi reguler sekarang dimungkinkan dalam Wayang 0.25, jadi apa yang Anda inginkan menjadi mungkin:

node /^(foo|bar)\.example\.com$/ {
include blah
}
Pheezy
sumber
3

Beberapa distro belum mengirimkan 0.25, jadi di Centos5 saya memiliki 2.24.8 dari repo EPEL saya harus melakukan sesuatu seperti ini untuk node pekerja saya dengan nama host seperti wn10.example.com:

node  default {
    $node_type = regsubst($hostname, '^([a-z]+).*$', '\1')
    case $node_type{
        wn: {include worker_node}
        default: {include generic_node}
    }
}

sumber
Pembaruan cepat - puppet-2.6.12-1.el5.noarch sekarang tersedia dari EPEL (mendukung ekspresi reguler dalam nama simpul).
plasmid87