#MIA# Azure IaaS 系统学习(2)Azure Resouce Manager 概述

Azure Resouce Manager 概述

ARM原来老版叫Azure service manager(ASM),Azure service manager 最初是用来管理和部署Azure的资源的。老的ASM没有模块化的工具。ASM为了向前兼容,在门户网站是还有,但是是在classic模式。

ARM是ASM的新版本,用更高级的方式去部署管理Azure的资源。

也就是说,原来的管理方式,组件不能单独存在,比如网卡只能存在与虚机里面。然而ARM让资源都独立化,可用专门管理一张网卡。

Azure Service Manager & XML

  • 旧版的ASM用XML(extensible markup language)在客户端和ASM服务之间进行数据交换。
  • XML是一种数据格式,用来进行web浏览器和服务器之间的数据交换
  • XML,verbose比较复杂,而且不擅长交换高度结构化的数据
  • XML格式用于在web浏览器和服务器之间交换数据,都用来20年了,虽然XML能用,但是描述还是太冗余,对结构化数据支持不好。

Azure Resource Manager & JSON

  • 新版的ARM用JSON(JavaScript Object Notation)来进行客户端和ARM服务之间交换数据。
  • JSON是一种数据格式,用来进行web浏览器和服务器之间的数据交换,less verbose,复杂,但是可用处理高度结构化的数据。

XML & JSON
来举个例子~
在这里插入图片描述

啥是ARM Template模板

  • ARM模板是一个部署的文件,模板会发给ARM进行处理,模板是用JSON格式写的,以.json为扩展名。
  • 模板由6个元素组成:¥schema,contentVersion, parameters, variables, resource, outputs。这些元素是用来描述模板内容的,parameter可以单独用一个文档存,以.parameters.json为扩展名,用单独的文件来描述参数,可以方便改参。
  • ARM 模板的优点:
    部署十分方便,就用一个命令行就可以部署,但是如果一次性部署好多东西,比如VM, VNet,IP 地址,脚步就会相对复杂些。另外一个优点是,可以去GitHub或Visual Studio上面去荡模板。
    在这里插入图片描述

$Schema 是一个地址,这个地址里面的内容是用来描述模板语言的版本,来确保模板语言的一致性。
ContentVersion可以是一个任意的数字,用来表述版本号
Parameter:用来自定义部署的资源,比如“MyStorageAccount”
Variables:变量只需要提供一次,但是需要引用一次或多次,目的是为了简化ARM模板的语言表达:比如:MyStorageAccount:StorageAccount1
Resource:需要部署或者升级的资源类型,比如部署一个存储账户。 书写模式为:Microsoft.Storage/storageAccount
Output:部署完成后返回的值,你也可以返回一个URI去访问部署好的资源。

ARM template
{
“$schema”:“http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#”,
“contentVersion”:" ",
“parameters”:{ },
"“variables”:{ },
“resource”: { },
“output”:{ }
}
Azure Template linking
ARM 模板可以和其他模板连接使用,目的是把模板分成几个小的模块来部署,这样有助于测试和再利用。
连接使用的模板配置必须至少要有:主资源模板,共享资源模板,成员资源模板。
模板配置里也可以有:可选资源模板和pre-existing scripts
主模板是用来输入参数的,共享资源模板是用来部署共享资源的。共享资源模板要先部署好。。没太懂
成员资源模板可以用自己的配置去部署不同类型的实例,每个实例有自己的模板去部署。
可选资源模板是基于参数进行资源的部署。。。。
linked template operation&guide
在连接的模板中,参数由柱模版传递给连接的模板,连接的模板可以把生成的输出变量 output variable返回到源模板。这样就可以在模板之间进行双向的数据交换。
授权ARM模板
ARM模板的授权可以用不同的工具:Visual studio with Azure ADK, New Azure Portal,gitHub
模板必须小于1MB
参数必须小于64KB,这可以保护模板不会被破坏,也确保部署简单。
Visual Studio是目前最流行的编辑ARM的工具,有14个predefined ARM 模板。当新的资源加入时,会自动贴上标签。但是当把资源删掉,这些标签和参数都还在。

模板部署

默认情况下,资源管理器采用增量部署模式,就是留着没变的资源不更新,只增加新的资源进去,如果资源已经存在,不会重复提供

################
部署Windows Server with Load Balancer with Visual studio模板实验相关的笔记:
部署一个模板会有以下三个文件:
Deploy-AzureResourceGroup.ps1 这是ps脚本,用来部署.json模板的文件
LoadBalancedVirtualMachine.json 这是项目的主模板
LoadBlancedVirtualMachine.parameters.json 模板的参数文件,时主模板的输入
################

Azure 资源组

要了解什么是资源组,首先就要了解什么是资源,资源比如说:虚机、存储账户、虚拟网络、web应用,数据库…

资源组是装与应用或者服务相关资源的容器。资源组可以把一个应用的资源全部装在一起,也可以只装你自定义的资源。反正就是你可以自定义你想要的资源为一个资源组。
资源组最多可以包含800个资源。一个资源只能隶属于一个资源组。可以随时添加和移除资源,一个资源组里面的资源可以处于不同的区域。

Azure Resource Group的优点

  1. 资源组里面的资源好管理、升级、删除
  2. 灵活:资源组之间可以挪资源
  3. 可移动:资源组可以部署在模板里面,所以可以进行重复部署。
  4. 好计费:可以基于资源组进行计费
  5. 访问权限控制:基于资源组赋予一定的权限。

