首先,我使用这些作为基础指南: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ami-create-standard.html http://reduktor.net/2014/09/autoscale-ec2-instances-ad-aws/
第二,我们的区域不支持 AWS 目录服务
设想
我想为我们拥有的一组应用服务器创建一个“基本 AMI”。我可能需要基于此映像部署 1 个或多个新服务器。
该实例最初是从 EC2 Windows Server 2008 R2 数据中心基础 AMI(由亚马逊创建)创建的
应用程序本身是静态的,许可证是完全可重新分配的,并且配置不需要在一台机器上与另一台机器上进行更改。
不同机器之间唯一的不同就是主机名和网络配置。网络配置由 EC2 处理,因此主机名实际上是从一个实例到另一个实例唯一需要更改的东西
这些计算机是 Active Directory 的一部分,并且已将特定 OU 组策略规则应用于这些计算机。它们都将加入同一个 OU。
目标:
我的目标是拥有一个基础 AMI。启动此 AMI 时,它会自动加入域或已加入域。
从机器运行的应用程序需要域帐户才能运行 Windows 服务。所以我不能拥有未加入域的映像。
我有一个想法(明天会测试一下):
- 创建默认/通用主机名“server-xy”,加入域并创建我的 AMI。关闭源 VM,然后从 AMI 部署。启动后,将其重命名为最终主机名“server-02”。然后从 AMI 部署另一个,重命名,重复上述步骤 - 听起来可行吗?编辑:这不起作用,因为重命名会使域级别的原始主机名无效。看来我想做的事情可能不可行。
答案1
作为加入域的 Windows 计算机的一般规则,您不应按原样克隆它。您应该将其从域中移除并使用 sysprep。然后您可以将其用作模板/基础 AMI。每个新克隆都将使用新的 SID、名称、IP 加入域,在 AD 中创建一个新的计算机帐户。
答案2
我是 AWS 的新手,但如果没有其他答案,我愿意尝试这个。
- 使用适中的实例大小将您的实例设置为黄金映像。
- 给它
server-image
一个工作组中的主机名images
或一些显而易见的名称。 - 安装您需要的所有应用程序,修补它,安装您喜欢的任何实用程序(treesize、VNC、notepad++、winVI、wingrep 等)并创建任何驱动器共享。特别不要加入 AD 域。
关闭这台机器并从中创建 AMI。
然后从该 AMI 创建实例。您可以考虑更便宜的预留实例,或者如果您的工作负载足以让服务器随意进出,您可能想要探索现货实例。
(这是我在 Windows 方面不太清楚的地方) 从 AMI 创建新实例时可以自动执行“操作”。我们使用在始终处于开启状态的 Linux“控制器”实例上运行的 CLI 命令。例如:
./instance-new.py -a "ami-abc123xyz" -c "servers" -n "server-42" -t "t3.16xlarge"
- -a 是您要从中获取来源的 AMI 名称
- -c 是账单类别
- -n 是新机器的主机名
- -t 是实例大小
- 还有更多的命令行选项。
我不能在这里分享我们的定制版本,但原版来自http://docs.aws.amazon.com/cli/latest/reference/opsworks/create-instance.html
我们有类似的附加节,供 Linux 机器获取 salt,然后从 salt-master 进行更新:
userdata = """#!/bin/bash /usr/bin/yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm /usr/bin/yum install -y salt-minion hostnamectl set-hostname %s hostname > /etc/salt/minion_id systemctl start salt-minion sleep 5 /bin/salt-call state.highstate /bin/salt-call state.highstate /usr/bin/yum update -y """ % args.hostname
必须有一些 Windows/AD 方式来通过脚本加入域。
该脚本还设置了监控和其他内容。
另外,如果您使用自动拆除,那么您将需要运行某种脚本来离开 AD 并在删除实例之前清理旧帐户。
当您的服务器有点旧,或者有关键的 Windows 补丁时,请启动您的黄金映像并应用所有更新/升级。然后停止它并创建一个新的 AMI。将您的创建脚本指向新的 AMI,一旦您满意它的工作,删除旧的 AMI 以节省存储成本。有充分的理由保留至少一个以前的黄金映像 AMI 作为已知良好的备份 - 我们保留了两个。