在ruby中验证并获取azure的运行实例数
如何在ruby中获得Azure的运行实例数,我正在寻找与AWS中的情况相当的东西 谢谢 以下是我所做的:在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
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}"