使用Python脚本来控制Windows Azure的简单教程
inux开发人员经常使用 Python 完成小块的工作,因为你可以编写脚本的情况很容易。它已经成为完成配置和部署等小任务的一个流行方式。Windows Azure,微软的云,也没有什么不同。通过 Python SDK 所提供的可用性,Python 成为 Windows Azure 的头等公民。让我们看看我们如何能够使用Python无需其它而只需一个Windows Azure订阅就可以用编程方式从 vmdepot 部署一个映像到 Windows Azure上。
建立一个管理证书
任何与 Windows Azure 的交互都需要两个东西:
我们假设你使用 Linux 运行这个脚本(如果不是,请和我联系,我会告诉你如何使用 Windows 来做同样的事情)。 如果没有安装OpenSSL,请从root提示使用如下命令:
yum install openssl
以下将创建一个 .pem 文件,之后可被翻译成一个 .cer 文件,并导出和上传到Windows Azure。
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout elasta.pem -out elasta.pem
用下面命令导出 .cer:
openssl x509 -inform pem -in elasta.pem -outform der -out elasta.cer
这样你就得到它了,一个可以上传到你的 Windows Azure 订阅的管理证书。当做完这个时,你应该已经能够以编程方式使用 Windows Azure 了。
用你的微软帐户或者 Windows Azure 活动目录凭据登录到 Windows Azure。管理门户位于https://manage.windowsazure.com 。
选择设置标签:
从菜单中选择管理证书:
下方的应用工具条包含一个上传按钮:
选择这个按钮,上传前面导出的 .cer 文件:
在“结果”面板中你应该会看到类似这样的证书入口。
为了有助于解释这篇文章,我已经写了一个Python脚本,可在这里下载:
https://github.com/elastacloud/python-vmdepot-deploy
你可以阅读安装说明获知如何使用脚本。本文的目的是带你领略 Windows Azure 的 Python API 的一些能够帮你开发完全自动化部署的关键功能。
要使用 Windows Azure 中的任何服务管理功能,我们需要一个服务管理对象:
self.sms = ServiceManagementService(vars.subscription_id, vars.certificate_path)
这对我们接下来要做的很有用。正如你能看到的,这需要一个证书和订阅ID作为参数。
构造一个虚拟机
虚拟机映像是一个模板,我们可以用它建立虚拟机。在本例中,我们将使用一个 CentOS 映像,它是从一个由微软的全资子公司 MS Open Tech 持有的称为 vmdepot 的位置拷贝过来的。
我们可以通过列出我们的订阅中所有命名的映像来检查我们是否之前已经复制过指定的映像和注册过现存的。
def _image_by_name(self, name): # return the first one listed, which should be the most stable for i in self.sms.list_os_images(): if name in i.name: return True return False
如果没有,我们可以继续我们的工作流程了。
下面演示了一个创建一个存储帐户(需要一个名称和位置)的简洁过程。因为我在伦敦,所以我会使用“北欧”数据中心(位于都柏林),但在世界各地有超过10个数据中心而且还有一堆正在建设。当存储帐户创建完,它允许最多 200 TB 的blob数据被存储,并由2512位的AES保护,可以用它来访问帐户。存储数据的逻辑单元被称为是一个容器,所以我们需要创建这样的一个容器来让我们存储我们复制的映像。
self._create_storage_account_if_not_exists(vars.storage_account_name, vars.deploy_location) account_key = self._get_primary_account_key(vars.storage_account_name) self._create_container_if_not_exists()
我们现在应该能够从远程位置复制blob。这是通过使用 Windows Azure 提供的一个被称为 copyblob 的 API 完成的。实现代码如下:
self.blob_service.copy_blob(container_name=Constants.storage_container_name, blob_name=Constants.vhd_blob_name, x_ms_copy_source=Constants.centos_minimal_image) self._wait_for_async_copy(Constants.storage_container_name, Constants.vhd_blob_name)
你可以看到,这是一个异步方法,允许从远程位置复制任何 blob。这个 API 的伟大是,你可以用它来从 Windows Azure 的内部或外部复制任何 HTTP 端点,并且使用它没有任何成本。缺点是,它没有 SLA(译者注:Service-Level Agreement的缩写,服务等级协议,是网络服务供应商和客户间的合同)。
然后 blob 就可以在你的 Windows Azure 订阅中注册为一个映像,你可以使用这个来创建多个虚拟机。
self.sms.add_os_image(label=Constants.image_name, media_link=storageimage_uri, name=Constants.image_name, os='Linux')
这个脚本将创建一个“云服务”的包含虚拟机的公共端点,然后设置一个公共端点转发到虚拟机的端口,这样你就可以通过 SSH 进入他们。脚本是这样写的,如果你每次选择相同的云服务,它将从端口22向上递增来添加另一个准备给SSH进入的开放端口来作为云服务的虚拟机。
我们正在从含有映像的 vmdepot 复制映像。通过它,我正在我的订阅中复制和注册 CentOS 迷你映像。
https://vmdepotneurope.blob.core.windows.net/linux-community-store/community-32167-508624a5-01d1-4d57-b109-df2af5b4b232-1.vhd
你可以从这个地址浏览 vmdepot:
http://vmdepot.msopentech.com/List/Index
最后,我们将使用一个非常简单的算法来确定虚拟机已经部署到云服务上,即通过查看存储账户中相关的blob,每个虚拟机都有一个虚拟硬盘(.vhd)。
index = -1 blob_exists = True while blob_exists: index += 1 blob_exists = self._blob_exists(Constants.storage_container_name, "elastavm" + str(index) + ".vhd") vm_media_link = self._make_blob_url(vars.storage_account_name, Constants.storage_container_name, "elastavm" + str(index) + ".vhd") self._create_vm_linux(vars.storage_account_name, vars.storage_account_name, "elastavm" + str(index), vm_media_link, vars.deploy_location, index, vars.username, vars.password)
结果是,我们可以为我们的云服务添加多个虚拟机。
以上都是从 Setup.py 文件完成的。你可以在下面地址的文件中看到上面所有代码:
https://github.com/elastacloud/python-vmdepot-deploy/blob/master/elastacloud/pyvms/Setup.py
根据 readme.md 中的指示启用脚本,你就可以准备开始了。
你可以在下面地址克隆 Windows Azure 的 Python SDK: :
https://github.com/WindowsAzure/azure-sdk-for-python
乐之!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

