率这个职位

首次发布于网址:https://nivleshc.wordpress.com

介绍

真的,时光飞逝,真是太神奇了。差不多两年前,我写了一组博客,展示了如何使用Azure资源管理器(ARM)模板和所需的状态配置(DSC)脚本自动部署Active Directory Forest。
对于那些想回忆往事的人来说,这是到博客
最近,我一直在玩AWS CloudFormation,我只是对它的威力感到敬畏。对于不熟悉AWS cloudformation的用户,它是一种工具,与Azure资源管理器类似,它允许你“编码”您在Amazon Web Services中的计算基础设施。你不得不坐下来的日子已经一去不复返了,按下每个按钮并选择每个选项以部署您的环境。云计算为您提供了一种与结构交互的方式,以便编写环境构建的脚本。这样做的好处是巨大的。首先,它允许您标准化所有构建。其次,它允许您拥有一个活动的构建文档(代码就是构建文档)。第三,代码可重复使用。最重要的是,由于部署现在是脚本化的,你可以自动化。
在本博客中,我将向您展示如何创建AWS CloudFormation模板来部署AWS弹性计算云(EC2) Windows服务器实例。该模板还将包括将EC2实例升级到新Active Directory林中的域控制器的步骤。
猜猜最棒的部分是什么?创建模板后,你所要做的就是把它加载到AWS的云形成中,提供一些价值观,坐下来放松。AWS CloudFormation将从那时起为您做一切!
听起来很有趣吗?让我们开始。

创建CloudInformation模板

CloudFormation模板首先定义将使用的参数。将要求运行模板的人员(让我们将其称为操作员)提供这些参数的值。
定义参数时,您将提供以下内容

  • 参数的名称
  • 其类型
  • 参数的简短描述,以便操作员知道它将用于什么目的
  • 要对参数施加的任何约束,例如
    • 最大长度(用于字符串)
    • 允许值列表(在这种情况下,会向操作员显示下拉列表,可供选择)
  • 参数的默认值

对于我们的模板,我们将使用以下参数。

接下来,我们将定义一些映射。映射允许我们定义变量的值,基于为参数提供的值。
创建EC2实例时,我们需要为要使用的AmazonMachineImage(AMI)提供一个值。在我们的例子中,我们将使用OS版本来决定使用哪个AMI。
要查找将在其中部署EC2实例的子网,我们将使用环境可用性区找到它的参数。
下面的代码定义了我们将使用的映射

CloudInformation模板的下一部分是资源。这定义了将要创建的所有资源。
如果您有部署Active Directory林的经验,您将知道,使用PowerShell脚本执行此操作非常简单。你猜怎么着,我们现在也将使用PowerShell脚本,创建EC2实例后,我们需要提供PowerShell脚本,这样它就可以运行它们了。我们将使用AWS Simple Storage Service (S3)存储桶来存储PowerShell脚本。
为了确保我们的PowerShell脚本被安全存储,我们只允许通过特定的角色和政策来访问它。
下面的代码将创建一个AWS标识和访问管理(IAM)角色和策略,以访问存储PowerShell脚本的S3桶。

我们将使用cf-init来完成所有的繁重工作,一旦创建了EC2实例。CF in it是一个在EC2实例中默认存在的实用程序,我们可以要求它为我们执行任务。
触发CF初始化,我们将使用用户目录EC2实例设置的功能。CF初始化,开始时,将检查EC2元数据以获取它将使用的凭据,它还将检查它需要执行的所有任务。
下面是将要使用的元数据。为简单起见,我已经硬编码了S3 bucket中文件的URL。

如你所见,我首先定义了cf init用来访问s3 bucket的角色。接下来,将执行以下任务:按照配置集中定义的顺序

  • get-files
    • 它将从S3下载文件,并将它们放在本地目录C:\S3 downloads\scripts中。
  • configure-instance(本节中的命令按字母顺序运行,所以我在它们前面加了个数字,以确保符合我想要的顺序)
    • 它会将PowerShell的执行策略更改为“不受限制”(请注意,这只是出于演示目的,不应将执行策略放宽)。
    • 接下来,服务器的名称将更改为“参数”部分中提供的名称。
    • the following Windows Components will be installed (as defined in the Add-WindowsComponents.ps1 script file)
      • RSAT AD PowerShell
      • 广告域服务
      • 域名服务器
      • GPMC
    • 将创建Active Directory林,using the Configure-ADForest.ps1 script and the values provided in the Parameters section

在云形成模板的最后一部分,我们将提供将触发cfn init运行并执行所有配置的用户数据信息。我们还将标记EC2实例,基于参数部分的值。
为简单起见,我已经硬编码了将附加到EC2实例的安全组(定义为GroupSet网络接口)你可以很容易地为它创建一个额外的参数,如果你愿意的话。
最后,我们的模板将输出实例的主机名,它的创建环境及其私有权。这提供了一种在创建EC2实例后识别该实例的简单方法。
下面是模板的最后一部分

现在你要做的就是登录到AWS CloudFormation,加载我们创建的模板,提供参数值并放松。
AWS CloudFormation将从这里获取并为您做一切
这有多简单?魔术
完整的CloudInformation模板可在https://gist.github.com/nivleshc/867b1a2ca119c7d22cf215b5a9a5de02
可以使用下面的链接下载CloudFormation模板中使用的两个PowerShell脚本
Add-WindowsComponents.ps1
Configure-ADForest.ps1
对于在AWS中部署Active Directory Forest的任何人,我希望上面的内容能派上用场。
享受

类别:
亚马逊网络服务动力壳
标签:

留下答复

留下答复

订阅
最新的 最老的 多数投票
通知
约瑟夫·P
客人
约瑟夫·P

很棒的工作和模板。谢谢!

跟着我们!

Kloud解决方案博客-关注我们!