Я начинающий автор сценариев / PowerShell / PowerCLI.Мне поручено выяснить, как лучше всего выполнить масштабирование некоторых из наших существующих сценариев.
Сценарии, которые мы имеем, принимают данные YAML от наших конечных пользователей и строят кластеры VMware ESXi в соответствии с их спецификациями.Мы пытаемся расширить сценарии, чтобы мы могли применять различные конфигурации в зависимости от типа кластера, который пользователь указывает в YAML.Мы хотим, чтобы конечный пользователь мог расширить это, создавая столько кластеров, сколько необходимо.Все время применяя различные конфигурации в зависимости от типа кластера, который они вводят.Мы также хотим иметь возможность легко расширять тип кластера «X» в будущем для других типов, которые мы в конечном итоге определим.
Примеры ввода YAML:
Cluster1: <Name>
Cluster1Type: <Basic, DR, or Replicate>
Cluster2: <Name>
Cluster2Type: <Basic, DR, or Replicate>
Я знаю, что мог бы сделать этов довольно нечистой манере жесткого кодирования очень длинного оператора if и.Что-то вроде:
If ($Cluster1Type -eq 'DR') {<Code to execute on $Cluster1>}
ElseIf ($Cluster1Type -eq 'Replicate') {<Code to execute on $Cluster1>}
Else {<Code to execute on $Cluster1>}
If ($Cluster2Type -eq 'DR') {<Code to execute on $Cluster2>}
ElseIf ($Cluster2Type -eq 'Replicate') {<Code to execute on $Cluster2>}
Else {<Code to execute on $Cluster2>}
Я знаю, что должен быть лучший способ сделать это.vSphere 6.5 может иметь до 64 кластеров на vCenter, если я правильно помню, определенно, я не хочу жестко кодировать 64, если операторы else каждый раз нам нужно проверять, какой тип кластера назначил конечный пользователь конкретному имени кластера.Я искал чистое решение, но моя неопытность затрудняет поиск ответа самостоятельно.
Я также думал, что возможно будет использовать массив переменных для имен кластеров, а затем предложить пользователю, выполняющему наши скрипты PowerShell, ввести тип кластера для каждого имени кластера, которое они вводят в массив.Я все еще думаю, что может быть даже лучший способ, чем этот, хотя?Возможно, метод запуска цикла для каждой переменной ClusterX и ClusterXType в инкрементном методе?