Проверка нескольких условий управления в puppet

#powershell #puppet #puppet-enterprise #facter #librarian-puppet

#powershell #puppet #puppet-enterprise #фактор #библиотекарь-марионетка

Вопрос:

Мне нужно проверить агент, например, подключение к памяти, процессору и порту, прежде чем запускать другие мои файлы манифеста. Итак, я создал манифест, подобный следующему, сохраняя глобальные факты с помощью оператора and и exec resource .

 class vc {
#Validateing Infra Before applying chnages
if $::facts['memorysize'] >= '4.00 GiB'and $::facts['processorcount'] >= 2 and Exec['port_connectivity'] {
  notify { "Infra validated" : }
  include vc::configs 
}
else {
  notify { "Infra not meeting requirements" : }
} 
# Checking port connecitivity to puppet master  
exec { 'port_connectivity':
  command   => 'New-Item c:debug.txt -type file -Force',
  unless    => 'if((New-Object System.Net.Sockets.TcpClient ("linux-NAS-storage.com",6163)).connected -eq $true) { exit 1 }',
  provider  => powershell,
  }  
}
  

моя тема — puppet должна выполняться только в том случае, если это if $::facts['memorysize'] >= '4.00 GiB'and $::facts['processorcount'] >= 2 and Exec['port_connectivity'] условие было выполнено успешно. Если команда exec прошла успешно, и facter возвращает true, тогда должна выполняться только она, но после выполнения манифеста по отдельности без проверки, является ли это утверждение exec истинным или нет. Моя основная цель: мне нужно проверить порты перед запуском кукольного манифеста. Может ли кто-нибудь помочь

Комментарии:

1. Вы должны сделать подключение к порту настраиваемым фактом, а также переключить эти условия на auto Hiera class includes . Длина ответа о том, как все это сделать, слишком велика для Stack Overflow, но в Puppet есть много документации, которая может помочь.

2. @MattSchuchard Спасибо, но можете ли вы поделиться примером фрагмента, если это возможно

3. Проверка соединения бессмысленна. Просто удалите его. Если агент Puppet не может связаться с ведущим, он все равно выдаст ошибку, и без предварительного контакта с агентом мастер не будет компилировать каталог.

4. Это правда @AnsgarWiechers bt в основном мне нужно протестировать подключение к порту

5. @Dev, вы, кажется, упускаете суть. Агент, подключающийся к ведущему серверу для отправки запроса каталога, по сути, служит тестом подключения, при условии, что вы настроили агент так, чтобы он не использовал кэшированные каталоги. Явный тест является избыточным, поскольку Puppet выполнит запуск каталога только в том случае, если он уже продемонстрировал, что может подключиться.