Cloud

Windows 10安装OCI CLI

起因

新冠返沪自我隔离期间,因为无聊把各家云计算厂商的产品和技术体系撸了一遍。对于O记的OCI,通读了一遍Apress的《Practical Oracle Cloud Infrastructure》。恰好本周O记渠道部组织了一场为期4天的OCI认证培训,想着趁此机会去实操一把,刚好加深对OCI整个体系架构的理解。 通过了解,知道对OCI资源的操作,可以通过以下四种方式:

  • Web Console
  • API
  • CLI
  • Terraform

Console最直观,但是相信实际操作过的人都会对云厂商那种极不用户友好的操作界面深恶痛绝。 API拿DonetCore写了几个试验应用通过REST API很简单就调通了。 Terraform方式还没有去试。结合培训,重点测试CLI的方式,毕竟平时做实验也是CLI最方便。于是开了一台Windows 10虚机,按照官方文档安装CLI,没想到基本上一场恶梦的开始。此文为折腾的记录。

Windows 10下安装CLI第一次尝试

官方文档的描述,以管理员身份启动Windows的PowerShell终端,运行以下命令:

Set-ExecutionPolicy RemoteSigned
powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))"

运行报错,提示“使用“1”个参数调用“DownloadString”时发生异常:“无法连接到远程服务器””错误。

无法连接到远程服务器 看来是因为网络连接问题,在大天朝也算正常。轻车熟路地架梯子,确认可以连接外网后重新运行命令,这次系统开始提示下载Python,坚持了10来分钟还是报错,提示超时。 修改网络配置,重试了几次都是同样错误。因为机器没有Python,所以直接到Python官网,下载安装了Python 3.7,准备绕过安装脚本自动安装Python的步骤。

Windows 10下安装OCI CLI之升级Pip

安装好Python,再次运行OCI的CLI安装脚本。这次有点反应,安装程序开始下载Python的支持包,结果到了一半又是出错,看错误信息有提示说“You are using pip version 19.2.3, how ever version 20.0.2 is available You should consider upgrading via the ‘python -m pip install –upgrade pip”,没有仔细分析安装脚本,以为是pip版本的原因(其实应该可以运行CLI的)。   直接照着提示,在PowerShell运行”python -m pip install –upgrade pip”,回车后没有反应,大概是安装Python时没有设置环境变量所致。于是切换至Python安装目录的Scripts目录下,重新运行

pip install --upgrade pip

升级pip后再试。

Windows 10下安装OCI CLI之安装成功

再次运行安装脚本,这次开头很顺利地安装Python支持包,以为肯定可以了,没想到过了一会还是报错。

CLI错误

iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/ install/install.ps1')) : Executing C:\Python37\python.exe "C:\Users\QJJ\AppData\Local\Temp\tmp316C.tmp" returned a non- zero exit code. 所在位置 行:381 字符: 9 + Write-Error "Executing $PythonExecutable $ArgumentList return ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

放狗搜了一番,github上的解决方式基本通过修改PowerShell的代理服务器地址或者直接修改脚本内容的方式,但最近的issue也是几个月前了,相信O记应该修复了吧。所以还是把重点放在自己的网络问题上。 把SS设置为全局模式,保证所有的网络流量都通过梯子。再次运行安装脚本,经过一段颇为漫长的等待,终于把CLI在Windows 10下安装成功。

CLI Install Python Pakcages

总结

从这次安装的折腾过程来看,OCI的用户友好性还是有待提升,哪怕是问题,好歹也给个提示哪里出问题不是? 另外,要通过CLI或者API方式访问OCI,需要保证网络能够顺畅地访问外网,不然的话很容易出现各种奇奇怪怪的问题。看来O记各位在国内推广OCI的朋友,还是任重而道远呀:)