Переименование компьютера после присоединения к домену на AWS

У нас есть инфраструктура домена Windows, развернутая на инстансах AWS EC2. Чего мы хотим добиться, так это создать собственный sysprepped образ, который при запуске новых экземпляров автоматически присоединится к домену, а затем переименует себя в зависимости от региона, зоны доступности и имени сервера, определенных в консоли AWS.

Первый шаг уже реализован с использованием компонента домена присоединения, добавленного в sysprep2008.xml, как показано ниже:

<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Identification>
        <UnsecureJoin>False</UnsecureJoin>
        <Credentials>
          <Domain>dc.connatix.com</Domain>
          <Password>####</Password>
          <Username>####</Username>
        </Credentials>
        <JoinDomain>####</JoinDomain>
        <MachineObjectOU>OU=Servers,DC=dc,DC=####,DC=com</MachineObjectOU>
      </Identification>
</component>

Для операции переименования мы пробовали множество вариантов: 1. выполнить сценарий powershell после sysprep, который извлечет список сценариев, которые должны быть применены с контроллера домена, и выполнит их один за другим, но Get-AdDomainController ничего не возвращает на этом шаге 2. Добавьте запланированную задачу через групповую политику, которая будет выполнять этот сценарий: это не работает, так как мы не можем добавить задачу, которая будет выполняться под учетной записью администратора домена через групповую политику 3. Добавьте сценарий запуска через групповую политику, но опять же, это не выполняется под учетная запись администратора домена.

Сценарий, используемый во всех этих сценариях, приведен ниже, и он отлично работает при запуске от пользователя, прошедшего проверку подлинности.

$mypwd = ConvertTo-SecureString -String "####" -Force -AsPlainText
$mycreds = New-Object System.Management.Automation.PSCredential ("####", $mypwd)

Set-AWSCredentials -AccessKey #### -SecretKey #### -StoreAs default

$InstanceId = (Invoke-RestMethod 'http://169.254.169.254/latest/meta-data/instance-id').ToString()
$AvailabilityZone = (Invoke-RestMethod 'http://169.254.169.254/latest/meta-data/placement/availability-zone').ToString().ToLower()
$Region = $AvailabilityZone.Substring(0,$AvailabilityZone.Length-1)
$computer = Get-WmiObject Win32_ComputerSystem

$Tags = Get-EC2Tag -Filters @{Name='resource-id';Value=$InstanceId} -Region $Region
$InstanceName = $AvailabilityZone + '-' + ($Tags | Where-Object {$_.Key -eq 'Name'}).Value.ToLower()

$computerName = $computer.Name.ToLower();
If($InstanceName -ne $null) {
    If ($computerName -ne $InstanceName) {
        Rename-Computer -NewName $InstanceName -DomainCredential $mycreds -Restart
    }
}

Как вы думаете, как мы можем этого добиться? заранее спасибо


person Radu Cotofana    schedule 21.01.2015    source источник
comment
Не уверен, делаете ли вы это уже или нет, но в EC2 может быть дополнительная проблема, где имя компьютера (условно) сбрасывается при каждой загрузке службой конфигурации EC2. Вы можете отключить его из диалога службы.   -  person Anthony Neace    schedule 22.01.2015
comment
Привет, Энтони, у нас уже есть автоматический сброс имени компьютера на ec2, но я хотел бы, чтобы имя компьютера было тегом EC2, установленным в консоли. Нам это нужно, потому что мы хотели бы сделать что-то вроде следующего: если имя компьютера, скажем, WEB-PROD-X, чтобы автоматически установить IIS, развернуть наши веб-приложения и добавить под балансировщик нагрузки. Если это SERV-PROD-X для автоматической установки наших пользовательских служб Windows и так далее. Очень важно, чтобы мы придерживались нашего соглашения об именах.   -  person Radu Cotofana    schedule 22.01.2015
comment
Можете ли вы уточнить, какую ошибку вы получили со сценарием, который вы разместили, и когда? Или вы действительно в конце концов заставили это работать? Я собираюсь приступить к аналогичному начинанию, но прежде чем я начну идти по тому же пути, чтобы устранить неполадки, если у вас это получилось, я был бы признателен за продолжение. Спасибо.   -  person ss2k    schedule 29.07.2015
comment
привет сс2к. Я отказался от этой работы, потому что это отнимало много времени, а симуляция была очень сложной. Я дам вам знать, если я собираюсь возобновить работу над ним и заставить его работать.   -  person Radu Cotofana    schedule 29.07.2015


Ответы (1)


Взгляните на gMSA, хотя он поддерживается в лесу 2008 года, он стал еще лучше с 2012 и R2. Вы создаете учетную запись gMSA, принадлежащую группе администраторов домена, и связываете эту учетную запись gMSA с контроллерами домена.

Затем используйте сценарий powershell для создания запланированной задачи (единственный способ создать ее с помощью учетной записи gMSA). Когда задача выполняется, пароль автоматически обрабатывается контроллером домена.

person Tram    schedule 09.09.2016