Показаны сообщения с ярлыком windows. Показать все сообщения
Показаны сообщения с ярлыком windows. Показать все сообщения

четверг, 26 января 2017 г.

AWS CodeDeploy Windows: каталог запуска скриптов и списки в файле

Потратил время на это. Что бы не забыть:
CodeDeploy скачивает бандл, разворачивает, копирует, запускает и так далее.
У меня есть хук BeforeInstall - это скрипты - один batch, второй ps1. Они запускаются до начала отработки секции files!
appspec.yml:
version: 0.0
os: windows
files:
  - source: Websites\
    destination: C:\Websites
hooks:
  BeforeInstall:
    - location: CodeDeploy\beforeinstall.bat
      timeout: 900
    - location: CodeDeploy\beforeinstall.ps1
      timeout: 900
  AfterInstall:
    - location: CodeDeploy\afterinstall.bat
      timeout: 900
    - location: CodeDeploy\afterinstall.ps1
      timeout: 900

Beforeinstall.bat:
------------------------
@@echo off

%systemroot%\system32\inetsrv\APPCMD stop sites "Default Web Site"
iisreset /stop

FOR /F "tokens=1 delims=," %%i  IN (%~dp0\apps_list.txt) DO (
  pushd C:\Websites\%%i
  rmdir /s /q C:\Websites\%%i
)

iisreset /start
%systemroot%\system32\inetsrv\APPCMD start sites "Default Web Site"
-------------------

Красным выделил переменную, которая даст текущее местоположение скрипта (не место, откуда запустили а именно место, где сам скрипт лежит). В файле apps_list.txt перечень сайтов и соответствие пулов IIS для каждого через запятую.
site1,pool number 1 ASP
site2, .NET 4.0 pool



четверг, 12 января 2017 г.

Анализ медленной загрузки EC2 Instance Windows Server 2008R2


Есть EC2 Instance, сделанный с AMI AWS. Старт инстанса после включения его в домен происходит 40 минут. Хорошо помогает в процессе понимания что происходит xbootmgr.
Что в итоге сделали:
1. Disabled IPv6 stack for AD DC server
2. ran xbootmgr for optimization bootstrap (xbootmgr -trace boot -traceflags BASE+CSWITCH+DRIVERS+POWER -numruns 1 –stackwalk Profile+CSwitch -resultpath C:\TEMP). Warning! Required auto reboot.
3. Set up DNS resolve for DC to: first - self, second 127.0.0.1. (if exists secondary DC, first DNS resolve should be IP address of second DC, second DNS resolve should be IP address of first DC). Forwarders should be by Root Hints on DNS's.
4. Set up DNS resolve on client Windows server to DNS of AD DC.
Время загрузки порядка 7 минут стало.

четверг, 29 декабря 2016 г.

AWS. Скрипт для UserData по включению EC2 Instance в AD Domain

Для включения в домен DOMAIN.local, используем аккаунт в AD JoinDomain.
EC2 будет включена в домен в OU: OU1.OU2.DOMAIN.local


$instanceID = 'null'
while ($instanceID -NotLike 'i-*') {
   Start-Sleep -s 3
   $instanceID = invoke-restmethod -uri http://169.254.169.254/latest/meta-data/instance-id
}
$newname=[string]::Concat('ServerName-',$instanceID)
$username = 'DOMAIN.local\JoinDomain'
$password = 'Password' | ConvertTo-SecureString -AsPlainText -Force
$cred = New-Object -typename System.Management.Automation.PSCredential($username, $password)
Try {
   Rename-Computer -NewName $newname -Force
   Start-Sleep -s 5
   Add-Computer -DomainName sfmatch.local -OUPath 'OU=OU1,OU=OU2,DC=DOMAIN,DC=local' -Options JoinWithNewName,AccountCreate -Credential $cred -Force -Restart -erroraction 'stop'
}
Catch{
   echo $_.Exception | Out-File c:\opt\error-joindomain.txt -Append
}

Windows 2008R2. Создать и настроить SMTP relay

PowerShell as Administrator
>get-WindowsFeature smtp-server
> import-module servermanager
>add-windowsfeature smtp-server

Установка закончится и управление из графики будет доступно как оснастка inetmgr6
Далее скрипт (один из вариантов) для его настройки:

