자동화 콘텐츠 개발
자동화 작업을 실행하기 위한 Ansible 자동화 콘텐츠 개발
초록
머리말
Red Hat Ansible Automation Platform에 관심을 가져 주셔서 감사합니다. Ansible Automation Platform은 Ansible 기반 환경에 제어, 지식, 위임을 추가하여 팀이 복잡한 다중 계층 배포를 관리하는 데 도움이 되는 상용 서비스입니다.
이 가이드에서는 Ansible 자동화 콘텐츠를 개발하는 방법과 Red Hat Ansible Automation Platform에서 자동화 작업을 실행하는 방법을 설명합니다. 이 문서는 최신 Ansible Automation Platform 릴리스에 대한 정보를 포함하도록 업데이트되었습니다.
Red Hat 문서에 관한 피드백 제공
이 문서를 개선하기 위한 제안이 있거나 오류를 찾을 수 있는 경우 https://access.redhat.com 에서 기술 지원에 문의하여 요청을 열 수 있습니다.
1장. Ansible 개발 툴
Ansible 개발 툴(ansible-dev-tools
)은 자동화 작성자가 플레이북 프로젝트, 실행 환경 및 컬렉션을 생성, 테스트 및 배포하는 데 도움이 되는 Ansible Automation Platform과 함께 제공되는 툴 모음입니다.
Red Hat의 Ansible VS Code 확장은 대부분의 Ansible 개발 툴을 통합합니다. VS Code 사용자 인터페이스에서 이러한 툴을 사용할 수 있습니다.
플레이북, 로컬 테스트 및 CI 파이프라인(linting 및 테스트)에서 로컬 개발 툴을 사용합니다.
이 문서에서는 Ansible 개발 툴을 사용하여 프로젝트 내에서 재사용할 수 있는 플레이북 및 역할이 포함된 플레이북 프로젝트를 생성하는 방법을 설명합니다. 또한 자동화 작업에서 플레이북을 사용할 수 있도록 플레이북을 테스트하고 Ansible Automation Platform 인스턴스에 프로젝트를 배포하는 방법을 설명합니다.
1.1. Ansible 개발 툴 구성 요소
Ansible 확장을 설치하고 나머지를 명령줄에서 VS Code UI에서 일부 Ansible 개발 툴을 작동할 수 있습니다. VS Code는 Linux, Mac 및 Windows에서 사용할 수 있는 무료 오픈 소스 코드 편집기입니다.
- Ansible VS Code 확장
이 패키지는 Ansible Automation Platform RPM 패키지에 포함되어 있지 않지만 자동화 생성 워크플로우의 필수 요소입니다. VS Code UI에서 다음 작업에 Ansible 개발 툴을 사용할 수 있습니다.
- 플레이북 프로젝트 또는 컬렉션의 스캐폴드 디렉터리입니다.
- 구문 강조 표시 및 자동 완료를 사용하여 플레이북을 작성합니다.
- linter를 사용하여 플레이북을 디버깅합니다.
-
ansible-playbook
을 사용하여 Ansible Core로 플레이북을 실행합니다. -
ansible-navigator
를 사용하여 실행 환경에서 플레이북을 실행합니다.
VS Code 확장에서는 IBM watsonx Code Assistant를 사용하여 Red Hat Ansible Lightspeed에 연결할 수도 있습니다.
- 명령줄 Ansible 개발 툴
VS Code의 터미널을 포함하여 명령줄에서 Ansible 개발 툴을 사용하여 다음 작업을 수행할 수 있습니다.
- 실행 환경을 생성합니다.
- 플레이북, 역할, 모듈, 플러그인 및 컬렉션을 테스트합니다.
2장. 자동화 콘텐츠 개발을 위한 워크플로우
2.1. 워크플로
2.1.1. 개발
생성 단계에서는 VS Code를 사용하여 로컬로 새 플레이북 프로젝트를 생성합니다. 다음은 일반적인 워크플로입니다.
- VS Code에서 Ansible 확장을 설치하고 실행합니다.
- VS Code에서 플레이북 프로젝트를 스캐폴드합니다.
- 프로젝트에 플레이북 파일을 추가하고 VS Code에서 편집합니다.
2.1.2. 테스트
-
ansible-lint
의 도움말을 사용하여 플레이북을 디버깅합니다. - 로컬 환경이 Ansible Automation Platform에서 환경을 복제하도록 자동화 실행 환경을 선택하거나 생성합니다.
-
ansible-playbook
을 사용하거나 실행 환경에서ansible-navigator
를 사용하여 VS Code에서 플레이북을 실행합니다. - 프로덕션 환경을 복제하는 실행 환경에서 실행하여 플레이북을 테스트합니다.
2.1.3. 배포
- 플레이북 프로젝트를 소스 제어 리포지토리로 푸시합니다.
- 소스 제어 리포지토리에서 가져오고 플레이북 리포지토리에 대한 프로젝트를 생성하도록 Ansible Automation Platform에서 인증 정보를 설정합니다.
- 실행 환경을 생성한 경우 프라이빗 자동화 허브로 푸시합니다.
- 프로젝트에서 플레이북을 실행하는 Ansible Automation Platform에서 작업 템플릿을 생성하고 사용하려는 실행 환경을 지정합니다.
3장. Ansible 개발 툴 설치
Red Hat은 Ansible 개발 툴 설치를 위한 두 가지 옵션을 제공합니다.
- VS Code 내에서 실행 중인 RHEL 컨테이너에 설치 이 옵션은 MacOS, Windows 및 Linux 시스템에 설치할 수 있습니다.
- RPM(Red Hat Package Manager) 패키지를 사용하여 로컬 RHEL 시스템에 설치합니다.
3.1. 요구 사항
Ansible 개발 툴을 설치하고 사용하려면 다음 요구 사항을 충족해야 합니다. Windows 설치 및 컨테이너화된 설치에 대한 추가 요구 사항은 절차에 표시됩니다.
- Python 3.10 이상
- Ansible 확장이 추가된 VS Code(Visual Studio Code)입니다. VS Code 설치를 참조하십시오.
- 컨테이너화된 설치의 경우 Microsoft Dev Containers VS Code 확장입니다. Dev Containers 확장 설치 및 구성을 참조하십시오.
컨테이너화 플랫폼(예: Podman, Podman 데스크탑, Docker 또는 Docker Desktop)
참고Windows에서 Ansible 개발 툴을 위한 설치 절차는 Podman 데스크탑만 사용합니다. Windows 머신에 Podman 데스크탑 설치를 참조하십시오.
-
Red Hat 계정이 있으며
registry.redhat.io
에서 Red Hat 컨테이너 레지스트리에 로그인할 수 있습니다.registry.redhat.io
에 로그인하는 방법에 대한 자세한 내용은 Red Hat 컨테이너 레지스트리로 인증 을 참조하십시오.
3.1.1. Windows에서 Ansible 개발 툴 요구 사항
Windows의 VS Code에 있는 컨테이너에 Ansible 개발 툴을 설치하는 경우 추가 요구 사항이 있습니다.
- Linux용 Windows Cryostat(WSL2)
- podman Desktop
3.1.1.1. WSL 설치
배포 없이 WSL2를 설치합니다.
`wsl --install --no-distribution`
Copy to clipboardCopied$ `wsl --install --no-distribution`
WSL2에 대해
cgroupsv1
을 비활성화하여cgroupsv2
를 사용합니다.%USERPROFILE%/wsl.conf
파일을 편집하고 다음 행을 추가하여cgroupv2
사용을 강제 적용합니다.[wsl2] kernelCommandLine = cgroup_no_v1="all"
Copy to clipboardCopied[wsl2] kernelCommandLine = cgroup_no_v1="all"
3.1.1.2. Windows 머신에 Podman 데스크탑 설치
Podman 데스크탑을 설치합니다. Podman 데스크탑 설명서의 Windows에 Podman 데스크탑 및 Podman 설치 지침을 따르십시오.
설정 마법사에서 기본 설정을 변경할 필요가 없습니다.
podman 시스템이
cgroupsv2
를 사용하고 있는지 확인합니다.podman info | findstr cgroup
Copy to clipboardCopied$ podman info | findstr cgroup
Podman 데스크탑 테스트:
podman run hello
Copy to clipboardCopied$ podman run hello
3.1.1.3. Podman 데스크탑 설정 구성
다음 콘텐츠를 사용하여
%USERPROFILE%\bin\docker.
northeast 파일을 추가합니다.@echo off podman %*
Copy to clipboardCopied@echo off podman %*
이렇게 하면 VS Code
Dev
컨테이너 확장에 필요한 Docker를 설치할 필요가 없습니다.%USERPROFILE%\bin
디렉토리를PATH
에 추가합니다.- 설정을 선택하고 "사용자 계정의 환경 변수 편집"을 검색하여 모든 사용자 환경 변수를 표시합니다.
- 최상위 사용자 변수 상자에서 "Path"를 강조 표시하고 클릭하고 경로를 추가합니다.
- 를 클릭하여 새 콘솔의 경로를 설정합니다.
3.1.2. Red Hat 컨테이너 레지스트리로 인증
Red Hat 컨테이너 카탈로그를 통해 사용할 수 있는 모든 컨테이너 이미지는 이미지 레지스트리 registry.redhat.io
에서 호스팅됩니다. 레지스트리에는 이미지에 액세스하려면 인증이 필요합니다.
registry.redhat.io
레지스트리를 사용하려면 Red Hat 로그인이 있어야 합니다. 이는 Red Hat 고객 포털(access.redhat.com)에 로그인하고 Red Hat 서브스크립션을 관리하는 데 사용하는 계정과 동일합니다.
VS Code 내부의 컨테이너에 Ansible 개발 툴을 설치하려면 VS Code가 registry.redhat.io
에서 devtools
컨테이너를 가져올 수 있도록 VS Code를 시작하기 전에 registry.redhat.io
에 로그인해야 합니다.
VS Code 내부에서 컨테이너에서 Ansible 개발 툴을 실행 중이고 실행 환경으로 사용할 devcontainer 또는 devcontainer
를 실행 환경으로 가져오려면 VS Code 내부의 터미널에서 devcontainer
내의 터미널 프롬프트에서 로그인해야 합니다.
인증 정보와 함께 podman login
또는 docker login
명령을 사용하여 레지스트리의 콘텐츠에 액세스할 수 있습니다.
- Podman
podman login registry.redhat.io
Copy to clipboardCopied$ podman login registry.redhat.io Username: my__redhat_username Password: ***********
- Docker
docker login registry.redhat.io
Copy to clipboardCopied$ docker login registry.redhat.io Username: my__redhat_username Password: ***********
Red Hat 컨테이너 레지스트리 인증에 대한 자세한 내용은 Red Hat 고객 포털의 Red Hat Container Registry Authentication 을 참조하십시오.
3.1.3. VS Code 설치
- VS Code를 설치하려면 Visual Studio Code 설명서의 Visual Studio Code 다운로드 페이지에 있는 지침을 따릅니다.
3.1.4. VS Code Ansible 확장 설치
Ansible 확장은 Ansible에 대한 언어 지원을 VS Code에 추가합니다. 자동화 콘텐츠를 쉽게 생성하고 실행할 수 있도록 Ansible 개발 툴을 통합합니다.
Ansible 확장에 대한 자세한 내용은 Visual Studio Code Marketplace 를 참조하십시오.
학습 경로 - 확장 작업에 대한 튜토리얼은 Ansible VS Code Extension 시작하기 를 참조하십시오.
Ansible VS Code 확장을 설치하려면 다음을 수행합니다.
- VS Code를 엽니다.
-
활동 표시줄에서 확장 (
) 아이콘을 클릭하거나 확장 보기를 클릭하여 를 표시합니다.
-
Extensions 보기의 검색 필드에
Ansible Red Hat
을 입력합니다. - Ansible 확장을 선택하고 클릭합니다.
파일의 언어를 Ansible로 인식하면 Ansible 확장은 자동 완료, 마우스 커서, 진단 및 goto와 같은 기능을 제공합니다. 파일에 대해 식별된 언어는 VS Code 창 하단에 있는 상태 표시줄에 표시됩니다.
다음 파일에는 Ansible 언어가 할당됩니다.
-
/playbooks
디렉터리의 YAML 파일 -
다음 이중 확장자가 있는 파일:
.ansible.yml
또는.ansible.yaml
-
Ansible에서 인식하는 특정 YAML 이름(예:
site.yml
또는site.yaml
) -
파일 이름에 "playbook": playbook
.yml 또는
이 포함된 YAML 파일Playbook .
yaml
확장이 플레이북 파일의 언어를 Ansible로 식별하지 않으면 Ansible 언어를 YAML 파일과 연결하는 절차를 따르십시오.
3.1.5. Ansible 확장 설정 구성
Ansible 확장에서는 여러 구성 옵션을 지원합니다.
사용자 수준, 작업 공간 수준 또는 특정 디렉터리에 대한 확장 설정을 구성할 수 있습니다. 사용자 기반 설정은 열린 VS Code 인스턴스에 전역적으로 적용됩니다. 작업 공간 설정은 작업 공간에 저장되고 현재 작업 공간이 열린 경우에만 적용됩니다.
다음과 같은 이유로 작업 공간에 대한 설정을 구성하는 것이 유용합니다.
- 플레이북 프로젝트와 관련된 구성을 정의하고 유지 관리하는 경우 다른 작업에 대해 선호하는 설정을 변경하지 않고 개별 프로젝트에 대해 Ansible 개발 환경을 사용자 지정할 수 있습니다. 프로젝트를 전환할 때마다 설정을 수동으로 재구성할 필요 없이 각 스택에 최적화된 Python 프로젝트, Ansible 프로젝트 및 C++ 프로젝트에 대해 다른 설정을 설정할 수 있습니다.
- 팀과 공유할 프로젝트에 대한 버전 제어를 설정할 때 작업 공간 설정을 포함하는 경우 모든 사용자가 해당 프로젝트에 대해 동일한 구성을 사용합니다.
프로세스
Ansible 확장 설정을 엽니다.
- 활동 표시줄에서 'Extensions' 아이콘을 클릭합니다.
Ansible 확장을 선택하고 'gear' 아이콘을 클릭한 다음 설정을 확장하여 확장 기능을 사용하여 확장 설정을 표시합니다.
또는
→ 페이지를 엽니다.-
검색 창에
Ansible
을 입력하여 확장 설정을 표시합니다.
- 현재 VS Code 작업 공간에 대한 설정을 구성하려면 Workspace 탭을 선택합니다.
Ansible 확장 설정은 미리 채워집니다. 요구 사항에 맞게 설정을 수정합니다.
- ansible-lint를 활성화하려면 → → 을 선택합니다.
-
실행 환경을 사용하려면
Ansible Execution Environment: Enabled
확인란을 선택합니다. - Ansible > 실행 환경: 이미지 필드에서 사용할 실행 환경 이미지를 지정합니다.
- Red Hat Ansible Lightspeed를 사용하려면 Ansible > Lightspeed: Enabled 박스를 선택하고 Lightspeed의 URL을 입력합니다.
설정은 Visual Cryostat Marketplace 설명서의 Red Hat의 Ansible VS Code Extension 에 설명되어 있습니다.
3.1.6. Ansible 언어를 YAML 파일에 연결
Ansible VS Code 확장은 파일과 연결된 언어가 Ansible로 설정된 경우에만 작동합니다. 확장 기능은 자동 완료, 마우스 커서 및 진단과 같은 Ansible 플레이북을 생성하는 데 도움이 되는 기능을 제공합니다.
Ansible VS Code 확장에서는 Ansible 언어를 일부 파일과 자동으로 연결합니다. 아래 절차에서는 Ansible 파일로 인식되지 않는 파일의 언어를 설정하는 방법을 설명합니다.
Ansible 언어를 YAML 파일에 수동으로 연결
다음 절차에서는 VS Code에서 열려 있는 YAML 파일에 Ansible 언어를 수동으로 할당하는 방법을 설명합니다.
- VS Code에서 YAML 파일을 열거나 만듭니다.
- VS Code 창 하단에 있는 상태 표시줄에서 식별된 언어 위에 커서를 커서를 이동하여 언어 모드 선택 목록을 엽니다.
목록에서 Ansible 을 선택합니다.
파일의 VS Code 창 하단에 있는 상태 표시줄에 표시된 언어는 Ansible로 변경됩니다.
settings.json
에 Ansible 언어의 영구 파일 연결 추가
또는 settings.json
파일에서 Ansible 언어에 대한 파일 연결을 추가할 수 있습니다.
settings.json
파일을 엽니다.- → 를 엽니다.
-
검색 상자에
Workspace 설정을
입력하고 Open Workspace Settings (JSON) 을 선택합니다.
settings.json
에 다음 코드를 추가합니다.{ ... "files.associations": { "*plays.yml": "ansible", "*init.yml": "yaml", } }
Copy to clipboardCopied{ ... "files.associations": { "*plays.yml": "ansible", "*init.yml": "yaml", } }
3.1.7. Dev Containers
확장 설치 및 구성
컨테이너화된 버전의 Ansible 개발 툴을 설치하는 경우 VS Code에 Microsoft Dev Containers 확장을 설치해야 합니다.
- VS Code를 엽니다.
-
활동 표시줄에서 확장 (
) 아이콘을 클릭하거나 확장 보기를 클릭하여 를 표시합니다.
-
확장 보기의 검색 필드에
Dev Containers
를 입력합니다. - Microsoft에서 Dev Containers 확장을 선택하고 클릭합니다.
Podman 또는 Podman 데스크탑을 컨테이너화 플랫폼으로 사용하는 경우 Dev Containers
확장에서 기본 설정을 수정해야 합니다.
Dev Containers
확장 설정에서 docker를 podman으로 바꿉니다.- VS Code에서 설정 편집기를 엽니다.
@ext:ms-vscode-remote.remote-containers
를 검색합니다.또는 활동 표시줄에서 확장 아이콘을 클릭하고
Dev Containers
확장의 고급 아이콘을 클릭합니다.
-
Dev > Containers:Docker 경로를
으로 설정합니다.podman
-
Dev > Containers:Docker Compose Path
를podman-compose
로 설정합니다.
3.2. VS Code 내부의 컨테이너에 Ansible 개발 툴 설치
Dev Containers VS Code 확장에는 dev 컨테이너의 설정을 저장하기 위해 .devcontainer
파일이 필요합니다. Ansible 확장을 사용하여 dev 컨테이너의 구성 파일을 스캐폴드하고 VS Code의 컨테이너에서 디렉터리를 다시 열어야 합니다.
사전 요구 사항
- 컨테이너화 플랫폼(예: Podman, Podman 데스크탑, Docker 또는 Docker Desktop)을 설치했습니다.
-
Red Hat 로그인이 있고
registry.redhat.io
에서 Red Hat 레지스트리에 로그인했습니다.registry.redhat.io
에 로그인하는 방법에 대한 자세한 내용은 Red Hat 컨테이너 레지스트리로 인증 을 참조하십시오. - VS Code가 설치되어 있어야 합니다.
- VS Code에 Ansible 확장을 설치했습니다.
- VS Code에 Microsoft Dev Containers 확장을 설치했습니다.
Windows에서 Ansible 개발 툴을 설치하는 경우 VS Code를 시작하고 WSL 머신에 연결합니다.
-
원격
() 아이콘을 클릭합니다.
- 표시되는 드롭다운 메뉴에서 WSL 시스템에 연결할 옵션을 선택합니다.
-
프로세스
- VS Code에서 프로젝트 디렉터리로 이동합니다.
- VS Code 활동 표시줄에서 Ansible 아이콘을 클릭하여 Ansible 확장을 엽니다.
- Ansible 확장의 Ansible 개발 툴 섹션에서 ADD 옵션까지 아래로 스크롤하여 Devcontainer 를 선택합니다.
Create a devcontainer 페이지의 컨테이너 이미지 옵션에서 Downstream 컨테이너 이미지를 선택합니다.
이 작업은
.devcontainer
디렉터리에 Podman 및 Docker 모두에devcontainer.json
파일을 추가합니다.프로젝트 디렉터리를 다시 열거나 다시 로드합니다.
VS Code에서 디렉터리에
devcontainer.json
파일이 포함되어 있음을 감지하면 다음 알림이 표시됩니다.컨테이너에서 다시 열기를 클릭합니다.
-
알림이 나타나지 않으면
원격
() 아이콘을 클릭합니다. 표시되는 드롭다운 메뉴에서 Reopen in Container 를 선택합니다.
사용 중인 컨테이너화 플랫폼에 따라 Podman 또는 Docker의 dev 컨테이너를 선택합니다.
VS Code 상태 표시줄의 Remote () 상태가
Remote를 열고
알림은 컨테이너를 여는 진행 상황을 나타냅니다.
검증
디렉터리가 컨테이너에서 다시 열리면 원격() 상태가 Dev Container: ansible-dev-container
를 표시합니다.
컨테이너의 기본 이미지는 Microdnf
를 패키지 관리자로 사용하는 Universal Base Image Minimal(UBI Minimal) 이미지입니다. dnf
및 yum
패키지 관리자는 컨테이너에서 사용할 수 없습니다.
UBI Minimal 이미지를 기반으로 컨테이너에서 microdnf
를 사용하는 방법에 대한 자세한 내용은 Red Hat Enterprise Linux Building, 실행 및 관리 가이드의 최소 UBI 컨테이너의 소프트웨어 추가 를 참조하십시오.
3.3. RHEL의 패키지에서 Ansible 개발 툴 설치
Ansible 개발 툴은 Ansible Automation Platform RPM(Red Hat Package Manager) 패키지에 번들로 제공됩니다. Ansible Automation Platform 설치에 대한 정보는 RPM 설치 설명서를 참조하십시오.
사전 요구 사항
- RHEL을 설치했습니다.
- Red Hat Subscription Manager에 시스템을 등록했습니다.
- 컨테이너화 플랫폼(예: Podman 또는 Docker)이 설치되어 있습니다.
프로세스
다음 명령을 실행하여 SCA(Simple Content Access)가 활성화되어 있는지 확인합니다.
sudo subscription-manager status
Copy to clipboardCopied$ sudo subscription-manager status
Simple Content Access를 활성화하면 출력에 다음 메시지가 포함됩니다.
Content Access Mode is set to Simple Content Access.
Copy to clipboardCopiedContent Access Mode is set to Simple Content Access.
Simple Content Access가 활성화되지 않은 경우 Red Hat Ansible Automation Platform SKU를 연결합니다.
sudo subscription-manager attach --pool=<sku-pool-id>
Copy to clipboardCopied$ sudo subscription-manager attach --pool=<sku-pool-id>
다음 명령을 사용하여 Ansible 개발 툴을 설치합니다.
sudo dnf install --enablerepo=ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms ansible-dev-tools
Copy to clipboardCopied$ sudo dnf install --enablerepo=ansible-automation-platform-2.5-for-rhel-8-x86_64-rpms ansible-dev-tools
sudo dnf install --enablerepo=ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms ansible-dev-tools
Copy to clipboardCopied$ sudo dnf install --enablerepo=ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms ansible-dev-tools
확인:
Ansible 개발 툴 구성 요소가 설치되었는지 확인합니다.
rpm -aq | grep ansible
$ rpm -aq | grep ansible
Copy to clipboardCopied출력에는 설치된 Ansible 패키지가 표시됩니다.
ansible-sign-0.1.1-2.el9ap.noarch ansible-creator-24.4.1-1.el9ap.noarch python3.11-ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch ansible-builder-3.1.0-0.2.20240413.git167ed5c.el9ap.noarch ansible-dev-environment-24.1.0-2.el9ap.noarch ansible-core-2.16.6-0.1.20240413.gite636132.el9ap.noarch python3.11-ansible-compat-4.1.11-2.el9ap.noarch python3.11-pytest-ansible-24.1.2-1.el9ap.noarch ansible-lint-6.14.3-4.el9ap.noarch ansible-navigator-3.4.1-2.el9ap.noarch python3.11-tox-ansible-24.2.0-1.el9ap.noarch ansible-dev-tools-2.5-2.el9ap.noarch
ansible-sign-0.1.1-2.el9ap.noarch
ansible-creator-24.4.1-1.el9ap.noarch
python3.11-ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch
ansible-runner-2.4.0-0.1.20240412.git764790f.el9ap.noarch
ansible-builder-3.1.0-0.2.20240413.git167ed5c.el9ap.noarch
ansible-dev-environment-24.1.0-2.el9ap.noarch
ansible-core-2.16.6-0.1.20240413.gite636132.el9ap.noarch
python3.11-ansible-compat-4.1.11-2.el9ap.noarch
python3.11-pytest-ansible-24.1.2-1.el9ap.noarch
ansible-lint-6.14.3-4.el9ap.noarch
ansible-navigator-3.4.1-2.el9ap.noarch
python3.11-tox-ansible-24.2.0-1.el9ap.noarch
ansible-dev-tools-2.5-2.el9ap.noarch
Copy to clipboardCopied성공적으로 설치하면 ansible-creator에 대한 도움말 문서를 볼 수 있습니다.
ansible-creator --help
$ ansible-creator --help
usage: ansible-creator [-h] [--version] command ...
The fastest way to generate all your ansible content.
Positional arguments:
command
add Add resources to an existing Ansible project.
init Initialize a new Ansible project.
Options:
--version Print ansible-creator version and exit.
-h --help Show this help message and exit
Copy to clipboardCopied4장. 플레이북 프로젝트 생성
4.1. 플레이북 프로젝트 요약
다음 단계에서는 Ansible VS Code 확장을 사용하여 새 플레이북 프로젝트를 스캐폴드하는 프로세스를 설명합니다.
사전 요구 사항
- Ansible 개발 툴을 설치했습니다.
- Ansible VS Code 확장을 설치하고 열었습니다.
- 프로젝트를 저장할 디렉터리를 식별했습니다.
프로세스
- VS Code를 엽니다.
- VS Code 활동 표시줄에서 Ansible 아이콘을 클릭하여 Ansible 확장을 엽니다.
Ansible 콘텐츠 작성자 섹션에서 시작하기 를 선택합니다.
Ansible 콘텐츠 작성자 탭이 열립니다.
생성 섹션에서 Ansible 플레이북 프로젝트를 클릭합니다.
Create Ansible project 탭이 열립니다.
Ansible 프로젝트 생성 탭의 양식에 다음을 입력합니다.
대상 디렉터리: 새 플레이북 프로젝트를 스캐폴드할 디렉터리의 경로를 입력합니다.
참고기존 디렉터리 이름을 입력하면 스캐폴드 프로세스가 해당 디렉터리의 콘텐츠를 덮어씁니다. 스캐폴드 프로세스를 사용하면
Force
옵션을 활성화하는 경우에만 기존 디렉터리를 사용할 수 있습니다.-
컨테이너화된 버전의 Ansible Dev 툴을 사용하는 경우 대상 디렉터리 경로는 로컬 시스템의 경로가 아닌 컨테이너를 기준으로 합니다. 컨테이너에서 현재 디렉터리 이름을 검색하려면 VS Code의 터미널에서
pwd
명령을 실행합니다. 컨테이너의 현재 디렉터리가 작업 공간인 경우workspaces
/<destination_directory_name>을 입력합니다 -
로컬로 설치된 Ansible Dev 툴 버전을 사용하는 경우 디렉터리의 전체 경로(예:
/user/<username>/projects/<destination_directory_name
>)를 입력합니다.
-
컨테이너화된 버전의 Ansible Dev 툴을 사용하는 경우 대상 디렉터리 경로는 로컬 시스템의 경로가 아닌 컨테이너를 기준으로 합니다. 컨테이너에서 현재 디렉터리 이름을 검색하려면 VS Code의 터미널에서
- SCM 조직 및 SCM 프로젝트: 플레이북에 생성하는 역할을 저장할 수 있는 디렉터리 및 하위 디렉터리의 이름을 입력합니다.
- 새 플레이북 프로젝트를 스캐폴드할 디렉터리의 이름을 입력합니다.
검증
프로젝트 디렉터리가 생성되면 Create Ansible Project 탭의 로그 창에 다음 메시지가 표시됩니다. 이 예에서 대상 디렉터리 이름은 destination_directory_name
입니다.
------------------ ansible-creator logs ------------------ Note: ansible project created at /Users/username/test_project
------------------ ansible-creator logs ------------------
Note: ansible project created at /Users/username/test_project
Copy to clipboardCopied프로젝트 디렉터리에 다음 디렉터리와 파일이 생성됩니다.
tree -a -L 5 .
$ tree -a -L 5 .
├── .devcontainer
│ ├── devcontainer.json
│ ├── docker
│ │ └── devcontainer.json
│ └── podman
│ └── devcontainer.json
├── .gitignore
├── README.md
├── ansible-navigator.yml
├── ansible.cfg
├── collections
│ ├── ansible_collections
│ │ └── scm_organization_name
│ │ └── scm_project_name
│ └── requirements.yml
├── devfile.yaml
├── inventory
│ ├── group_vars
│ │ ├── all.yml
│ │ └── web_servers.yml
│ ├── host_vars
│ │ ├── server1.yml
│ │ ├── server2.yml
│ │ ├── server3.yml
│ │ ├── switch1.yml
│ │ └── switch2.yml
│ └── hosts.yml
├── linux_playbook.yml
├── network_playbook.yml
└── site.yml
Copy to clipboardCopied5장. Ansible 개발 툴을 사용하여 플레이북 작성 및 실행
5.1. 플레이북 프로젝트에 대한 Ansible 구성 파일 설정
플레이북 프로젝트를 스캐폴드하면 Ansible 구성 파일 ansible.cfg
가 프로젝트의 루트 디렉터리에 추가되었습니다.
/etc/ansible/ansible.cfg
에 기본 Ansible 구성 파일을 구성한 경우 기본 Ansible 구성 파일에서 프로젝트의 root 디렉터리에 있는 ansible.cfg
파일로 프로젝트에 재사용할 설정을 복사합니다.
Ansible 구성 파일에 대한 자세한 내용은 Ansible 문서의 Ansible 구성 설정을 참조하십시오.
5.2. 첫 번째 플레이북 작성
아래 지침은 Ansible 개발 도구가 VS Code에서 첫 번째 플레이북을 생성하고 실행하는 데 도움이 되는 방법을 설명합니다.
사전 요구 사항
- Ansible VS Code 확장을 설치하고 열었습니다.
- VS Code에서 터미널을 열었습니다.
-
ansible-devtools
를 설치했습니다.
프로세스
-
플레이북의 VS Code에 새 .yml 파일을 생성합니다(예:
example_playbook.yml
). examplesite.yml
파일과 동일한 디렉터리 수준에 배치합니다. 다음 예제 코드를 플레이북 파일에 추가하고 파일을 저장합니다. 플레이북은 로컬 시스템에 대해
ping
을 실행하는 단일 플레이로 구성됩니다.--- - name: My first play hosts: localhost tasks: - name: Ping my hosts ansible.builtin.ping:
Copy to clipboardCopied--- - name: My first play hosts: localhost tasks: - name: Ping my hosts ansible.builtin.ping:
Ansible-lint
는 백그라운드에서 실행되며 터미널의 문제 탭에 오류를 표시합니다. 이 플레이북에는 오류가 없습니다.- 플레이북 파일을 저장합니다.
5.3. 플레이북 검사
Ansible VS Code 확장에서는 구문 강조 표시를 제공하고 .yml
파일에서 들여쓰기를 지원합니다.
Playbook 파일에 다음 규칙이 적용됩니다.
- 모든 플레이북 파일은 빈 행으로 완료해야 합니다.
- 행 끝에 있는 후행 공백은 사용할 수 없습니다.
- 모든 플레이북과 모든 플레이에는 식별자(이름)가 필요합니다.
5.3.1. 인라인 도움말
Ansible 확장에서는 플레이북 파일을 편집할 때 인라인 도움말도 제공합니다.
키워드 또는 모듈 이름 위에 마우스를 가져가면 Ansible 확장이 설명서를 제공합니다.
모듈 이름(예:
ansible.builtin.ping
)을 입력하기 시작하면 확장에서 제안 목록을 제공합니다.행을 자동으로 완료할 제안 중 하나를 선택합니다.
5.4. Playbook 실행
Ansible VS Code 확장에서는 Playbook을 실행하는 두 가지 옵션을 제공합니다.
-
ansible-playbook
은 Ansible Core를 사용하여 로컬 머신에서 플레이북을 실행합니다. -
Ansible-navigator
는 Ansible Automation Platform이 자동화 작업을 실행하는 것과 동일한 방식으로 실행 환경에서 플레이북을 실행합니다. Ansible 확장 설정에서 실행 환경의 기본 이미지를 지정합니다.
5.4.1. ansible-playbook
을 사용하여 플레이북 실행
프로세스
플레이북을 실행하려면 Explorer 창에서 플레이북 이름을 마우스 오른쪽 버튼으로 클릭한 다음 선택합니다.
출력은 VS Code 터미널 의 터미널 탭에 표시됩니다. ok=2
및 failed=0
메시지는 플레이북이 성공적으로 실행되었음을 나타냅니다.
5.4.3. 실행 환경 작업
Red Hat에서 제공하는 자동화 실행 환경을 Red Hat Ecosystem Catalog 에서 볼 수 있습니다.
실행 환경을 클릭하여 다운로드 방법에 대한 정보를 제공합니다.
아직 수행하지 않은 경우
registry.redhat.io
에 로그인합니다.참고VS Code 내부에서 컨테이너에서 Ansible 개발 툴을 실행하고 실행 환경으로 사용할
devcontainer
또는 실행 환경으로 사용하려면 VS Code 내의devcontainer
에서registry.redhat.io
에 로그인해야 합니다.Red Hat Ecosystem Catalog 의 정보를 사용하여 필요한 실행 환경을 다운로드합니다.
예를 들어 최소 RHEL 8 기본 이미지를 다운로드하려면 다음 명령을 실행합니다.
podman pull registry.redhat.io/ansible-automation-platform-25/ee-minimal-rhel9
Copy to clipboardCopied$ podman pull registry.redhat.io/ansible-automation-platform-25/ee-minimal-rhel9
ansible-builder
를 사용하여 사용자 정의 실행 환경을 빌드하고 생성할 수 있습니다. 로컬에서 실행 환경 사용에 대한 자세한 내용은 실행 환경 생성 및 사용을 참조하십시오.
실행 환경을 사용자 정의한 후 새 이미지를 자동화 허브의 컨테이너 레지스트리로 푸시할 수 있습니다. 실행 환경 생성 및 사용 설명서에서 자동화 실행 환경 게시 를 참조하십시오.
5.5. 플레이북 디버깅
5.5.1. 오류 메시지
다음 플레이북에는 여러 오류가 포함되어 있습니다.
- name: hosts: localhost tasks: - name: ansible.builtin.ping:
- name:
hosts: localhost
tasks:
- name:
ansible.builtin.ping:
Copy to clipboardCopied이러한 오류는 VS Code의 줄 바꿈으로 표시됩니다. 세부 정보를 보려면 오류 위에 마우스를 커서를 이동합니다.

