Я не эксперт в Chef. Я пытаюсь развернуть сетевую инфраструктуру на AWS. Когда я запускаю книгу рецептов, которую я загрузил на свой сервер Chef с помощью knife, к AWS поступает множество запросов API для настройки инфраструктуры, по-видимому, так много за такой короткий промежуток времени, что AWS блокирует запросы, и в конечном итоге происходит этот сбой:
ubuntu@ip-172-66-250-88:~/chef$ knife deployment resize -E core_1 -V
[...]
INFO: Creating security groups...
INFO: Adding rule {:ip_protocol=>:tcp, :min=>7000, :max=>7000, :group=>"sg-04463cd014cc1562c"} to mme-pgw
INFO: Adding rule {:ip_protocol=>:tcp, :min=>9160, :max=>9160, :group=>"sg-04463cd014cc1562c"} to mme-enb
[...]
ERROR: Fog::Compute::AWS::Error: RequestLimitExceeded => Request limit exceeded.
Я исследовал (https://github.com/chef/knife-ec2/issues/453), и я понимаю, что потенциальное решение — просто замедлить скорость запросов, выполняемых впоследствии, например, поместив SLEEP в скрипт Ruby, чтобы сделать паузу на несколько секунд между запросами. Понятно, просто, потрясающе:
sleep 3
...И понятия не имею, куда это пристроить.
Кто-нибудь знает, куда мне следует поместить этот код, в какой файл или функцию?
Может быть, на "ec2_server_create_spec.rb" или где-то еще? Внутри какой функции?
Нужно ли мне вообще потом «компилировать» скрипт?
Я попробовал все, что я считаю разумным со своей стороны, я потерпел неудачу. Есть предложения, что изменить?
решение1
Я наконец нашел файл и скрипт, где можно было бы использовать SLEEP для снижения скорости запросов. Это сработало.
Это было связано с моими сценариями развертывания, поэтому я не могу сказать, где именно, поскольку каждый случай индивидуален.