Import-Module ServerManager
$smtpconf=Get-WMIObject IISSMTPServerSetting -Namespace root/MicrosoftIISv2
$smtpconf.AuthAnonymous=1
$smtpconf.AllowAnonymous=1
$smtpconf.BadMailDirectory="C:\inetpub\mailroot\Badmail"
$smtpconf.DefaultDomain="mydomain.ru"
$smtpconf.FullyQualifiedDomainName="serverok.mydomain.ru"
$smtpconf.MasqueradeDomain="mydomain.ru"
$smtpconf.RelayForAuth=-1
$smtpconf.RouteAction=268 ( этот код включает также TLS!, если не нужно то поставит 264)
$smtpconf.RoutePassword="superPassword"
$smtpconf.RouteUserName="usernameForAuth"
$smtpconf.SendNdrTo="allemailtome@mydomain.ru"
$smtpconf.ServerAutoStart=1
$smtpconf.SmartHost="email-smarthost.go-go.ru"
$smtpconf.SmartHostType=2
$smtpconf.SmtpDisableRelay=1
$smtpconf.SmtpHeloNoDomain=1
$smtpconf.UpdatedDefaultDomain=1
$smtpconf.UpdatedFQDN=1
$smtpconf.SmtpMailNoHelo=1
## не поверите! Строчка ниже добавляет в релей список только ОДИН адрес 127.0.0.1
$relayIPs = @( 24, 0, 0, 128, 32, 0, 0, 128, 60, 0, 0, 128, 68, 0, 0, 128, 1, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 127, 0, 0, 1 )
$smtpconf.RelayIpList=$relayIPs

$smtpconf.put()


Если на запрос Get-WMIObject IISSMTPServerSetting -Namespace root/MicrosoftIISv2
получаем Invalid NameSpace root/MicrosoftIISv2, это означает, что не установлена служебная роль WMI IIS6 Compatible.

PowerShell. Полезное для работы

Сравнить два файла (аналог diff): Compare-Object (gc $file1) (gc $file2)


четверг, 31 января 2008 г.

Работаем с массивом SUN StorageTek

Есть дисковый массив StorageTek 6140. Надо подключить его к серверам под управлением Солярис и Виндовс. Поехали.
Массивы управляются ПО CAM (Common Array Amanagement). Сам массив имеет подключение через COM-порт своим забавным кабелем (разъем на стороне массива похож на S-Video). Через это подключение можно настроить IP адреса для сетевых интерфейсов. Далее все управление перенесено в CAM. ПО управления можно установить на рабочую станцию админа, на сервер или еще куда. На сегодня ПО есть под Linux, Windows, Solaris. Текущая версия 6.0. Если ставим на винды - не забыть сделать юзера root с паролем. Далее для управления идём https://IP_CAM:6789/. Авторизуемся рутом и далее по тексту.

Да, этот дурацкий COM-кабель. Мне повезло только один раз - я получил рабочий кабель. Все остальное время мне не везло. Но это лечится. Нужно отрезать RJ45 и переделать новый в обратном порядке проводов (на место 1-го контакта - 8-й, 2-7 и так далее). Тогда это работает. Если обжимки нет под рукой то так:

1. Если массив пришел с завода и его никто не переконфигурировал, то берем кросс и соединяем с портом 2 (ДВА) любого контроллера (если их два). Станцию управления настроим на адрес 192.168.128.250/24 (или другой адрес в этой подсети кроме 101, 102) и регистрируем массив с адресом 192.168.128.101 (если подключились к первому контроллеру) или 102 (если ко второму).

2. Если массив кто-то перестроил под себя но как - неизвестно. Пробуем вариант 1 - на всякий случай, вдруг не трогали вторые порты. Если трогали и не получилось по первому варианту, подключемся к первому порту любого контроллера кроссом, запускаем снифер и ждем запросов от интерфейса массива - выясняем какой у него текущий адресок. Цепляемся к нему и меняем.
3. Если массив настроен на DHCP а у нас нет в сети такого зверя, делаем по варианту 2.

4. Если у нас есть DHCP в сети и массив настроен на работу с DHCP, но админа этого ресурса уже нет на работе и мы не глянем нужную нам информацию, можно обойти по варианту 2 но сначала подключить кросс и перезагрузить массив.

Еще заметка. Массив должен иметь не менее 5 дисков! Если это будет не так, мы получим очень разнообразные проблемы, начиная с тех, что пропадают списки предустановленых профилей, пулов, все рабочие настройки