이러한 오류는 VS Code 터미널의 문제 탭에 나열됩니다. 오류가 포함된 플레이북 파일은 Explorer 창에서 숫자로 표시됩니다.

$[0].tasks[0].name None is not of type 'string'
은 플레이북에 레이블이 없음을 나타냅니다.
5.6. 플레이북 테스트
프로젝트에서 플레이북을 테스트하려면 랩 설정 또는 가상 시스템과 같은 비 프로덕션 환경에서 실행합니다.
자동화 콘텐츠 탐색자(ansible-navigator
)는 실행 환경을 사용하여 Ansible 콘텐츠를 개발하고 문제를 해결하기 위한 텍스트 기반 사용자 인터페이스(TUI)입니다.
ansible-navigator
를 사용하여 플레이북을 실행하면 Playbook이 예상대로 실행 중인지 확인할 수 있는 자세한 출력이 생성됩니다. Ansible Automation Platform에서 테스트에서 프로덕션 설정을 복제하도록 Playbook을 실행할 실행 환경을 지정할 수 있습니다.
실행 환경에서 플레이북을 실행하려면 VS Code의 터미널에서 다음 명령을 실행합니다.
ansible-navigator run <playbook_name.yml> -eei <execution_environment_name>
Copy to clipboardCopied$ ansible-navigator run <playbook_name.yml> -eei <execution_environment_name>
예를 들어 Ansible Automation Platform RHEL 9 최소 실행 환경에서
site.yml
이라는 플레이북을 실행하려면 VS Code의 터미널에서 다음 명령을 실행합니다.ansible-navigator run site.yml --eei ee-minimal-rhel8
Copy to clipboardCopiedansible-navigator run site.yml --eei ee-minimal-rhel8
터미널에 출력이 표시됩니다. 결과를 검사하고 실행된 각 플레이 및 작업으로 이동할 수 있습니다.
실행 중인 플레이북에 대한 자세한 내용은 콘텐츠 탐색 가이드의 자동화 콘텐츠를 사용하여 Ansible 플레이북실행을 참조하십시오.
6장. Ansible Automation Platform에서 플레이북 게시 및 실행
다음 절차에서는 Ansible Automation Platform 인스턴스에 새 플레이북을 배포하여 자동화 작업을 실행하는 방법을 설명합니다.
6.1. SCM에 프로젝트 저장
플레이북 프로젝트를 소스 제어 관리 시스템에 리포지토리로 저장합니다(예: GitHub).
프로세스
- 프로젝트 디렉터리를 git 리포지토리로 초기화합니다.
- GitHub와 같은 소스 제어 시스템으로 프로젝트를 푸시합니다.
6.2. Ansible Automation Platform에서 플레이북 실행
Ansible Automation Platform에서 플레이북을 실행하려면 플레이북 프로젝트를 저장한 리포지토리의 자동화 컨트롤러에서 프로젝트를 생성해야 합니다. 그런 다음 프로젝트에서 각 플레이북에 대한 작업 템플릿을 생성할 수 있습니다.
프로세스
- 브라우저에서 자동화 컨트롤러에 로그인합니다.
- 필요한 경우 소스 제어 시스템에 대한 소스 제어 인증 정보 유형을 구성합니다. 자세한 내용은 자동화 실행 사용의 새 인증 정보 생성 섹션을 참조하십시오. https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5/html/using_automation_execution/controller-credentials#controller-create-credential
- 자동화 컨트롤러에서 플레이북 프로젝트를 저장한 GitHub 리포지토리에 대한 프로젝트를 생성합니다. 자동화 실행 사용의 프로젝트 장을 참조하십시오.
- 생성한 프로젝트에서 플레이북을 사용하는 작업 템플릿을 생성합니다. 자동화 실행 사용의 작업 템플릿 장을 참조하십시오.
- 작업 템플릿을 시작하여 자동화 컨트롤러에서 플레이북을 실행합니다. 자동화 실행 사용의 작업 템플릿 시작 섹션을 참조하십시오.
7장. 컬렉션 개발
컬렉션은 플레이북, 역할, 모듈 및 플러그인을 포함할 수 있는 Ansible 콘텐츠의 배포 형식입니다. Red Hat은 Red Hat Ansible 인증 콘텐츠 및 Ansible 검증 콘텐츠를 모두 포함하는 Ansible 자동화 허브에 Ansible Content Collections를 제공합니다.
프라이빗 자동화 허브를 설치한 경우 조직의 컬렉션을 생성하고 Ansible Automation Platform의 작업 템플릿에서 사용할 수 있도록 프라이빗 자동화 허브로 푸시할 수 있습니다. 컬렉션을 사용하여 플러그인을 패키지하고 배포할 수 있습니다. 이러한 플러그인은 Python으로 작성됩니다.
YAML로 표시되는 Ansible 역할을 패키징하고 배포하는 컬렉션을 생성할 수도 있습니다. 컬렉션에서 이러한 역할에 필요한 플레이북 및 사용자 지정 플러그인을 포함할 수도 있습니다. 일반적으로 역할 컬렉션은 조직 내에서 사용하기 위해 배포됩니다.
8장. 역할 분배를 위한 컬렉션 생성
Ansible 역할은 관련 작업 및 관련 변수, 파일, 핸들러 및 기타 자산을 정의된 디렉터리 구조로 그룹화하는 Ansible 자동화 콘텐츠의 자체 포함 단위입니다.
하나 이상의 플레이에서 Ansible 역할을 실행하고 플레이북에서 재사용할 수 있습니다. 작업 대신 역할을 호출하면 플레이북을 단순화할 수 있습니다. 기존 독립 실행형 역할을 컬렉션으로 마이그레이션하고 프라이빗 자동화 허브로 푸시하여 조직의 다른 사용자와 공유할 수 있습니다. 이러한 방식으로 역할을 분산하는 것은 컬렉션을 사용하는 일반적인 방법입니다.
Ansible 컬렉션을 사용하면 재사용 가능한 단일 자동화 단위로 여러 역할을 저장하고 배포할 수 있습니다. 컬렉션 내에서 각 역할에서 중복되는 대신 컬렉션의 모든 역할에서 사용자 지정 플러그인을 공유할 수 있습니다.
Ansible Automation Platform에서 사용하려면 역할을 컬렉션으로 이동해야 합니다.
기존 독립 실행형 역할을 컬렉션에 추가하거나 새 역할을 추가할 수 있습니다. 컬렉션을 소스 제어로 푸시하고 Ansible Automation Platform에서 리포지토리의 인증 정보를 구성합니다.
8.1. 컬렉션 계획
모든 역할에 대해 하나의 큰 일반 컬렉션을 생성하는 대신 선별된 자동화 번들을 특정 기능의 개별 컬렉션으로 구성합니다.
예를 들어 company_namespace.myapp_network
컬렉션에서 myapp
이라는 내부 시스템의 네트워킹을 관리하는 역할을 저장하고 company_namespace.aws_net
이라는 컬렉션에서 AWS에서 네트워킹을 관리하고 배포하는 역할을 저장할 수 있습니다.
8.2. 사전 요구 사항
- VS Code 및 Ansible 확장을 설치했습니다.
- {VS Code에 Microsoft Dev Containers 확장을 설치했습니다.
- Ansible 개발 툴을 설치했습니다.
- 컨테이너화 플랫폼(예: Podman, Podman 데스크탑, Docker 또는 Docker Desktop)을 설치했습니다.
-
Red Hat 계정이 있으며
registry.redhat.io
에서 Red Hat 컨테이너 레지스트리에 로그인할 수 있습니다.registry.redhat.io
에 로그인하는 방법에 대한 자세한 내용은 Red Hat 컨테이너 레지스트리로 인증 을 참조하십시오.
8.3. 역할에 대한 컬렉션을 스캐폴드
VS Code의 Ansible 확장에서 역할에 대한 컬렉션을 스캐폴드할 수 있습니다.
프로세스
- VS Code를 엽니다.
- 역할 컬렉션을 생성할 디렉터리로 이동합니다.
- VS Code 활동 표시줄에서 Ansible 아이콘을 클릭하여 Ansible 확장을 엽니다.
Ansible 콘텐츠 작성자 섹션에서 시작하기 를 선택합니다.
Ansible 콘텐츠 작성자 탭이 열립니다.
생성 섹션에서 Ansible 컬렉션 프로젝트를 클릭합니다.
새 Ansible 프로젝트 생성 탭이 열립니다.
Ansible 프로젝트 생성 탭의 양식에 다음을 입력합니다.
-
namespace : 네임스페이스 의 이름을 입력합니다(예:
company_namespace
). -
collection : 컬렉션의 이름을 입력합니다(예:
myapp_network
). init path: 새 컬렉션을 스캐폴드할 디렉터리의 경로를 입력합니다.
기존 디렉터리 이름을 입력하면 스캐폴드 프로세스가 해당 디렉터리의 콘텐츠를 덮어씁니다. 스캐폴드 프로세스를 사용하면 Force 옵션을 활성화하는 경우에만 기존 디렉터리를 사용할 수 있습니다.
-
컨테이너화된 버전의 Ansible 개발 툴을 사용하는 경우 대상 디렉터리 경로는 로컬 시스템의 경로가 아닌 컨테이너를 기준으로 합니다. 컨테이너에서 현재 디렉터리 이름을 검색하려면 VS Code의 터미널에서 pwd 명령을 실행합니다. 컨테이너의 현재 디렉터리가 작업 공간인 경우
workspaces
/<current_project>/collections -
로컬로 설치된 Ansible Dev 툴 버전을 사용하는 경우 디렉터리의 전체 경로(예:
/user/<username>/path/to/<collection_directory
>)를 입력합니다.
-
컨테이너화된 버전의 Ansible 개발 툴을 사용하는 경우 대상 디렉터리 경로는 로컬 시스템의 경로가 아닌 컨테이너를 기준으로 합니다. 컨테이너에서 현재 디렉터리 이름을 검색하려면 VS Code의 터미널에서 pwd 명령을 실행합니다. 컨테이너의 현재 디렉터리가 작업 공간인 경우
-
namespace : 네임스페이스 의 이름을 입력합니다(예:
- 을 클릭합니다.
검증
다음 메시지는 Create Ansible 컬렉션 탭의 로그 창에 표시됩니다.
--------------------- ansible-creator logs --------------------- Note: collection company_namespace.myapp_network created at /path/to/collections/directory
--------------------- ansible-creator logs ---------------------
Note: collection company_namespace.myapp_network created at /path/to/collections/directory
Copy to clipboardCopied
다음 디렉터리 및 파일은 collections/
디렉터리에 생성됩니다.
├── .devcontainer ├── .github ├── .gitignore ├── .isort.cfg ├── .pre-commit-config.yaml ├── .prettierignore ├── .vscode ├── CHANGELOG.rst ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING ├── LICENSE ├── MAINTAINERS ├── README.md ├── changelogs ├── devfile.yaml ├── docs ├── extensions ├── galaxy.yml ├── meta ├── plugins ├── pyproject.toml ├── requirements.txt ├── roles ├── test-requirements.txt ├── tests └── tox-ansible.ini
├── .devcontainer
├── .github
├── .gitignore
├── .isort.cfg
├── .pre-commit-config.yaml
├── .prettierignore
├── .vscode
├── CHANGELOG.rst
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING
├── LICENSE
├── MAINTAINERS
├── README.md
├── changelogs
├── devfile.yaml
├── docs
├── extensions
├── galaxy.yml
├── meta
├── plugins
├── pyproject.toml
├── requirements.txt
├── roles
├── test-requirements.txt
├── tests
└── tox-ansible.ini
Copy to clipboardCopied8.4. 기존 역할을 컬렉션으로 마이그레이션
독립 실행형 역할의 디렉터리에는 다음과 같은 구조가 있습니다. 역할에 이러한 디렉터리가 모두 포함되지 않을 수 있습니다.
my_role ├── README.md ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml
my_role
├── README.md
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
Copy to clipboardCopied
Ansible 역할에는 7개의 기본 표준 디렉터리가 있는 정의된 디렉터리 구조가 있습니다. 각 역할에는 이러한 디렉터리 중 하나 이상이 포함되어야 합니다. 역할이 사용하지 않는 디렉터리를 생략할 수 있습니다. 각 디렉터리에는 main.yml
파일이 포함되어 있습니다.
프로세스
필요한 경우 해당 콘텐츠를 반영하도록 역할이 포함된 디렉터리의 이름을 바꿉니다(예:
acl_config
또는tacacs
).컬렉션의 역할에는 이름에 하이픈이 있을 수 없습니다. 밑줄 문자(
_
)를 대신 사용합니다.독립 실행형 역할의 역할 디렉터리를 컬렉션의
roles/
디렉터리에 복사합니다.예를 들어
myapp_network
라는 컬렉션에서myapp_network/roles/
디렉터리에 역할을 추가합니다.독립 실행형 역할의 플러그인을 새 컬렉션의
plugins 디렉터리/
에 복사합니다. 컬렉션 디렉터리 구조는 다음과 유사합니다.company_namespace └── myapp_network ├── ... ├── galaxy.yml ├── docs ├── extensions ├── meta ├── plugins ├── roles │ ├── acl_config │ │ ├── README.md │ │ ├── defaults │ │ ├── files │ │ ├── handlers │ │ ├── meta │ │ ├── tasks │ │ ├── templates │ │ ├── tests │ │ └── vars │ └── tacacs │ ├── README.md │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ ├── tests │ └── vars │ ├── run ├── ... ├── tests └── vars
Copy to clipboardCopiedcompany_namespace └── myapp_network ├── ... ├── galaxy.yml ├── docs ├── extensions ├── meta ├── plugins ├── roles │ ├── acl_config │ │ ├── README.md │ │ ├── defaults │ │ ├── files │ │ ├── handlers │ │ ├── meta │ │ ├── tasks │ │ ├── templates │ │ ├── tests │ │ └── vars │ └── tacacs │ ├── README.md │ ├── default │ ├── files │ ├── handlers │ ├── meta │ ├── tasks │ ├── templates │ ├── tests │ └── vars │ ├── run ├── ... ├── tests └── vars
run
역할은 컬렉션을 스캐폴드할 때 생성되는 기본 역할 디렉터리입니다.- 컬렉션의 새 역할에 대해 FQDN(정규화된 컬렉션 이름)을 사용하도록 플레이북을 업데이트합니다.
모든 독립 실행형 역할이 코드를 수정하지 않고 컬렉션에 원활하게 통합되는 것은 아닙니다. 예를 들어 플러그인이 포함된 Galaxy의 타사 독립 실행형 역할이 module_utils/
디렉터리를 사용하는 경우 플러그인 자체에 import 문이 있습니다.
8.5. 컬렉션에 새 역할 생성
프로세스
-
새 역할을 생성하려면 컬렉션을 만들 때 스캐폴드된 기본
실행
역할 디렉터리를 복사합니다. -
역할에서
tasks/main.yml
파일에서 수행할 작업을 정의합니다. 기존 플레이북에서 작업을 재사용할 역할을 생성하는 경우 플레이북 YAML 파일의 tasks 블록에 콘텐츠를 복사합니다. 작업 왼쪽에 있는 공백을 제거합니다. VS Code에서ansible-lint
를 사용하여 YAML 코드를 확인합니다. -
역할이 다른 역할에 종속된 경우
meta/main.yml
파일에 종속성을 추가합니다.
8.6. 역할 컬렉션에 대한 문서 추가
다른 사용자가 자신의 역할의 기능과 사용 방법을 이해할 수 있도록 역할에 대한 문서를 제공하는 것이 중요합니다.
8.6.1. 역할 기록
컬렉션 디렉터리를 스캐폴드하면 README.md
파일이 역할 디렉터리에 추가되었습니다. 이 파일에서 역할에 대한 문서를 추가합니다. 컬렉션의 모든 역할에 대한 README.md
파일에 다음 정보를 제공합니다.
- 역할 설명: 역할이 수행하는 사항에 대한 간략한 요약
- 요구 사항: 컬렉션, 라이브러리 및 필수 설치 나열
- 종속 항목
역할 변수: 역할이 사용하는 변수에 대한 다음 정보를 제공합니다.
- 설명
- 기본값
- 값 예
- 필수 변수
- 예제 플레이북: 역할을 사용하는 플레이북의 예를 표시합니다. 플레이북에서 주석을 사용하여 사용자가 변수 설정 위치를 이해하는 데 도움이 됩니다.
controller_configuration.ad_hoc_command_cancel
의 README.md
파일은 표준 문서가 있는 역할의 예입니다.
8.6.2. 컬렉션 기록
컬렉션의 README.md
파일에서 다음 정보를 제공합니다.
- 컬렉션 설명: 컬렉션의 기능에 대해 설명합니다.
- 요구 사항: 필요한 컬렉션을 나열합니다.
- 역할을 컬렉션의 구성 요소로 나열합니다.
- 컬렉션 사용: 컬렉션의 구성 요소를 실행하는 방법을 설명합니다.
- 문제 해결 섹션을 추가합니다.
- 버전 관리: 컬렉션의 릴리스 사이클을 설명합니다.
8.7. 프라이빗 자동화 허브에 컬렉션 게시
사전 요구 사항
- 컬렉션을 tarball에 패키징합니다. 컬렉션 파일 이름을 다음과 같이 포맷합니다.
<my_namespace-my_collection-x.y.z.tar.gz>
For example, company_namespace-myapp_network-1.0.0.tar.gz
프로세스
- 프라이빗 자동화 허브에서 컬렉션의 네임스페이스를 생성합니다. 자동화 콘텐츠 관리 가이드에서 네임스페이스 생성 을 참조하십시오.
- 선택 사항: 네임스페이스에 정보를 추가합니다. 자동화 콘텐츠 관리 가이드에서 네임스페이스에 추가 정보 및 리소스 추가를 참조하십시오.
- tarballs 컬렉션을 네임스페이스에 업로드합니다. 자동화 콘텐츠 관리 가이드에서 네임스페이스에 컬렉션 업로드를 참조하십시오.
- 내부 게시에 대한 컬렉션을 승인합니다. 자동화 콘텐츠 관리 가이드에서 네임스페이스에 컬렉션 업로드를 참조하십시오.
8.7.1. Red Hat Ansible Automation Platform의 프로젝트에서 컬렉션 사용
자동화 컨트롤러에서 컬렉션을 사용하려면 컬렉션을 실행 환경에 추가하고 프라이빗 자동화 허브로 푸시해야 합니다.
다음 절차에서는 실행 환경에 컬렉션을 추가하는 워크플로를 설명합니다. 이러한 단계를 실행하는 명령은 실행 환경 생성 및 사용 가이드의 기존 자동화 실행 환경 이미지 사용자 지정을 참조하십시오.
- 자동화 허브에서 실행 환경 기본 이미지를 가져오거나 자체 사용자 정의 실행 환경에 컬렉션을 추가할 수 있습니다.
- 실행 환경에 포함할 컬렉션을 추가합니다.
- 새 실행 환경을 빌드합니다.
- 컬렉션이 실행 환경에 있는지 확인합니다.
- 이미지를 태그하고 프라이빗 자동화 허브로 내보냅니다.
- 새 이미지를 자동화 컨트롤러 인스턴스로 가져옵니다.
- 컬렉션에서 역할을 사용하는 플레이북은 역할에 대해 FQDN(정규화된 도메인 이름)을 사용해야 합니다.