资源组结构
资源组的结构其实没有硬性的规定,你可以把一组资源全放在一起共享,也可以更具需求分类放入组。资源组的结构要根据自己的需求,比如是否需要有一样的声明周期,是否需要统一管理。

Azure Resource Group Tags
资源组标签包括一个key/value对,这个key/value对定义资源的属性,比如Sales Project:1
每个资源组或资源最多可以有15个tags
tag名称最多有512字符,每个tag value最多有256个字符。
这个tag是应用在资源级别,在子项目里面不会沿袭资源组的大tag,也就是说,资源组加tag以后,里面的资源是没有tag的。

Resource Provider
资源提供方提供资源,供资源管理器进行部署和管理。
资源提供方只提供一类资源,
比如说:如果你想创建VM,那么就有叫Microsoft.Compute 的资源提供方提供虚拟机的相关的资源。
再比如,你想创建存储,那么就有叫Microsoft.Storage的资源提供方提供存储账号资源。
这种部署方法对Azure 而言是个巨大的改变,因为,资源提供方的存在意味着新的资源类型可以通过同一个管理界面进行部署管理。
最后,资源管理器有不同的地理可用性,还提供不同的apiVersio.
Powershell 查看resorce provider 类型
Get-AzureRmResourceProvider | Format-table
资源提供方参数
资源提供方需要输入参数才能执行任务
如果要创建、读、升级、删除一些资源,那么就至少要输入以下的参数:

  • Id:自己的资源Id,里面包括资源组名称
  • Name:资源的名称:比如:storageaccount1
  • Type:描述资源的种类:比如:virtualNetworks
  • location:资源位置:比如:westeurope
    在这里插入图片描述

Access Control

Management policy
ARM 管理条例让你可以再部署资源的时候可以设置policy,比如说,你可以自定义你要多大的虚拟机size,位置,命名规则等等。policy可以保持部署环境的一致性。
这里要注意的是:资源policy的管理是基于资源的,而role based access control是基于用户的,两个作用面不一样。
Policy是用PowerShell和REST API进行创建和管理的。
Policy是应用再订阅、资源组、资源级别的,资源子项目对Policy有继承性。
也可以用Powershell和门户网站对policy进行监督。
而且Policy是叠加性的,不是覆盖性的。
Policy 定义结构
管理Policy Definition的结构是用JSON格式。
Policy Definition结构至少包括两个部分:一个是conditions/logical operator:用来定义动作的,另外一个是affect:用来定义当采取动作以后,会得到什么样的效果,三种效果: deny, audit, append。
deny在监听audit里面的日志里面生成事件并且拒绝请求。
Audit生成监听日志,但是不拒绝请求
Append添加很多fields到请求里面。

创建管理Policy在这里插入图片描述
分配管理policy
用powershell New-AzureRmPolicyAssignment

资源锁

资源锁可以防止你意外删除和更改一个资源组或资源。有两种资源锁:cannotdelete,ReadOnly
Delete:允许用户读写,但是不能删除
ReadOnly:允许用户读资源,但不能删除和写。
资源锁应用于所有用户,其中包括管理员。

资源锁管理
用门户, ARM 模板,Powershell, REST API来创建资源锁
资源锁应用于订阅、资源组、和资源级别
如果资源锁应用在父级别,其中的子项目都集成一样的锁。
Owner和用户访问管理员可以创建和删除资源锁。

模板安全Template Security

敏感信息不能再ARM 模板里面声明,比如VM的密钥,证书,网络路由信息等等。
用Azure Key Vault来安全地存储VM的密钥和证书。
如果用Key Vault的话就意味着ARM模板里面会引用一个URI,URI里面装着密钥。
在部署VM的时候,要加载密钥,加载密钥要通过Azure Fabric和Key Vault之间有一个直通从而进行传输。
Service Principals for Cross Subscription Access

  • 用服务原则里的role based access control来限制跨订阅的访问权限。比如,云服务提供方要访问客户的订阅。
  • 要明确访问范围,明确要访问哪个资源组或资源
  • 可以授予限制权限,比如:只读权限
  • 可以开启监听模式
  • use organizational accounts for more control,就是当管理员不在时,可以赋予organizational account对资源进行管理

网络信息&模板
很多应用场景会要求你明确你的虚拟网络中的流量是怎么流入你的虚机里面的。
用network security group NSG来定义ARM模板对网络流量的管理。
NSG管理进出网卡或子网的入站和出站流量。
基于endpoint的ACL仅仅能控制在公共端口的流量出入。
NIC或子网只能有一个NSG来定义流量出站入站规则,一个NSG可以最多包括200个规则。

监听和Troubleshooting

事件日志process
如果部署了一个资源,那么resource provider会向Azure Event Service进行报备。Event Service收集各种事件日志。

活动日志

用活动日志在做故障排除或者监控时来查找错误。
活动日志记载了企业里的用户是怎么更改资源的。
从活动日志里面你可以确定:

  1. 可以确定你的订阅里面有啥资源
  2. 谁发起了这个操作
  3. 这个操作声明时候发生的
  4. 操作的状态
  5. 还有其他关于操作的属性
    活动日志包括所有的写操作,put/post/delete,但是不包括读功能(get)

活动日志可以用门户 powershell Azure CLI, REST API 来进行查看
活动日志可以保留三个月(90天),但只能查询15天以内的

故障排查

troubleshooting没看

发布了19 篇原创文章 · 获赞 0 · 访问量 1206

猜你喜欢

转载自blog.csdn.net/qq_24550639/article/details/100584651