在ruby中验证并获取azure的运行实例数

在ruby中验证并获取azure的运行实例数,ruby,azure,Ruby,Azure,如何在ruby中获得Azure的运行实例数,我正在寻找与AWS中的情况相当的东西 谢谢 以下是我所做的: subscription_id= 'xyz' provider = MsRestAzure::ApplicationTokenProvider.new(tenant_id, client_id, secret) credentials = MsRest::TokenCredentials.new(provider) client = Azure::ARM::Resources::R

如何在ruby中获得Azure的运行实例数,我正在寻找与AWS中的情况相当的东西

谢谢

以下是我所做的:

subscription_id= 'xyz' 
provider = MsRestAzure::ApplicationTokenProvider.new(tenant_id, client_id, secret)
  credentials = MsRest::TokenCredentials.new(provider)
  client = Azure::ARM::Resources::ResourceManagementClient.new(credentials)
  client.subscription_id = subscription_id
  resource_group_params = Azure::ARM::Resources::Models::ResourceGroup.new()
  resource_group_params.location = 'westus'
  promise = client.resource_groups.create_or_update('new_test_resource_group',resource_group_params)
  result = promise.value!
  resource_group_params = result.body
  p resource_group_params.name 
  p resource_group_params.id 
答复:


azureAuth.rb:35:in
':未定义的方法
value!'对于#(NoMethodError)

,从描述中很难知道这个“正在运行的实例”。你是指Azure web应用程序还是Azure云服务实例?根据您的代码片段,您似乎想要创建Azure资源组并获取一些相关信息。对于此场景,我建议您遵循Azure官方站点中的示例代码:。希望它能给你一些提示

[更新] 很抱歉,我没有测试示例代码并向您提供解决方案

它仍然抛出错误“nil:NilClass(nomethoderor)

根据我的测试,我认为您没有创建azure资源组,因此承诺对象为零。请尝试列表资源组操作
client.resource_groups.list.each{| group | print_item(group)}
我想你也不会收到任何问题。当我深入研究
ms\u rest\u azure
时,我甚至无法获得令牌。当我更改下面的代码(application\u token\u provider.rb)时,我可以获得令牌

1)
request_body['{resource_uri}']=“https%3A%2F%2Fmanagement.azure.com%2F”#ERB::Util.url_encode(@settings.token\u academy)
。请使用management.azure.com而不是management.core.windows.net

2)
response=connection.post do | request |
get方法更改为post方法

3)
:ssl=>MsRest.ssl_选项
更改为
:ssl=>{:verify=>false}

我建议您使用RESTAPI来达到同样的目的。下面是我基于RESTAPI的Ruby代码。希望对您有所帮助

  connection = Faraday.new(:url => 'https://login.windows.net/<telnet id>/oauth2/token',:ssl => {:verify => false}) do |builder|
    builder.adapter Faraday.default_adapter
 end
 response = connection.post do |request|
    request.headers['Content-Type'] = 'application/x-www-form-urlencoded'
    request.body = 'resource=https%3A%2F%2Fmanagement.azure.com%2F&client_id=<your client id>&client_secret=<your client secret>&grant_type=client_credentials'
 end 
  response_body = JSON.load(response.body)
  @token = response_body['access_token']
  getResrouceCon = Faraday.new(:url => 'https://management.azure.com/subscriptions/<subscriotion id>/resourcegroups?api-version=2015-01-01',:ssl => {:verify => false}) do |builder|     
    builder.adapter Faraday.default_adapter
 end
 response_resource = getResrouceCon.get do |req|
     req.headers["Authorization"] = "bearer #{@token}"
 end
 puts "response #{response_resource.body}"

将您的翻译工作添加到您的问题中,并指出您遇到的问题。谢谢,我已经更新了代码和错误。感谢您提供的信息,我试图跟踪您之前提供的链接,但仍然抛出错误“nil:NilClass(NoMethodError)“。我正在尝试查找运行Azure云服务的实例。请提供任何帮助/建议?作为我的测试,“Azure管理资源”似乎存在一些问题。”。我会更新我的答案。您的问题与创建资源组有关如果您想获取Azure云服务实例,我建议您创建一个新线程。感谢您的回复,一旦我获取了身份验证令牌,是否有一种简单的方法可以从租户/active directory获取所有正在运行的实例?例如ec2=AWS::ec2.new(access_key_id:'YOUR_access_key_id',secret_access_key:'YOUR_secret_access_key',region:'YOUR_ec2_region')ec2.instances将提供与该AWS帐户关联的所有正在运行的实例。我这个脚本的主要目标是获得实例数并每天发送电子邮件,我能够用AWS实现它,并且需要用Azure实现它。我将继续更新我的回复。如果有帮助,请将其标记为答案。
 getResrouceCon = Faraday.new(:url => 'https://management.azure.com/subscriptions/<subscription id>/resourceGroups/<group name>/providers/Microsoft.ClassicCompute/domainNames/<cloud service name>/slots/Production?api-version=2016-04-01',:ssl => {:verify => false}) do |builder|     
    builder.adapter Faraday.default_adapter
 end
 response_resource = getResrouceCon.get do |req|
     req.headers["Authorization"] = "bearer #{@token}"
 end
 puts "response #{response_resource.body}"