Назад | Перейти на главную страницу

синтаксис хэша не работает в манифесте марионетки

Я сейчас нахожусь в конце, может кто-нибудь, пожалуйста, помогите мне понять, что я делаю здесь неправильно:

my nodes.pp (ничего больше в этом файле, кроме этого определения)

node test {
    net::addr { 'routing':
        routes = {
            route1 => {
                address => '192.168.23.14',
                netmask => '255.255.255.0',
                gateway => '192.168.23.1',
                dev     => 'eth0',
            },
            route2 => {
                address => '192.168.1.3',
                netmask => '255.255.255.0',
                gateway => '192.168.1.1',
                dev     => 'eth2',
            },
        }
    }
}

Независимо от того, что я изменяю, я получаю это при каждом запуске на тестовом сервере, запуск сразу же завершается:

ошибка: не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: не удалось выполнить синтаксический анализ для производственной среды: синтаксическая ошибка в '='; ожидается '}' в /etc/puppet/manifests/nodes/nodes.pp:3 при тестировании узла

В строке 3 это то, что я получил из приведенного выше:

net :: addr {'маршрутизация':

Что мне здесь не хватает? Пожалуйста, помогите, поскольку это доводит меня до отчаяния!

Спасибо Дэн

С того места, где я сижу, третья строка:

routes = {

Здесь вам понадобится правая угловая скоба.

Как уже упоминалось, вам нужно изменить ваш '=' на оператор ресурса '=>'.

Что-то, что будет полезно при отладке, - это следующая команда:

puppet parser validate test.pp

Это поможет вам найти свои синтаксические ошибки.

Вам нужен оператор => для определения параметра ресурса:

net::addr { 'routing':
  routes => {
    ...

Такой способ задания параметров немного запутан и труден для чтения. Я бы рекомендовал сначала сохранить этот сложный хеш в переменной:

$route_hash = {
    route1 => {
        address => '192.168.23.14',
        netmask => '255.255.255.0',
        gateway => '192.168.23.1',
        dev     => 'eth0',
    },
    route2 => {
        address => '192.168.1.3',
        netmask => '255.255.255.0',
        gateway => '192.168.1.1',
        dev     => 'eth2',
    },
}

net::addr { 'routing':
    routes => $route_hash,
}