현재 Windows Server 2012 R2를 실행하는 VM 빌드를 자동화하려고합니다. 현재 과제는 역할 및 기능 추가를 자동화하는 것입니다. 역할 및 기능 마법사에는 PowerShell에서 실행할 수있는 XML 구성 파일을 내보내는 옵션이 있습니다.
그러나 XML 파일을 살펴본 후에는 파일이 실행중인 서버에 따라 다르며 “ComputerName”과 같은 필드가 포함되어 있음을 알 수 있습니다.
많은 VM에 역할과 기능을 설치하는 스크립트를 실행하려면 어떻게합니까? 특정 컴퓨터에 맞게 개인화되지 않은 일반화 된 구성 파일이 필요합니다.
누구 든지이 문제에 대한 의견이 있습니까?
답변
예, Linux 및 Windows 모두 다음을 수행 할 수있는 원하는 상태 구성 파일을 빌드 할 수 있습니다.
- 서버 역할 및 기능 활성화 또는 비활성화
- 레지스트리 설정 관리
- 파일 및 디렉토리 관리
- 프로세스 및 서비스 시작, 중지 및 관리
- 그룹 및 사용자 계정 관리
- 새로운 소프트웨어 배포
- 환경 변수 관리
- Windows PowerShell 스크립트 실행
- 원하는 상태에서 벗어난 구성 수정
- 주어진 노드에서 실제 구성 상태를 발견하십시오.
다음은 IIS를 활성화하고 웹 사이트 파일이 올바른 폴더에 있는지 확인하고 이러한 파일이 설치 또는 누락되지 않은 경우이를 적절하게 설치 또는 복사하는 샘플 구성 파일입니다 ($ websitefilepath는 다음과 같습니다. 웹 사이트 파일의 소스로 사전 정의 됨) :
Configuration MyWebConfig
{
# A Configuration block can have zero or more Node blocks
Node "Myservername"
{
# Next, specify one or more resource blocks
# WindowsFeature is one of the built-in resources you can use in a Node block
# This example ensures the Web Server (IIS) role is installed
WindowsFeature MyRoleExample
{
Ensure = "Present" # To uninstall the role, set Ensure to "Absent"
Name = "Web-Server"
}
# File is a built-in resource you can use to manage files and directories
# This example ensures files from the source directory are present in the destination directory
File MyFileExample
{
Ensure = "Present" # You can also set Ensure to "Absent"
Type = "Directory“ # Default is “File”
Recurse = $true
# This is a path that has web files
SourcePath = $WebsiteFilePath
# The path where we want to ensure the web files are present
DestinationPath = "C:\inetpub\wwwroot"
# This ensures that MyRoleExample completes successfully before this block runs
DependsOn = "[WindowsFeature]MyRoleExample"
}
}
}
자세한 내용은 Windows PowerShell 원하는 상태 구성 개요 및 Windows PowerShell 원하는 상태 구성 시작을 참조하십시오 .
그렇다면 단순히 install-windowsfeature cmdlet 대신 이것을 사용하는 이유는 무엇입니까? 스크립트 대신 DSC를 사용하는 진정한 장점은 대상 시스템에 대해 푸시 또는 풀 구성을 저장할 수있는 위치를 정의 할 수 있다는 것입니다 ( 푸시 및 풀 구성 모드 참조) . 구성은 머신이 물리적인지 가상인지 상관하지 않지만 DSC를 가져 오기 위해 서버를 부팅하려면 최소한 2012 년이 필요하다고 생각합니다.
답변
PowerShell에서 모든 것을 할 수 있습니다
Get-WindowsFeature | ? { $_.Installed } | Export-Clixml .\installed.xml
새 서버가 액세스 할 수있는 xml을 복사해야합니다.
Import-Clixml <path to xml>\installed.xml | Install-WindowsFeature
답변
Import-Module servermanager
Install-WindowsFeature Feature,
Feature,
Feature,
etc
위의 기능 목록이 설치됩니다. 하드 코딩하거나 한 줄에 하나씩 파일에 저장 한 다음이를 사용하여 설치할 수 있습니다.
Import-Module servermanager
$features = get-content C:\Features.txt
Install-WindowsFeature $features