Red Hat Ansible Automation Platform으로 Windows 호스트를 관리하고 있다면 이 블로그를 꼭 읽어보세요! 여기서 Active Directory를 Ansible Automation Platform의 정보 소스로 활용하는 데 사용할 수 있는 Active Directory 인벤토리 플러그인을 집중적으로 소개하려고 합니다. 먼저 한 걸음 뒤로 물러나 인벤토리 관리가 중요한 이유를 살펴보겠습니다.
Ansible Automation Platform은 간편하고 강력한 에이전트리스 자동화 툴로 설계되었습니다.
에이전트리스 아키텍처는 에이전트를 설치할 수 있는 기기를 관리하는 것에만 국한되지 않으므로 자동화할 수 있는 부분의 폭과 깊이가 매우 큽니다. 에이전트리스 환경에서 인벤토리 관리는 성공을 위한 기반입니다. 일반적으로 알아야 할 사항은 다음과 같습니다.
- 어떤 기기를 관리해야 하나요? 정확한 최신 인프라 목록은 어디에서 확인할 수 있나요?
- 어떻게 노드를 분류하면 노드에 대해 자동화하는 방법을 알 수 있나요? 예를 들어 데이터베이스 서버에 대해 실행하는 자동화는 웹 서버와 다릅니다.
인벤토리 플러그인은 이러한 문제에 대한 간단하고 훌륭한 솔루션을 제공합니다. 가장 간단한 형태는 스크립트를 사용하여 정보 소스를 가리켜 서버 목록과 해당 서버에 대해 자동화하는 방법을 더 잘 이해하는 데 도움이 될 수 있는 모든 특성을 수집할 수 있습니다.
Microsoft Windows 환경 관리에 대해 검토할 때 Active Directory는 일반적으로 서버가 도메인에 등록되므로 매우 매력적인 정보 소스가 됩니다. Microsoft AD용 Red Hat Ansible Certified Content Collection 덕분에 이제 Microsoft Active Directory와 상호작용할 수 있는 다양한 모듈 세트를 보유하게 되었으며, 중요한 것은 Active Directory를 정보 소스로 활용할 수 있는 인벤토리 플러그인이 있다는 점입니다. 이 인벤토리 플러그인을 사용하면 Active Directory 속성 및 그룹 멤버십에 따라 호스트를 필터링하고 그룹화할 수 있습니다.
플러그인이 실제 어떻게 작동하는지 살펴보겠습니다.
커맨드라인으로 시작하기
자동화 콘텐츠 내비게이터와 자동화 실행 환경을 사용하여 커맨드라인으로 시작해 보겠습니다. 자동화 콘텐츠 내비게이터 설치 및 구성에 대한 지침은 콘텐츠 생성 설명서에서 확인하실 수 있습니다. Ansible Automation Platform 2.4+와 함께 제공되는 지원되는 실행 환경에는 Microsoft Active Directory와의 통합을 시작하는 데 필요한 모든 것이 이미 포함되어 있습니다. 여기에는 microsoft.ad 컬렉션과 필수 Python 종속성이 포함됩니다. 이전 릴리스의 경우 이러한 사전 요구 사항을 포함하려면 실행 환경을 사용자 정의해야 할 수 있습니다.
다행히도 debug_ldap_client 모듈을 사용하여 필요한 Python 종속성과 DNS 및 Kerberos 구성을 확인할 수 있습니다. 자동화 실행 환경을 사용하고 있으므로 이미지 내부에서 이를 실행하여 인벤토리 플러그인에 대한 필수 종속성이 있는지 확인하겠습니다. 여기서는 활용 사례에 대한 Python 종속성이 있는지 확인하는 데만 관심이 있으므로 역추적 오류는 무시할 수 있습니다.
$ ansible-navigator exec -- ansible localhost -m microsoft.ad.debug_ldap_client
< Output Truncated >
"packages": {
"dnspython": "2.3.0",
"krb5": "0.5.0",
"pyspnego": "0.9.0",
"sansldap": "0.1.0"
Active Directory 서버를 쿼리하는 인벤토리 정의를 생성하려면 인벤토리 파일이 microsoft.ad.ldap.yml 또는 microsoft.ad.ldap.yaml로 끝나야 하므로 간단히 microsoft.ad.ldap.yml이라고 부르겠습니다. 테스트를 위해 다음 구성을 사용하고 있습니다. 사용자 이름과 비밀번호는 일반 텍스트입니다. 이는 단순히 초기 연결 테스트를 수행하여 사용하려는 몇 가지 속성으로 작업을 시작할 수 있도록 하기 위한 것입니다. 자격 증명은 나중에 수정하겠습니다.
plugin: microsoft.ad.ldap
server: ms-ad.demolab.local
username: svc-aap-ldap
password: Redhat123
tls_mode: ldaps
이제 Ansible Automation Platform 내비게이터 "inventory" 하위 명령을 사용하여 커맨드라인에서 플러그인을 테스트할 수 있습니다. ldap을 사용하므로 /etc/pki/ca-trust 경로를 사용하여 RHEL 호스트의 CA 신뢰 저장소를 실행 환경으로 매핑합니다.
출력을 보면 도메인 컨트롤러인 MS-AD라는 호스트를 발견했음을 알 수 있습니다.
$ ansible-navigator inventory -i microsoft.ad.ldap.yml --list -m stdout --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
{
"_meta": {
"hostvars": {
"MS-AD": {
"ansible_host": "ms-ad.demolab.local",
"microsoft_ad_distinguished_name": "CN=MS-AD,OU=Domain Controllers,DC=demolab,DC=local"
}
}
},
"all": {
"children": [
"ungrouped"
]
},
"ungrouped": {
"hosts": [
"MS-AD"
]
}
}
연결은 양호해 보이지만 반환된 정보가 약간 부족하여 호스트를 그룹에 추가하지 못했습니다. 필요에 따라 사용자 정의하기 위해 인벤토리 플러그인을 제공할 수 있는 문서화된 매개 변수가 매우 많습니다.
실제로 Active Directory의 모든 컴퓨터 속성은 필터링, 변수 설정 또는 호스트 그룹화에 사용할 수 있습니다. MS-AD 호스트에 사용 가능한 모든 속성을 보려면 Active Directory PowerShell 모듈이 설치된 Windows 호스트에서 다음 PowerShell 명령을 사용하면 됩니다.
Get-ADComputer -Identity "MS-AD" -Properties *
몇 가지 추가 매개 변수를 포함한 다음 호스트 그룹화를 시작하겠습니다. Active Directory에서 검색할 몇 가지 추가 속성을 포함하도록 인벤토리 구성 파일 microsoft.ad.ldap.yml을 업데이트합니다. 업데이트된 예제에서는'OperatingSystem' 및 'location'에 대한 속성과 컴퓨터가 속해 있는 모든 그룹 목록을 가져옵니다. regex_search 행이 이상해 보여도 걱정하지 마세요. 설명서에서 복사하여 붙여넣은 것입니다.
구성의 마지막 섹션에서는 노드를 분류할 수 있도록 Ansible Automation Platform 그룹을 정의합니다. 모든 시스템이 'windows'라는 그룹에 자동으로 추가됩니다. 또한 '프로덕션' 도메인 그룹의 멤버인 모든 호스트를 '프로덕션'이라는 해당 그룹에 추가합니다. 마지막으로 운영 체제 및 위치 속성에 따라 그룹에 호스트를 추가합니다. 다음은 최종 구성 파일입니다.
plugin: microsoft.ad.ldap
server: ms-ad.demolab.local
username: svc-aap-ldap
password: Redhat123
tls_mode: ldaps
attributes:
OperatingSystem:
operating_system:
location:
memberOf:
computer_membership: this | map("regex_search", '^CN=(?P<name>.+?)((?<!\\),)', '\g<name>') | flatten
groups:
windows: true
production: '"Production" in computer_membership'
keyed_groups:
- key: operating_system | lower
prefix: os
default_value: unknown
- key: location | lower
default_value: unknown
prefix: location
커맨드라인의 마지막 테스트입니다. Active Directory에서 다시 가져온 속성을 검토해 보겠습니다. '__ansible_unsafe'가 있는 값은 단순히 jinja2 템플릿에서 차단되었음을 의미합니다.
$ ansible-navigator inventory -i microsoft.ad.ldap.yml -m stdout --host MS-AD --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
{
"ansible_host": "ms-ad.demolab.local",
"computer_membership": [
{
"__ansible_unsafe": "Production"
}
],
"location": {
"__ansible_unsafe": "london-dc1"
},
"microsoft_ad_distinguished_name": "CN=MS-AD,OU=Domain Controllers,DC=demolab,DC=local",
"operating_system": {
"__ansible_unsafe": "Windows Server 2019 Standard Evaluation"
}
}
다음으로 그룹 멤버십을 살펴보겠습니다. 이제 서버는 필요에 따라 해당 서버에 대상을 지정하는 데 사용할 수 있는 4개의 Ansible Automation Platform 그룹의 멤버입니다.
$ ansible-navigator inventory -i microsoft.ad.ldap.yml -m stdout --graph --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
@all:
|--@_london_dc1:
| |--MS-AD
|--@os_windows_server_2019_standard_evaluation:
| |--MS-AD
|--@production:
| |--MS-AD
|--@windows:
| |--MS-AD
테스트를 완료했습니다! 오토메이션 컨트롤러가 있는 엔터프라이즈 환경에서 이를 사용하는 방법을 살펴보겠습니다.
오토메이션 컨트롤러 구성
기업은 오토메이션 컨트롤러를 통해 자동화 배포, 시작, 위임, 감사 방식을 표준화할 수 있습니다. 이제 일반 텍스트 자격 증명을 수정하고 인벤토리 구성에 대한 일부 제어를 적용해 보겠습니다.
자격 증명 유형 생성 - 오토메이션 컨트롤러를 통해 사용자 정의 자격 증명 유형을 정의하여 보안 상태를 유지하면서 다양한 시스템과 상호작용할 수 있습니다. 이렇게 하면 일반 텍스트로 사용하지 않고 런타임에 환경 변수를 주입할 수 있습니다. 인벤토리 플러그인에 대한 설명서를 보면 인증을 위해 다양한 환경 변수를 허용한다는 것을 알 수 있습니다. 이러한 변수를 오토메이션 컨트롤러와 함께 사용할 것입니다.
오토메이션 컨트롤러 UI에서 'Credential Types(자격 증명 유형)'으로 이동하여 '추가(Add)'를 누릅니다. 자격 증명 유형에 'Microsoft AD Inventory(Microsoft AD 인벤토리)'라는 이름을 지정합니다. '입력 구성'의 경우 이러한 필드를 사용하여 사용자 이름, 비밀번호 및 AD 서버에 필요한 필드를 정의할 수 있습니다.fields: - id: MICROSOFT_AD_LDAP_USERNAME type: string label: Username - id: MICROSOFT_AD_LDAP_PASSWORD type: string label: Password secret: true - id: MICROSOFT_AD_LDAP_SERVER type: string label: AD Server required: - MICROSOFT_AD_LDAP_USERNAME - MICROSOFT_AD_LDAP_PASSWORD - MICROSOFT_AD_LDAP_SERVER
'injector configuration(인젝터 구성)'은 인벤토리 동기화에 주입할 변수를 정의합니다. 다음을 사용합니다.
env: MICROSOFT_AD_LDAP_SERVER: '{{ MICROSOFT_AD_LDAP_SERVER }}' MICROSOFT_AD_LDAP_PASSWORD: '{{ MICROSOFT_AD_LDAP_PASSWORD }}' MICROSOFT_AD_LDAP_USERNAME: '{{ MICROSOFT_AD_LDAP_USERNAME }}'
- 자격 증명 생성 - 이제 새 자격 증명 유형이 있으므로 해당 자격 증명을 생성할 수 있습니다. 'Credentials(자격 증명)'로 이동하여 'Add(추가)'를 클릭합니다. 'Microsoft AD Inventory(Microsoft AD 인벤토리)'의 새 자격 증명 유형을 선택하고 커맨드라인에서 수행한 대로 사용자 이름, 비밀번호, Active Directory 서버를 채웁니다.
- 프로젝트 생성 - 소스 제어에서 Active Directory 인벤토리 구성을 관리하여 관련 동료 검토 및 승인을 통해 변경 사항이 흐르도록 하려고 합니다. 오토메이션 컨트롤러의 프로젝트를 사용하면 소스 제어 리포지토리에 매핑할 수 있습니다. 커맨드라인에 대해 작성한 구성을 GitHub 리포지토리(주소: https://github.com/pharriso/ansible_microsoft_ad_inventory)로 푸시했습니다.
중요! - 사용자 이름, 비밀번호 또는 Active Directory 서버는 소스 제어로 푸시하지 않았습니다. 이러한 항목은 이제 오토메이션 컨트롤러의 자격 증명을 통해 처리됩니다. 인벤토리 구성에서 매개 변수를 삭제하세요!
오토메이션 컨트롤러 UI에서 'Projects(프로젝트)'로 이동한 다음 'Add(추가)'를 클릭합니다. 다음은 적절한 소스 제어 URL이 채워진 프로젝트의 세부 정보입니다. 추가 프로젝트 필드에 대해서는 해당 문서에서 자세히 알아볼 수 있습니다.
인벤토리 생성 - 이제 인벤토리를 생성할 수 있습니다. 'Inventories(인벤토리)'로 이동하여 'Add(추가)'를 클릭한 다음 '인벤토리 추가(Add Inventory)'를 클릭합니다. 인벤토리에 적절한 이름을 지정합니다.
'Save(저장)'를 누르면 인벤토리에 추가 옵션을 사용할 수 있게 됩니다. 'Sources(소스)'를 선택하고 'Add(추가)'를 클릭합니다. 여기에서 인벤토리 구성 파일과 자격 증명을 선택하여 구성을 통합합니다. 완성된 인벤토리 소스는 다음과 같습니다.참고 - 여기서 가능한 유일한 문제는 인벤토리 파일 이름을 수동으로 입력하고 Enter 키를 눌러 해당 필드를 채워야 한다는 것입니다.
'Save(저장)'를 누르면 화면 하단에 'Sync(동기화)' 버튼이 표시됩니다. 이 버튼을 누르면 인벤토리 플러그인이 실행됩니다. 'Last job status(마지막 작업 상태)'를 보거나 'Jobs(작업)' 메뉴 항목으로 이동하여 진행 상황을 확인할 수 있습니다. 'Success(성공)'이 표시되어 있기를 바랍니다!
'Inventories(인벤토리)', 'Demolab AD Inventory(Demolab AD 인벤토리)'로 이동한 다음 'Host(호스트)' 탭을 선택하여 플러그인 구성을 검증할 수 있습니다. 호스트를 가져왔는지 확인해야 합니다.
호스트를 클릭하면 Active Directory에서 수집한 변수(속성)도 볼 수 있습니다. 마지막으로 'Groups(그룹)' 탭을 클릭하여 호스트를 올바르게 그룹화했는지 확인할 수 있습니다.
다음 단계
인벤토리 관리는 Ansible Automation Platform으로 자동화를 최적화하고 확장하는 데 필수적입니다. Microsoft AD 인벤토리 플러그인은 Ansible Automation Platform이 우리와 같은 사용자의 업무를 어떻게 간소화해 줄 수 있는지 보여주는 또 다른 예일 뿐입니다. Active Directory를 정보 소스로 활용하여 Ansible Automation Platform for Windows 자동화 여정을 가속화하실 수 있기를 바랍니다.
- Ansible Automation Platform for Windows - Ansible Automation Platform을 사용하여 Windows 인프라 및 일반적인 활용 사례를 관리하는 방법을 알아보세요.
- 체험판 서브스크립션 - 사용할 준비가 되셨나요? Ansible Automation Platform의 모든 구성 요소에 무제한으로 액세스할 수 있는 고유 체험판 서브스크립션을 신청하세요.
- Kerberos를 사용하여 Windows 자산 관리
저자 소개
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
오리지널 쇼
엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리
제품
- Red Hat Enterprise Linux
- Red Hat OpenShift Enterprise
- Red Hat Ansible Automation Platform
- 클라우드 서비스
- 모든 제품 보기
툴
체험, 구매 & 영업
커뮤니케이션
Red Hat 소개
Red Hat은 Linux, 클라우드, 컨테이너, 쿠버네티스 등을 포함한 글로벌 엔터프라이즈 오픈소스 솔루션 공급업체입니다. Red Hat은 코어 데이터센터에서 네트워크 엣지에 이르기까지 다양한 플랫폼과 환경에서 기업의 업무 편의성을 높여 주는 강화된 기능의 솔루션을 제공합니다.