如何更改 Knife SoftLayer 插件的 API 端点?

How do i change API end point for Knife SoftLayer Plugin?

默认情况下,Knife SoftLayer 使用 API 端点有 api.softlayer.com。 :host => "api.softlayer.com"

由于 API 中断事件,我需要将 API 端点更改为 api-dev.softlayer.com。

如何对 Knife SoftLayer 插件进行上述更改?

活动说明 主题:API 中断:3 月 1 日,IBM Cloud 将在 api.softlayer.com 和 api.service.softlayer.com

停止支持 TLS 1.0 和 1.1

发生了什么事? 2018 年 3 月 1 日 0900 UTC (0300 CDT),IBM Cloud Infrastructure 将停止支持 api.softlayer.com 和 api.service.softlayer.com 上的 TLS 1.0 和 1.1 加密;这些 API 端点将仅支持使用 TLS 1.2 加密级别或更高级别的调用方。

什么时候发生? 2018 年 3 月 1 日 0900 UTC (0300 CDT) 将不再支持 TLS 1.0 和 TLS 1.1,需要 TLS 1.2+。

这会影响到谁? 任何使用代码或服务引用 softlayer.com API 加密级别早于 TLS 1.2 的 IBM Cloud Infrastructure 服务端点的用户。

确认并测试升级到 TLS 1.2 或更高版本 增强的安全配置目前在备用端点上强制执行。您现在可以针对它们测试您的服务,以确保在主要端点收到更新的配置后不会出现中断:

• api-dev.softlayer.com(而不是 api.softlayer.com) • api-dev.service.softlayer.com(而不是 api.service.softlayer.com)

我只能为您提供解决方法。我建议等待 knife-softlayer 开发人员的响应,他们可能会在这里提供更好的解决方案 https://github.com/softlayer/knife-softlayer/issues/56

knife-softlayer调用fog-softlayergem执行API请求,建议修改源码gem 因为无法通过 knife-softlayer 的配置文件设置不同的端点。

要知道 fog-softlayer 的安装位置,您可以执行以下命令:

gem list -e fog-softlayer -d

答案将如下所示:

fog-softlayer (1.1.4)
    Author: Matt Eldridge
    Homepage: https://github.com/fog/fog-softlayer
    License: MIT
    Installed at: /var/lib/gems/2.4.0

在修改源代码之前,首先进入安装fog-softlayer的文件夹,在我的例子中是/var/lib/gems/2.4.0. 其次,确保您可以使用端点 api-dev.softlayer.com 执行 API REST 调用。

Note: I will assume that the REST endpoint is http://api-dev.softlayer.com/rest/v3

第一个选项。

打开文件 gems/fog-softlayer-1.1.4/lib/fog/softlayer.rb 并搜索以下代码行:

SL_API_URL = ENV['SL_API_URL'] ? ENV['SL_API_URL'] : 'api.softlayer.com/rest/v3' unless defined? SL_API_URL

根据您要使用的端点进行修改,例如:

SL_API_URL = ENV['SL_API_URL'] ? ENV['SL_API_URL'] : 'api-dev.softlayer.com/rest/v3' unless defined? SL_API_URL

如果端点指向http而不是https,修改文件gems/fog-softlayer-1.1.4/lib/fog/softlayer/slapi.rb如下:

搜索:

@request_url = "https://#{sanitize_username(username)}:#{apikey}@#{@request_url}"

更改为:

@request_url = "http://#{sanitize_username(username)}:#{apikey}@#{@request_url}"

第二个选项

打开文件gems/fog-softlayer-1.1.4/lib/fog/softlayer/slapi.rb并搜索以下代码行:

@request_url = "https://#{sanitize_username(username)}:#{apikey}@#{@request_url}"

更改为:

@request_url = "http://#{sanitize_username(username)}:#{apikey}@api-dev.softlayer.com/rest/v3"