Я сейчас нахожусь в конце, может кто-нибудь, пожалуйста, помогите мне понять, что я делаю здесь неправильно:
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,
}