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
    }

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.


+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
}

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

Pembaruan cepat - puppet-2.6.12-1.el5.noarch sekarang tersedia dari EPEL (mendukung ekspresi reguler dalam nama simpul).
plasmid87
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.