No soy un experto en Chef. Estoy intentando implementar una infraestructura de red en AWS. Cuando ejecuto el libro de cocina que cargué en mi Chef Server usando un cuchillo, se realizan muchas solicitudes de API a AWS para configurar la infraestructura, aparentemente tantas en un lapso de tiempo tan corto que AWS bloquea las solicitudes y esta falla eventualmente ocurre:
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.
he investigado (https://github.com/chef/knife-ec2/issues/453), y entiendo que una posible solución es simplemente reducir la velocidad de las solicitudes realizadas posteriormente, por ejemplo, poniendo un SLEEP en el script Ruby para que se detenga durante unos segundos entre solicitudes. Entendido, fácil, genial:
sleep 3
...Y no tengo idea de dónde poner eso.
¿Alguien sabe dónde tendría que colocar ese código, dentro de qué archivo o función?
¿Quizás en "ec2_server_create_spec.rb" o en otro lugar? ¿Dentro de qué función?
¿Tengo que "compilar" el guión después?
Intenté todo lo que creí razonable por mi parte, pero fracasé. ¿Alguna sugerencia sobre qué modificar?
Respuesta1
Finalmente encontré el archivo y el script donde se podía poner SLEEP para reducir la velocidad de las solicitudes. Funcionó.
Era específico de mis scripts de implementación, por lo que no puedo compartir exactamente dónde, ya que cada caso es diferente.