Sublime 텍스트로 Python 코드를 실행하려면 먼저 Python 플러그인을 설치 한 다음 .py 파일을 작성하고 코드를 작성한 다음 CTRL B를 눌러 코드를 실행하면 콘솔에 출력이 표시됩니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

Golang은 성능과 확장 성 측면에서 Python보다 낫습니다. 1) Golang의 컴파일 유형 특성과 효율적인 동시성 모델은 높은 동시성 시나리오에서 잘 수행합니다. 2) 해석 된 언어로서 파이썬은 천천히 실행되지만 Cython과 같은 도구를 통해 성능을 최적화 할 수 있습니다.

Visual Studio Code (VSCODE)에서 코드를 작성하는 것은 간단하고 사용하기 쉽습니다. vscode를 설치하고, 프로젝트를 만들고, 언어를 선택하고, 파일을 만들고, 코드를 작성하고, 저장하고 실행합니다. VSCODE의 장점에는 크로스 플랫폼, 무료 및 오픈 소스, 강력한 기능, 풍부한 확장 및 경량 및 빠른가 포함됩니다.

메모장에서 Python 코드를 실행하려면 Python 실행 파일 및 NPPEXEC 플러그인을 설치해야합니다. Python을 설치하고 경로를 추가 한 후 nppexec 플러그인의 명령 "Python"및 매개 변수 "{current_directory} {file_name}"을 구성하여 Notepad의 단축키 "F6"을 통해 Python 코드를 실행하십시오.
