실행 환경 생성 및 사용


Red Hat Ansible Automation Platform 2.5

실행 환경 컨테이너 생성 및 사용

Red Hat Customer Content Services

초록

이 가이드에서는 Red Hat Ansible Automation Platform을 위한 일관되고 재현 가능한 자동화 실행 환경을 생성하는 방법을 보여줍니다.
이 문서에는 Apache 2.0 라이센스에서 다루는 업스트림 docs.ansible.com 문서의 내용이 포함되어 있습니다.

머리말

실행 환경 빌더를 사용하여 Red Hat Ansible Automation Platform 요구 사항에 맞는 일관되고 재현 가능한 컨테이너를 생성합니다.

Red Hat 문서에 관한 피드백 제공

이 문서를 개선하기 위한 제안이 있거나 오류를 찾을 수 있는 경우 https://access.redhat.com 에서 기술 지원에 문의하여 요청을 열 수 있습니다.

1장. 자동화 실행 환경 소개

기본이 아닌 종속 항목에 종속되는 Ansible 콘텐츠를 사용하는 것은 각 노드에 패키지를 설치하고 호스트 시스템에 설치된 다른 소프트웨어와 상호 작용하고 동기화되어야 하기 때문에 복잡할 수 있습니다. 개발, 테스트 및 프로덕션 환경에서 동일한 환경을 사용해야 합니다. Red Hat은 이러한 목적으로 실행 환경을 제공합니다.

자동화 실행 환경은 이 프로세스를 단순화하는 데 도움이 되며 Ansible Builder를 사용하여 쉽게 생성할 수 있습니다.

2장. builder

Ansible은 실행 환경infra.ee_utilities 를 제공합니다. Red Hat은 이러한 목적으로 실행 환경을 제공합니다. 이미지를 생성 및 관리하거나 이전 Tower virtualenvs에서 실행 환경으로 마이그레이션하는 역할 컬렉션입니다. 이 컬렉션을 사용하면 Ansible 실행 환경의 준비 및 유지 관리를 자동화할 수 있습니다.

2.1. 자동화 실행 환경 정보

Red Hat Ansible Automation Platform의 모든 자동화는 자동화 실행 환경이라는 컨테이너 이미지에서 실행됩니다. 자동화 실행 환경은 자동화 종속 항목을 전달하는 공통 언어를 생성하고 자동화 환경을 빌드하고 배포하는 표준 방법을 제공합니다.

Red Hat은 Red Hat 에코시스템 카탈로그 에서 사용할 수 있는 지원되는 실행 환경을 제공합니다.

자동화 실행 환경에는 다음이 포함되어야 합니다.

  • Ansible Core 2.16 이상
  • Python 3.11 이상
  • Ansible Runner
  • Ansible 콘텐츠 컬렉션 및 해당 종속 항목
  • 시스템 종속 항목

2.1.1. 자동화 실행 환경을 사용하는 이유는 무엇입니까?

자동화 실행 환경에서 Red Hat Ansible Automation Platform은 컨트롤 플레인과 실행 플레인을 분리하여 분산 아키텍처로 전환되었습니다. 컨트롤 플레인과 독립적으로 자동화 실행을 유지하면 개발 주기가 빨라지고 환경 간 확장성, 안정성 및 이식성이 향상됩니다. Red Hat Ansible Automation Platform에는 Ansible 콘텐츠 툴에 대한 액세스도 포함되어 있어 자동화 실행 환경을 쉽게 빌드하고 관리할 수 있습니다.

속도, 이식성 및 유연성 외에도 자동화 실행 환경은 다음과 같은 이점을 제공합니다.

  • 이를 통해 여러 플랫폼에서 자동화가 일관되게 실행되고 시스템 수준 종속성 및 컬렉션 기반 콘텐츠를 통합할 수 있습니다.
  • Red Hat Ansible Automation Platform 관리자는 다양한 팀의 요구 사항을 충족하기 위해 자동화 환경을 제공하고 관리할 수 있는 기능을 제공합니다.
  • 자동화 실행 환경을 사용하면 자동화 팀이 자동화 환경 자체를 정의, 빌드 및 업데이트할 수 있습니다. 시스템 관리자는 실행 환경을 제공할 수 있지만 각 조직 관리자는 자체 실행 환경을 제공할 수도 있습니다.
  • 이를 통해 자동화 환경을 구축하고 배포하는 표준 방법을 제공하여 팀 간에 자동화를 쉽게 확장하고 공유할 수 있습니다.

3장. Ansible 빌더 사용

Ansible Builder는 다양한 Ansible 컬렉션에 정의되거나 사용자가 생성한 메타데이터를 사용하여 자동화 실행 환경 빌드 프로세스를 자동화하는 명령줄 툴입니다.

참고

자동화 컨트롤러를 사용하여 생성하려면 실행 환경을 빌드해야 합니다. 빌드한 후 리포지토리(예: quay)로 푸시한 다음 자동화 컨트롤러를 사용하여 UI에서 실행 환경을 생성할 때 Ansible Automation Platform에서 이를 사용하도록 해당 리포지토리를 가리켜 작업 템플릿에서 사용해야 합니다.

3.1. Ansible Builder를 사용하는 이유는 무엇입니까?

Ansible Builder를 사용하면 Ansible Core, Python, Collections, 타사 Python 요구 사항 및 시스템 수준 패키지와 같은 자동화 실행 환경에 포함할 콘텐츠를 지정하는 사용자 지정 가능한 자동화 실행 환경 정의 파일을 쉽게 생성할 수 있습니다. 이를 통해 필요한 모든 요구 사항과 종속 항목을 충족하여 작업을 실행할 수 있습니다.

3.2. Ansible 빌더 설치

사전 요구 사항

  • 호스트에 유효한 서브스크립션이 연결되어 있습니다. 이렇게 하면 ansible-builder를 설치하는 데 필요한 서브스크립션 전용 리소스에 액세스하고 ansible-builder에 필요한 리포지토리가 자동으로 활성화되어 있는지 확인할 수 있습니다. 자세한 내용은 Red Hat Ansible Automation Platform 서브스크립션 연결을 참조하십시오.
  • Podman 컨테이너 런타임을 설치했습니다.
  • 호스트에 유효한 서브스크립션이 연결되어 있습니다. 이렇게 하면 ansible-builder 를 설치하는 데 필요한 서브스크립션 전용 리소스에 액세스하고 ansible-builder 에 필요한 리포지토리가 자동으로 활성화되어 있는지 확인할 수 있습니다. 자세한 내용은 Red Hat Ansible Automation Platform 서브스크립션 연결을 참조하십시오.

    참고

    유효한 Red Hat Ansible Automation Platform 관리 노드 인타이틀먼트를 사용하지 않고 개발자 툴을 설치하려면 사용 가능한 MCT4589-Red Hat Ansible Developer, Standard (10 Managed Nodes)를 사용할 수 있습니다. 이 서브스크립션은 Ansible Automation Platform 사용자를 활성화하기 위한 것입니다. 이 서브스크립션에는 Ansible 비즈니스 단위의 승인이 필요합니다.

프로세스

  • 다음 명령을 실행하여 Ansible Builder를 설치하고 Ansible Automation Platform 리포지토리를 활성화합니다.

    #  dnf install --enablerepo=ansible-automation-platform-2.5-for-rhel-9-x86_64-rpms ansible-builder

3.3. 연결이 끊긴 환경에서 실행 환경 빌드

Ansible Automation Platform의 실행 환경 생성은 연결이 끊긴 환경에서 다르게 작동하는 일반적인 작업입니다. 사용자 정의 실행 환경을 빌드할 때 ansible-builder 툴은 기본적으로 인터넷의 다음 위치에서 콘텐츠를 다운로드합니다.

  • 실행 환경 이미지에 추가된 모든 Ansible 콘텐츠 컬렉션에 대한 Red Hat Automation Hub(console.redhat.com) 또는 Ansible Galaxy(galaxy.ansible.com)입니다.
  • 컬렉션 종속성으로 필요한 모든 python 패키지의 PyPI(pypi.org)입니다.
  • 필요한 경우 RPM을 실행 환경 이미지에 추가하거나 업데이트하기 위한 RHEL 또는 UBI 리포지토리(cdn.redhat.com)와 같은 RPM 리포지토리입니다.
  • registry.redhat.io 는 기본 컨테이너 이미지에 액세스할 수 있습니다.

연결이 끊긴 환경에서 실행 환경 이미지를 빌드하려면 이러한 위치의 콘텐츠를 미러링해야 합니다. Ansible Galaxy 또는 자동화 허브에서 프라이빗 자동화 허브로 컬렉션을 가져오는 방법에 대한 자세한 내용은 자동화 허브 에서 자동화 콘텐츠 컬렉션 가져오기 를 참조하십시오.

연결이 끊긴 네트워크로 전송된 미러링된 PyPI 콘텐츠는 웹 서버 또는 Nexus와 같은 아티팩트 저장소를 사용하여 사용할 수 있습니다. RHEL 및 UBI 리포지토리 콘텐츠는 인터넷에 연결된 Red Hat Satellite Server에서 내보낸 다음 연결이 끊긴 Satellite로 복사한 다음 사용자 정의 실행 환경을 빌드하는 데 사용할 수 있도록 할 수 있습니다. 자세한 내용은 Air-Gapped Scenario의 ISS Export Sync 를 참조하십시오.

기본 기본 컨테이너 이미지 ee-minimal-rhel8 은 사용자 지정 실행 환경 이미지를 생성하는 데 사용되며 번들 설치 프로그램에 포함되어 있습니다. 이 이미지는 설치 시 프라이빗 자동화 허브에 추가됩니다.

ee-minimal-rhel9 와 같은 다른 기본 컨테이너 이미지가 필요한 경우 연결이 끊긴 네트워크로 가져와 프라이빗 자동화 허브 컨테이너 레지스트리에 추가해야 합니다.

연결이 끊긴 네트워크에서 모든 사전 요구 사항을 사용할 수 있게 되면 ansible-builder 명령을 사용하여 사용자 정의 실행 환경 이미지를 생성할 수 있습니다.

3.4. 정의 파일 빌드

Ansible Builder를 사용하여 실행 환경을 만들 수 있습니다. 새 실행 환경을 빌드하려면 컬렉션, Python 요구 사항, 시스템 수준 패키지와 같은 실행 환경에 포함할 콘텐츠를 지정하는 정의가 포함됩니다.

Ansible Builder를 설치한 후 Ansible Builder에서 자동화 실행 환경 이미지를 생성하는 데 사용하는 정의 파일을 생성할 수 있습니다. Ansible Builder는 정의 파일을 읽고 검증한 다음 Containerfile 을 생성한 다음, 마지막으로 컨테이너 파일을 Podman에 전달하여 자동화 실행 환경 이미지를 패키지하고 자동화 실행 환경 이미지를 생성하여 자동화 실행 환경 이미지를 만듭니다. 생성하는 정의 파일은 YAML 형식이어야 하며 .yaml 또는 . yml 확장자가 .yml 이고 다른 섹션이 포함되어 있어야 합니다. 기본 정의 파일 이름은 제공되지 않는 경우 execution-environment.yml 입니다. 정의 파일의 부분에 대한 자세한 내용은 정의 파일 콘텐츠 분리를 참조하십시오.

다음은 버전 3 정의 파일의 예입니다. 각 정의 파일은 사용하는 Ansible Builder 기능 세트의 주요 버전 번호를 지정해야 합니다. 지정하지 않는 경우 Ansible Builder는 기본적으로 버전 1로 설정되므로 대부분의 새로운 기능과 정의 키워드를 사용할 수 없습니다.

version: 3

build_arg_defaults: 
1

  ANSIBLE_GALAXY_CLI_COLLECTION_OPTS: '--pre'

dependencies: 
2

  galaxy: requirements.yml
  python:
    - six
    - psutil
  system: bindep.txt

images: 
3

  base_image:
    name: registry.redhat.io/ansible-automation-platform-24/ee-minimal-rhel9:latest

# Custom package manager path for the RHEL based images
options: 
4

  package_manager_path: /usr/bin/microdnf

additional_build_steps: 
5

  prepend_base:
    - RUN echo This is a prepend base command!

  prepend_galaxy:
    # Environment variables used for Galaxy client configurations
    - ENV ANSIBLE_GALAXY_SERVER_LIST=automation_hub
    - ENV ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_URL=https://console.redhat.com/api/automation-hub/content/xxxxxxx-synclist/
    - ENV ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_AUTH_URL=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
    # define a custom build arg env passthru - we still also have to pass
    # `--build-arg ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN` to get it to pick it up from the env
    - ARG ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN

  prepend_final: |
    RUN whoami
    RUN cat /etc/os-release
  append_final:
    - RUN echo This is a post-install command!
    - RUN ls -la /etc
1
빌드 인수의 기본값을 나열합니다.
2
다양한 요구 사항 파일의 위치를 지정합니다.
3
사용할 기본 이미지를 지정합니다. Red Hat 지원은 redhat.registry.io 기본 이미지에만 제공됩니다.
4
빌더 런타임 기능에 영향을 줄 수 있는 옵션을 지정합니다.
5
추가 사용자 정의 빌드 단계를 위한 명령입니다.

추가 리소스

3.5. 사용자 정의 실행 환경 정의 생성

Ansible Builder를 설치한 경우 다음 단계를 사용하여 사용자 지정 실행 환경을 생성합니다.

프로세스

  1. 사용자 정의 실행 환경 빌드 아티팩트를 저장할 디렉터리를 생성합니다. 다음 단계로 생성된 새 파일은 이 디렉터리에 생성됩니다.

    $ mkdir $HOME/custom-ee $HOME/custom-ee/files
    $ cd $HOME/custom-ee/
  2. 사용자 정의 실행 환경에 대한 요구 사항을 정의하는 execution-environment.yml 파일을 생성합니다.

    참고

    실행 환경 정의 형식의 버전 3이 필요하므로 계속하기 전에 execution-environment.yml 파일에 버전 3 이 명시적으로 포함되어 있는지 확인합니다.

    1. 프라이빗 자동화 허브에서 사용할 수 있는 최소 실행 환경을 가리키도록 기본 이미지를 재정의합니다.
    2. 빌드 프로세스에서 사용할 연결이 끊긴 콘텐츠 소스를 가리키는 데 필요한 추가 빌드 파일을 정의합니다. 사용자 정의 execution-environment.yml 파일은 다음 예와 유사해야 합니다.
    version: 3
    
    images:
      base_image:
        name: private-hub.example.com/ee-minimal-rhel8:latest
    
    dependencies:
      python: requirements.txt
      galaxy: requirements.yml
    
    additional_build_files:
      - src: files/ansible.cfg
        dest: configs
      - src: files/pip.conf
        dest: configs
      - src: files/hub-ca.crt
        dest: configs
      # uncomment if custom RPM repositories are required
      #- src: files/custom.repo
      #  dest: configs
    
    additional_build_steps:
      prepend_base:
        # copy a custom pip.conf to override the location of the PyPI content
        - ADD _build/configs/pip.conf /etc/pip.conf
        # remove the default UBI repository definition
        - RUN rm -f /etc/yum.repos.d/ubi.repo
        # copy the hub CA certificate and update the trust store
        - ADD _build/configs/hub-ca.crt /etc/pki/ca-trust/source/anchors
        - RUN update-ca-trust
        # if needed, uncomment to add a custom RPM repository configuration
        #- ADD _build/configs/custom.repo /etc/yum.repos.d/custom.repo
    
      prepend_galaxy:
        - ADD _build/configs/ansible.cfg ~/.ansible.cfg
    
    ...
  3. 개인 자동화 허브를 가리키는 files/ 하위 디렉터리에 ansible.cfg 파일을 생성합니다.

    $ cat files/ansible.cfg
    [galaxy]
    server_list = private_hub
    
    [galaxy_server.private_hub]
    url = /https://private-hub.example.com/api/galaxy/
  4. 내부 PyPI 미러(웹 서버 또는 Nexus와 같은 항목)를 가리키는 files/ 하위 디렉터리에 pip.conf 파일을 생성합니다.

    $ cat files/pip.conf
    [global]
    index-url = https://<pypi_mirror_fqdn>/
    trusted-host = <pypi_mirror_fqdn>
  5. 선택 사항: bindep.txt 파일을 사용하여 RPM을 사용자 지정 실행 환경을 추가하는 경우, 연결이 끊긴 Satellite 또는 RPM 리포지토리를 호스팅하는 다른 위치를 가리키는 files/ 하위 디렉터리에 custom.repo 파일을 만듭니다. 이 단계가 필요한 경우 custom.repo 파일에 해당하는 execution-environment.yml 파일의 단계 주석을 제거합니다.

    다음 예제는 UBI 리포지토리를 위한 것입니다. 다른 로컬 리포지토리도 이 파일에 추가할 수 있습니다. 웹 서버에 미러 콘텐츠가 있는 위치에 따라 URL 경로를 변경해야 할 수 있습니다.

    $ cat files/custom.repo
    [ubi-8-baseos]
    name = Red Hat Universal Base Image 8 (RPMs) - BaseOS
    baseurl = http://<ubi_mirror_fqdn>/repos/ubi-8-baseos
    enabled = 1
    gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    gpgcheck = 1
    
    [ubi-8-appstream]
    name = Red Hat Universal Base Image 8 (RPMs) - AppStream
    baseurl = http://<ubi_mirror_fqdn>/repos/ubi-8-appstream
    enabled = 1
    gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    gpgcheck = 1
  6. 프라이빗 자동화 허브 웹 서버 인증서에 서명하는 데 사용되는 CA 인증서를 추가합니다. 프라이빗 자동화 허브에서 설치 프로그램에서 제공하는 자체 서명된 인증서를 사용하는 경우:

    1. 개인 자동화 허브에서 /etc/pulp/certs/pulp_webserver.crt 파일을 복사하여 이름을 hub-ca.crt 로 지정합니다.
    2. hub-ca.crt 파일을 files/ 하위 디렉터리에 추가합니다.
  7. 프라이빗 자동화 허브에서 인증 기관에서 서명한 사용자 제공 인증서를 사용하는 경우:

    1. 해당 CA 인증서의 사본을 만들고 이름을 hub-ca.crt 로 지정합니다.
    2. hub-ca.crt 파일을 files/' 하위 디렉터리에 추가합니다.
  8. 이전 단계를 완료하면 사용자 정의 실행 환경 이미지에 필요한 콘텐츠를 사용하여 python requirements.txt 및 ansible collection requirements.yml 파일을 생성합니다.

    참고

    필요한 컬렉션은 이미 프라이빗 자동화 허브에 업로드해야 합니다.

    다음 파일은 bindep.txtfiles/custom.repo 가 선택인 custom-ee/ 디렉터리에 있어야 합니다.

$ cd $HOME/custom-ee
$ tree .
.
├── bindep.txt
├── execution-environment.yml
├── files
│   ├── ansible.cfg
│   ├── custom.repo
│   ├── hub-ca.crt
│   └── pip.conf
├── requirements.txt
└── requirements.yml

1 directory, 8 files

3.6. 자동화 실행 환경 이미지 빌드

정의 파일을 생성할 때 자동화 실행 환경 이미지 빌드를 진행할 수 있습니다.

참고

실행 환경 이미지를 빌드할 때 Ansible Automation Platform이 배포된 아키텍처를 지원해야 합니다.

사전 요구 사항

  • 정의 파일을 생성했습니다.

프로세스

자동화 실행 환경 이미지를 빌드하려면 명령줄에서 다음을 실행합니다.

$ ansible-builder build

기본적으로 Ansible Builder는 execution-environment.yml 이라는 정의 파일을 찾고 있지만 -f 플래그를 사용하여 다른 파일 경로를 인수로 지정할 수 있습니다.

예를 들면 다음과 같습니다.

$ ansible-builder build -f definition-file-name.yml

여기서 definition-file-name 은 정의 파일의 이름을 지정합니다.

3.7. 정의 파일 콘텐츠 분석

자동화 실행 환경 컨테이너 이미지에 포함된 콘텐츠를 지정하므로 Ansible Builder로 자동화 실행 환경을 빌드하려면 정의 파일을 제공해야 합니다.

다음 섹션에서는 정의 파일의 다양한 부분을 나눕니다.

3.7.1. 빌드 인수

정의 파일의 build_arg_defaults 섹션은 키가 Ansible Builder에 인수에 대한 기본값을 제공할 수 있는 사전입니다.

다음 표에는 build_arg_defaults 에서 사용할 수 있는 값이 나열되어 있습니다.

Expand
현재의설명

ANSIBLE_GALAXY_CLI_COLLECTION_OPTS

사용자가 컬렉션 설치 단계에서 ansible-galaxy CLI에 임의의 인수를 전달할 수 있습니다.

예를 들어 사전 릴리스 컬렉션 설치를 활성화하는 -pre 플래그 또는 -c 에서 서버의 SSL 인증서 확인을 비활성화합니다.

ANSIBLE_GALAXY_CLI_ROLE_OPTS

사용자가 -no-deps 와 같은 플래그를 역할 설치에 전달할 수 있습니다.

참고

일반적으로 podman을 사용하여 기본 이미지를 사용자 지정 기본 이미지로 사용자 지정한 다음 이 사용자 정의 이미지에서 ansible-builder 를 호출하는 것이 일반적으로 더 쉽습니다(특히 파이프라인 컨텍스트에서).

build_arg_defaults 내에 제공된 값은 Containerfile 에 하드 코딩되므로 podman build 를 수동으로 호출하면 이러한 값이 유지됩니다.

참고

CLI --build-arg 플래그에 동일한 변수가 지정된 경우 CLI 값이 우선합니다.

3.7.2. 정의 종속 항목

정의 파일의 dependencies 섹션에 있는 최종 이미지에 설치해야 하는 종속성을 포함할 수 있습니다.

자동화 실행 환경 이미지 문제를 방지하려면 Galaxy, Python 및 시스템의 항목이 유효한 요구 사항 파일을 가리키거나 해당 파일 유형에 유효한 콘텐츠인지 확인하십시오.

3.7.2.1. Galaxy

galaxy 항목은 유효한 요구 사항 파일을 가리키거나 ansible-galaxy 컬렉션 install -r …​ 명령에 대한 인라인 콘텐츠를 포함합니다.

항목 requirements.yml 은 자동화 실행 환경 정의 폴더의 디렉터리 또는 절대 경로의 상대 경로일 수 있습니다.

콘텐츠는 다음과 같을 수 있습니다.

collections:
  - community.aws
  - kubernetes.core
3.7.2.2. Python

정의 파일의 python 항목은 올바른 요구 사항 파일을 가리키거나 pip install -r …​ 명령의 PEP508 형식의 Python 요구 사항 목록을 가리킵니다.

항목 requirements.txt 는 컬렉션에서 Python 종속 항목으로 이미 나열한 항목 위에 Python 요구 사항을 설치하는 파일입니다. 자동화 실행 환경 정의 폴더의 디렉터리 또는 절대 경로의 상대 경로로 나열될 수 있습니다. pip freeze 명령의 표준 출력과 유사하게 requirements.txt 파일의 내용은 다음 예로 포맷해야 합니다.

콘텐츠는 다음과 같을 수 있습니다.

boto>=2.49.0
botocore>=1.12.249
pytz
python-dateutil>=2.7.0
awxkit
packaging
requests>=2.4.2
xmltodict
azure-cli-core==2.11.1
openshift>=0.6.2
requests-oauthlib
openstacksdk>=0.13
ovirt-engine-sdk-python>=4.4.10
3.7.2.3. 시스템

정의의 시스템 항목은 bindep 요구 사항 파일 또는 Bindep 항목의 인라인 목록을 가리킵니다. 이 목록은 컬렉션에 이미 포함되어 있는 항목 외부에 있는 시스템 수준 종속성을 설치합니다. 시스템 항목은 자동화 실행 환경 정의 폴더의 디렉터리에서 상대 경로로 나열하거나 절대 경로로 나열할 수 있습니다. 최소한 컬렉션은 [platform:rpm] 에 필요한 요구 사항을 지정해야 합니다.

이를 설명하기 위해 다음은 libxml2 및 하위 버전 패키지를 컨테이너에 추가하는 bindep.txt 파일의 예입니다.

콘텐츠는 다음과 같을 수 있습니다.

libxml2-devel [platform:rpm]
subversion [platform:rpm]

여러 컬렉션의 항목이 단일 파일로 결합됩니다. 이는 bindep 에 의해 처리된 다음 dnf 로 전달됩니다. 프로필이 없거나 런타임 요구 사항이 없는 요구 사항만 이미지에 설치됩니다.

3.7.2.4. 이미지

정의 파일의 images 섹션은 기본 이미지를 식별합니다. podman 컨테이너 런타임에서는 서명된 컨테이너 이미지에 대한 확인이 지원됩니다.

다음 표에서는 이미지에서 사용할 수 있는 값 목록을 보여줍니다.

Expand
현재의설명

base_image

기존 이미지를 기반으로 새 이미지를 빌드할 수 있는 자동화 실행 환경의 상위 이미지를 지정합니다. 일반적으로 ee-minimal 또는 ee-supported 와 같은 지원되는 실행 환경 기본 이미지이지만 사용자가 생성하고 추가로 사용자 지정하려는 실행 환경 이미지일 수도 있습니다.

컨테이너 이미지를 사용하려면 name 키가 필요합니다. 이미지가 저장소 내에 미러링되지만 이미지의 원래 서명 키로 서명된 경우 서명 _original_name 키를 지정합니다. 이미지 이름에는 :latest 와 같은 태그가 포함되어야 합니다.

기본 이미지는 registry.redhat.io/ansible-automation-platform-24/ee-minimal-rhel8:latest 입니다.

3.8. 추가 빌드 파일

정의 파일의 additional_build_files 섹션에 참조하거나 복사하여 외부 파일을 빌드 컨텍스트 디렉터리에 추가할 수 있습니다. 형식은 사전 값 목록으로, 각각 srcdest 키와 value가 있습니다.

각 목록 항목은 다음 필수 키가 포함된 사전이어야 합니다.

src
빌드 컨텍스트 디렉터리에 복사할 소스 파일을 지정합니다. 절대 경로(예: /home/user/.ansible.cfg) 또는 실행 환경 파일과 관련된 경로일 수 있습니다. 상대 경로는 하나 이상의 파일(예: files/*.cfg)과 일치하는 glob 표현식일 수 있습니다.
참고

절대 경로는 정규식을 포함할 수 없습니다. src 가 디렉터리이면 해당 디렉토리의 전체 콘텐츠가 dest 로 복사됩니다.

dest
소스 파일(예: files/configs)을 포함하는 빌드 컨텍스트 디렉터리의 _build 하위 디렉터리 아래에 하위 디렉터리 경로를 지정합니다. 이는 절대 경로이거나 경로 내에서 포함할 수 없습니다. Ansible Builder가 아직 없는 경우 이 디렉터리를 생성합니다.

3.9. 추가적인 사용자 지정 빌드 단계

정의 파일의 additional_build_steps 섹션에서 모든 빌드 단계에 대한 사용자 정의 빌드 명령을 지정할 수 있습니다. 이를 통해 빌드 단계를 세부적으로 제어할 수 있습니다.

prepend_append_ 명령을 사용하여 기본 빌드 단계가 실행되기 전이나 후에 실행되는 Containerfile 에 지시문을 추가합니다. 명령은 런타임 시스템에 필요한 모든 규칙을 준수해야 합니다.

additional_build_steps 에서 사용할 수 있는 값 목록은 다음 표를 참조하십시오.

Expand
현재의설명

prepend_base

기본 이미지를 빌드하기 전에 명령을 삽입할 수 있습니다.

append_base

기본 이미지를 빌드한 후 명령을 삽입할 수 있습니다.

prepend_galaxy

Galaxy 이미지를 빌드하기 전에 삽입할 수 있습니다.

append_galaxy

Galaxy 이미지를 빌드한 후 삽입할 수 있습니다.

prepend_builder

Python 빌더 이미지를 빌드하기 전에 명령을 삽입할 수 있습니다.

append_builder

Python 빌더 이미지를 빌드한 후 명령을 삽입할 수 있습니다.

prepend_final

최종 이미지를 빌드하기 전에 삽입할 수 있습니다.

append_final

최종 이미지를 빌드한 후 삽입할 수 있습니다.

additional_build_steps 구문은 여러 줄 문자열과 목록을 모두 지원합니다. 다음 예제를 참조하십시오.

예 3.1. 여러 줄 문자열 항목

prepend_final: |
   RUN whoami
   RUN cat /etc/os-release

예 3.2. 목록 항목

append_final:
- RUN echo This is a post-install command!
- RUN ls -la /etc

예 3.3. 임의의 파일을 실행 환경에 복사

additional_build_files:
  # copy arbitrary files next to this EE def into the build context - we can refer to them later...
  - src: files/rootCA.crt
    dest: configs

additional_build_steps:
  prepend_base:
    # copy a custom CA cert into the base image and recompute the trust database
    # because this is in "base", all stages will inherit (including the final EE)
    - COPY _build/configs/rootCA.crt /usr/share/pki/ca-trust-source/anchors
    - RUN update-ca-trust

additional_build_files 섹션을 사용하면 빌드 컨텍스트 디렉터리에 rootCA.crt 를 추가할 수 있습니다. 이 파일이 빌드 컨텍스트 디렉터리에 복사되면 빌드 프로세스에서 사용할 수 있습니다. 파일을 사용하려면 additional_build_steps 섹션의 prepend_base 단계에 지정된 COPY 지시문을 사용하여 빌드 컨텍스트 디렉터리에서 복사합니다. RUN update-ca-trust를 실행하여 CA 인증서의 동적 구성 업데이트와 같이 복사된 파일을 기반으로 모든 작업을 수행할 수 있습니다.

3.9.1. 환경 변수를 사용하여 실행 환경 빌드

다음 예제 파일은 빌드 프로세스에 필요할 수 있는 환경 변수를 지정합니다.

이 기능을 수행하기 위해 additional_build_steps 섹션의 prepend_base 단계에서 ENV 변수 정의를 사용합니다.

—
additional_build_steps:
  prepend_base:
    - ENV FOO=bar
    - RUN echo $FOO > /tmp/file1.txt

동일한 환경 변수는 빌드 프로세스의 이후 단계에서 사용할 수 있습니다.

3.9.2. Galaxy 구성에 대한 환경 변수를 사용하여 실행 환경 빌드

Ansible Builder 스키마 3을 사용하면 사용자 지정 Galaxy 구성 지정과 같은 복잡한 시나리오를 수행할 수 있습니다. 이 방법을 사용하여 인증 토큰과 같은 중요한 정보를 최종 실행 환경 이미지로 유출하지 않고 실행 환경 빌드에 전달할 수 있습니다.

다음 예제에서는 Ansible Galaxy Server 환경 변수를 사용합니다.

additional_build_steps:
  prepend_galaxy:
    # Environment variables used for Galaxy client configurations
    - ENV ANSIBLE_GALAXY_SERVER_LIST=automation_hub
    - ENV ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_URL=https://console.redhat.com/api/automation-hub/content/xxxxxxx-synclist/
    - ENV ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_AUTH_URL=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token
    # define a custom build arg env passthru - we still also have to pass
    # `--build-arg ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN` to get it to pick it up from the env
    - ARG ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN

options:
  package_manager_path: /usr/bin/microdnf  # downstream images use non-standard package manager

ENV 지시문을 사용하여 ANSIBLE_GALAXY_SERVER_LIST,ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_URLANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_AUTH_URL 과 같은 환경 변수를 제공할 수 있습니다. 자세한 내용은 Ansible 문서의 Galaxy 사용자 가이드를 참조하십시오.

보안상의 이유로 중요한 정보를 ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN 에 저장해서는 안 됩니다. ARG 지시문을 사용하여 사용자의 민감한 정보를 입력으로 수신할 수 있습니다.

-build-args 는 ansible-builder 명령을 호출하는 동안 이 정보를 제공하는 데 사용할 수 있습니다.

3.10. 실행 환경 이미지 위치 업데이트

Ansible Automation Platform과 별도로 프라이빗 자동화 허브를 설치한 경우 프라이빗 자동화 허브를 가리키도록 실행 환경 이미지 위치를 업데이트할 수 있습니다.

프로세스

  1. setup.sh가 포함된 디렉터리로 이동합니다.
  2. 다음 명령을 실행하여 ./group_vars/automationcontroller 를 만듭니다.

    touch ./group_vars/automationcontroller
  3. 다음 내용을 ./group_vars/automationcontroller 에 붙여넣습니다. 환경에 맞게 설정을 조정합니다.

    # Automation Hub Registry
    registry_username: 'your-automation-hub-user'
    registry_password: 'your-automation-hub-password'
    registry_url: 'automationhub.example.org'
    registry_verify_ssl: False
    
    ## Execution Environments
    control_plane_execution_environment: 'automationhub.example.org/ee-supported-rhel8:latest'
    
    global_job_execution_environments:
      - name: "Default execution environment"
        image: "automationhub.example.org/ee-supported-rhel8:latest"
      - name: "Minimal execution environment"
        image: "automationhub.example.org/ee-minimal-rhel8:latest"
    참고

    registry_usernameregistry_password 를 얻는 방법에 대한 자세한 내용은 registry_username 및 registry_password 설정을참조하십시오.

  4. ./setup.sh 스크립트를 실행합니다.

    $ ./setup.sh

검증

  1. 시스템 관리자 액세스 권한이 있는 사용자로 Ansible Automation Platform에 로그인합니다.
  2. Automation ExecutionInfrastructureExecution Environments 로 이동합니다.
  3. 이미지 열에서 실행 환경 이미지 위치가 < registry url>/ansible-automation-platform-<version>/<image name>:<tag>에서 < automation hub url>:<tag >:<tag > 의 기본값에서 변경되었는지 확인합니다.

3.11. 선택적 빌드 명령 인수

-t 플래그는 자동화 실행 환경 이미지에 특정 이름으로 태그를 지정합니다. 예를 들어 다음 명령은 my_first_ee_image 라는 이미지를 빌드합니다.

$ ansible-builder build -t my_first_ee_image
참고

빌드 와 함께 -t 를 사용하지 않으면 ansible-execution-env 라는 이미지가 생성되어 로컬 컨테이너 레지스트리에 로드됩니다.

여러 정의 파일이 있는 경우 -f 플래그를 포함하여 사용할 파일을 지정할 수 있습니다.

$ ansible-builder build -f another-definition-file.yml -t another_ee_image

이 예제에서 Ansible Builder는 기본 execution-environment.yml 대신 another-definition-file.yml 이라는 파일에 제공된 사양을 사용하여 another_ee_image 라는 자동화 실행 환경 이미지를 빌드합니다.

빌드 명령과 함께 사용할 수 있는 기타 사양 및 플래그의 경우 ansible-builder build --help 를 입력하여 추가 옵션 목록을 확인합니다.

3.12. Containerfile

정의 파일을 생성한 후 Ansible Builder는 이를 읽고 검증하고, Containerfile 및 컨테이너 빌드 컨텍스트를 생성하고 선택적으로 Podman에 전달하여 자동화 실행 환경 이미지를 빌드합니다. 컨테이너 빌드는 기본 , galaxy,빌더최종 등 여러 단계로 수행됩니다. 이미지 빌드 단계( additional_build_단계에 정의된 해당 사용자 정의 prepend_append _ 단계와 함께 )는 다음과 같습니다.

  1. 기본 빌드 단계에서 지정된 기본 이미지는 Python, pip,ansible-core, ansible-runner 를 포함하여 다른 빌드 단계에 필요한 구성 요소로 사용자 지정된 (선택 사항)입니다. 그런 다음 생성된 이미지를 검증하여 필요한 구성 요소를 사용할 수 있는지 확인합니다(기본 이미지에 이미 있을 수 있음). 생성된 사용자 지정 기본 이미지의 임시 복사본은 다른 모든 빌드 단계의 기반으로 사용됩니다.
  2. Galaxy 빌드 단계에서 정의 파일에 지정된 컬렉션이 다운로드되어 최종 빌드 단계에서 나중에 설치할 수 있도록 저장됩니다. 컬렉션에서 선언한 Python 및 시스템 종속 항목은 나중에 분석을 위해 수집됩니다.
  3. 빌더 빌드 단계에서 컬렉션에서 선언한 Python 종속성은 정의 파일에 나열된 항목과 병합됩니다. 이 최종 Python 종속 항목 세트는 Python용으로 다운로드 및 빌드되어 최종 빌드 단계에서 나중에 설치를 위해 저장됩니다.
  4. 최종 빌드 단계에서 이전에 다운로드한 컬렉션은 컬렉션에 의해 종속성으로 선언되었거나 정의 파일에 나열된 시스템 패키지 및 이전에 빌드된 모든 Python 패키지와 함께 설치됩니다.

3.13. 이미지를 빌드하지 않고 컨테이너 파일 생성

보안상의 이유로 샌드박스 환경에서 빌드된 공유 컨테이너 이미지를 사용해야 하는 경우 공유 가능한 컨테이너 파일을 생성할 수 있습니다.

$ ansible-builder create

3.14. 이미지를 빌드하는 YAML 파일의 예

'ansible-builder' 빌드 명령은 실행 환경 정의를 입력으로 사용합니다. 실행 환경 이미지를 빌드하는 데 필요한 빌드 컨텍스트를 출력한 다음 해당 이미지를 빌드합니다. 이미지는 빌드 컨텍스트를 사용하여 다른 위치에 다시 빌드하고 동일한 결과를 생성할 수 있습니다. 기본적으로 빌더는 현재 디렉터리에서 execution-environment.yml 이라는 파일을 검색합니다.

다음 예제 execution-environment.yml 파일을 시작점으로 사용할 수 있습니다.

version: 3
dependencies:
  galaxy: requirements.yml
The content of requirements.yml:
---
collections:
  - name: awx.awx
To build an execution environment using the preceding files and run the following command:
ansible-builder build
...
STEP 7: COMMIT my-awx-ee
--> 09c930f5f6a
09c930f5f6ac329b7ddb321b144a029dbbfcc83bdfc77103968b7f6cdfc7bea2
Complete! The build context can be found at: context

즉시 사용할 수 있는 컨테이너 이미지를 생성하는 것 외에도 빌드 컨텍스트가 유지됩니다. docker build 또는 podman build와 같은 툴을 사용하여 다른 시간이나 위치에 다시 빌드할 수 있습니다.

4장. 일반적인 자동화 실행 환경 시나리오

다음 예제 정의 파일을 사용하여 일반적인 구성 시나리오를 해결합니다.

4.1. 자동화 허브 CA 인증서 업데이트

이 예제를 사용하여 CA 인증서를 additional-build-files 섹션에 포함하도록 기본 정의 파일을 사용자 지정하고 파일을 적절한 디렉터리로 이동하고 마지막으로 명령을 실행하여 시스템이 이 CA 인증서를 신뢰하도록 CA 인증서의 동적 구성을 업데이트합니다.

사전 요구 사항

  • 사용자 정의 CA 인증서(예: rootCA.crt )
참고

prepend_base 를 사용하여 CA 인증서를 사용자 정의하면 다른 모든 빌드 단계와 최종 이미지에 결과 CA 구성이 기본 이미지에서 상속되므로 결과 CA 구성이 표시됩니다.

additional_build_files:
  # copy the CA public key into the build context, we will copy and use it in the base image later
  - src: files/rootCA.crt
    dest: configs

additional_build_steps:
  prepend_base:
    # copy a custom CA cert into the base image and recompute the trust database
    # because this is in "base", all stages will inherit (including the final EE)
    - COPY _build/configs/rootCA.crt /usr/share/pki/ca-trust-source/anchors
    - RUN update-ca-trust

options:
  package_manager_path: /usr/bin/microdnf  # downstream images use non-standard package manager

[galaxy]
server_list = automation_hub

4.2. 자동화 실행 환경을 구축할 때 자동화 허브 인증 세부 정보 사용

다음 예제를 사용하여 최종 자동화 실행 환경 이미지에 노출하지 않고 자동화 허브 인증 세부 정보를 자동화 실행 환경 빌드에 전달하도록 기본 정의 파일을 사용자 지정합니다.

사전 요구 사항

export ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN=$(cat <token.txt>)
additional_build_steps:
  prepend_galaxy:
    # define a custom build arg env passthru- we still also have to pass
    # `--build-arg ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN` to get it to pick it up from the host env
    - ARG ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_TOKEN
    - ENV ANSIBLE_GALAXY_SERVER_LIST=automation_hub
    - ENV ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_URL=https://console.redhat.com/api/automation-hub/content/<yourhuburl>-synclist/
    - ENV ANSIBLE_GALAXY_SERVER_AUTOMATION_HUB_AUTH_URL=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token

추가 리소스

5장. 자동화 실행 환경 게시

5.1. 기존 자동화 실행 환경 이미지 사용자 정의

Ansible Controller에는 다음과 같은 기본 실행 환경이 포함되어 있습니다.

  • 최소 - ansible-automation-platform-25 에는 Ansible Runner와 함께 최신 Ansible-core 2.16 릴리스가 포함되어 있지만 컬렉션 또는 기타 콘텐츠는 포함되지 않습니다. ansible-automation-platform-24에는 Ansible Runner와 함께 Ansible-core 2.15 릴리스가 포함되어 있지만 컬렉션 또는 기타 콘텐츠는 포함되지 않습니다.

    지원되는 실행 환경은 많은 자동화 사전 요구 사항을 다루지만 고유한 사용자 지정 이미지에 대한 최소 실행 환경은 종속성 및 해당 버전을 완전히 제어하기 위해 권장되는 기반입니다.

  • EE 지원 - 최소 및 모든 Red Hat 지원 컬렉션 및 종속 항목

이러한 환경에서는 많은 자동화 사용 사례를 다루지만 특정 요구 사항에 맞게 이러한 컨테이너를 사용자 정의하기 위해 추가 항목을 추가할 수 있습니다. 다음 절차에서는 ee-minimal 기본 이미지에 kubernetes.core 컬렉션을 추가합니다.

프로세스

  1. Podman을 사용하여 registry.redhat.io 에 로그인합니다.

    $ podman login -u="[username]" -p="[token/hash]" registry.redhat.io
  2. 필요한 자동화 실행 환경 기본 이미지를 가져올 수 있는지 확인합니다.

    podman pull registry.redhat.io/ansible-automation-platform-24/ee-minimal-rhel8:latest
  3. 새 실행 환경 이미지에 추가할 필수 기본 이미지 및 추가 콘텐츠를 지정하도록 Ansible Builder 파일을 구성합니다.

    1. 예를 들어 Galaxy의 Kubernetes Core Collection 을 이미지에 추가하려면 Galaxy 항목을 사용합니다.

      collections:
        - kubernetes.core
    2. 정의 파일 및 해당 콘텐츠에 대한 자세한 내용은 정의 파일 콘텐츠 분석 섹션을 참조하십시오.
  4. 실행 환경 정의 파일에서 EE_BASE_IMAGE 필드에 원래 ee-minimal 컨테이너의 URL 및 태그를 지정합니다. 이렇게 하면 최종 execution-environment.yml 파일이 다음과 유사합니다.

    예 5.1. 사용자 지정 execution-environment.yml 파일

    version: 3
    
    images:
      base_image: 'registry.redhat.io/ansible-automation-platform-25/ee-minimal-rhel9:latest'
    
    dependencies:
      galaxy:
        collections:
          - kubernetes.core
    참고

    이 예제에서는 자동화 허브의 인증된 컬렉션이 아닌 kubernetes.core 커뮤니티 버전을 사용하므로 정의 파일에서 ansible.cfg 파일을 생성하거나 참조를 참조할 필요가 없습니다.

  5. 다음 명령을 사용하여 새 실행 환경 이미지를 빌드합니다.

    $ ansible-builder build -t [username]/new-ee

    여기서 [username] 은 사용자 이름을 지정하고 new-ee 는 새 컨테이너 이미지의 이름을 지정합니다.

    참고

    빌드 와 함께 -t 를 사용하지 않으면 ansible-execution-env 라는 이미지가 생성되어 로컬 컨테이너 레지스트리에 로드됩니다.

    • podman images 명령을 사용하여 새 컨테이너 이미지가 해당 목록에 있는지 확인합니다.

      다음은 new-ee 이미지와 함께 'podman images' 명령의 출력을 보여줍니다.

      REPOSITORY          TAG     IMAGE ID      CREATED        SIZE
      localhost/new-ee    latest  f5509587efbb  3 minutes ago  769 MB
  6. 컬렉션이 설치되었는지 확인합니다.

    $ podman run [username]/new-ee ansible-doc -l kubernetes.core
  7. 자동화 허브에서 사용할 이미지를 태그합니다.

    $ podman tag [username]/new-ee [automation-hub-IP-address]/[username]/new-ee
  8. Podman을 사용하여 자동화 허브에 로그인합니다.

    참고

    컨테이너를 푸시하려면 자동화 허브에 대한 관리자 또는 적절한 컨테이너 리포지토리 권한이 있어야 합니다. 자세한 내용은 프라이빗 자동화 허브에서 컨테이너 관리를 참조하십시오.

    $ podman login -u="[username]" -p="[token/hash]" [automation-hub-IP-address]
  9. 자동화 허브의 컨테이너 레지스트리로 이미지를 푸시합니다.

    $ podman push [automation-hub-IP-address]/[username]/new-ee
  10. 새 이미지를 자동화 컨트롤러 인스턴스로 가져옵니다.

    1. 자동화 컨트롤러로 이동합니다.
    2. 탐색 패널에서 자동화 실행 인프라 실행환경을 선택합니다.
    3. 추가 를 클릭합니다.
    4. 적절한 정보를 입력한 다음 저장을 클릭하여 새 이미지를 가져옵니다.

      참고

      자동화 허브의 인스턴스가 암호 또는 토큰 보호인 경우 적절한 컨테이너 레지스트리 인증 정보가 설정되어 있는지 확인합니다.

6장. 프라이빗 자동화 허브 컨테이너 레지스트리 채우기

기본적으로 프라이빗 자동화 허브에는 자동화 실행 환경이 포함되어 있지 않습니다. 컨테이너 레지스트리를 채우려면 실행 환경을 푸시해야 합니다.

6.1. 프라이빗 허브에 사용자 정의 실행 환경 업로드

새 실행 환경 이미지를 자동화 작업에 사용하려면 먼저 프라이빗 자동화 허브에 업로드해야 합니다.

먼저 실행 환경 이미지가 로컬 podman 캐시에 표시되는지 확인합니다.

$ podman images --format "table {{.ID}} {{.Repository}} {{.Tag}}"
IMAGE ID	    REPOSITORY					              TAG
b38e3299a65e	private-hub.example.com/custom-ee     	  latest
8e38be53b486	private-hub.example.com/ee-minimal-rhel8  latest

프라이빗 자동화 허브의 컨테이너 레지스트리에 로그인하고 이미지를 푸시하여 작업 템플릿 및 워크플로우와 함께 사용할 수 있도록 합니다.

$ podman login private-hub.example.com -u admin
Password:
Login Succeeded!
$ podman push private-hub.example.com/custom-ee:latest

다음 워크플로를 사용하여 프라이빗 자동화 허브 원격 레지스트리를 채웁니다.

추가 정보

레지스트리에 대한 자세한 내용은 Red Hat Container Registry Authentication을 참조하십시오.

부록 A. 자동화 실행 환경 우선순위

프로젝트 업데이트에서는 항상 컨트롤 플레인 자동화 실행 환경을 사용하지만 작업은 다음과 같이 사용 가능한 첫 번째 자동화 실행 환경을 사용합니다.

  1. 작업을 생성한 템플릿(작업 템플릿 또는 인벤토리 소스)에 정의된 execution_environment 입니다.
  2. 작업에서 사용하는 프로젝트에 정의된 default_environment 입니다.
  3. 작업 조직에 정의된 default_environment 입니다.
  4. 작업에서 사용하는 인벤토리 조직에 정의된 default_environment 입니다.
  5. 현재 DEFAULT_EXECUTION_ENVIRONMENT 설정( api/v2/settings/system/)
  6. GLOBAL_JOB_EXECUTION_ENVIRONMENTS 설정의 모든 이미지입니다.
  7. 기타 글로벌 실행 환경.
참고

둘 이상의 실행 환경이 기준(6 및 7에 적용)에 적합한 경우 가장 최근에 생성된 조건이 사용됩니다.

오픈 소스 라이센스

Apache 라이센스

버전 2.0, 2004년 1월

http://www.apache.org/licenses/

사용, 재생 및 배포를 위한 이용 약관

1. 정의.

"라이센스" 는 이 문서의 섹션 1에서 9까지의 사용, 복제 및 배포에 대한 이용 약관을 의미합니다.

"Licensor" 는 라이센스를 부여하는 저작권 소유자가 승인한 저작권 소유자 또는 법인을 의미합니다.

"법적 엔티티" 는 활동 엔티티의 결합과 해당 엔티티에 의해 제어되거나, 제어되는 다른 모든 엔티티 및 다른 모든 엔티티를 의미합니다. 이러한 정의의 목적을 위해, "통제" 는 (i) 계약 또는 기타 여부에 관계없이 이러한 엔티티의 방향 또는 관리를 유발하기 위해 (i) 직접 또는 간접, 또는 (ii) 50ifty 퍼센트 (50 %) 또는 뛰어난 주식의 소유권 또는 (iii) 해당 엔티티의 유익한 소유권을 의미합니다.

"귀하 "(또는 "귀하")는 이 라이센스에서 부여한 개인 또는 법적 엔티티를 의미합니다.

"소스" 형식은 소프트웨어 소스 코드, 문서 소스 및 구성 파일을 포함하여 수정하기 위한 기본 양식을 의미합니다.

"오브젝트" 형식은 컴파일된 오브젝트 코드, 생성된 문서 및 기타 미디어 유형으로의 변환을 포함하되 이에 제한되지 않음을 포함하여 소스 양식의 변형 또는 번역으로 인한 모든 형태를 의미합니다.

"워크" 는 작업에 포함되거나 첨부된 저작권 공지에 표시된 대로 소스 또는 오브젝트 양식에서 사용 가능한 출처 또는 오브젝트 양식의 작업을 의미합니다(예: 아래 부록에 제공됨).

"공동적 작업" 은 작업을 기반으로 하는 소스 또는 오브젝트 양식의 모든 작업을 의미하고 편집 버전, 주석, 설명 또는 기타 수정이 전체적으로 권한 부여의 원래 작업을 대표하는 모든 작업을 의미합니다. 이 라이센스의 목적을 위해, Derivative Works는 그 작업과의 인터페이스에 단순히 분리할 수 있거나 (또는 이름으로 묶기) 작업을 포함하지 않습니다.

"보통" 은 원본 버전의 작업 및 해당 Work 또는 Derivative Works에 대한 수정 또는 추가를 포함하여 저작권 소유자 또는 저작권 소유자를 대신하여 제출할 수 있는 개인 또는 법적 엔티티에 의해 작업에 포함하기 위해 의도적으로 제출되는 작성자의 작업을 의미합니다. 이러한 정의의 목적을 위해, " 출판"은 전자 우편 목록, 소스 코드 제어 시스템 및 문제 추적 시스템, 또는 작업 강화 및 개선 목적을 위해 Licensor 또는 그 대표에게 전송되는 전자적, 구두 또는 서면 통신의 모든 형태를 의미합니다. 그러나 저작권 소유자가 "승인이 아님"으로 서면으로 표시되거나 달리 지정된 통신을 제외합니다.

"contri butor"는 Licensor 및 모든 개인 또는 법인을 대신하여 Licensor에 의해 수신되고 이후에 작업 내에 통합되어야 합니다.

2. 저작권 라이센스 부여. 본 라이센스의 이용 약관에 따라 각 기여자는 귀하에게 영구적으로, 전 세계적으로, 비독점, 비독점, 불충분하고, 무관한 저작권 라이센스를 부여하여 공개적으로 디스플레이, 공개적으로 수행, 하위 라이선스를 준비 및 소스 또는 객체 양식에서 해당 Derivative Works를 배포할 수 있습니다.

3. Mellanox License를 부여합니다. 본 라이센스의 이용 약관에 따라 각 기여자는 귀하에게 영구적이고, 전 세계적으로, 비독점, 비독점, 무상위적, 무상(본 섹션에 명시된 경우를 제외하고)을 제기, 수행, 사용, 판매, 판매, 가져오기 및 양도할 수 있는 권리를 귀하에게 부여합니다. 이러한 라이센스는 해당 기여자가 단독으로 또는 해당 기여가 제출된 작업과의 조합에 의해 반드시 해당 기여자에 의해 양도되는 권리에 의해서만 적용됩니다. 귀하가 모든 법인에 대해(작업 내에 통합되는 작업 또는 기여를 포함함) 모든 법인에 대해 불만을 제기하는 경우, 본 이용허가에 따라 귀하에게 부여된 모든 저작권허가는 이러한 소송이 제기된 날짜로 종료되어야 합니다.

4. 재배포. 귀하는 수정이나 수정 없이 모든 매체로 작업 또는 Derivative Works 사본을 재현하고 배포할 수 있으며, 귀하가 다음 조건을 충족하는 경우 소스 또는 오브젝트 형태로 배포할 수 있습니다.

  1. 귀하는 다른 모든 작업 또는 Derivative Works에게 이 라이센스 사본을 부여해야 합니다.
  2. 귀하는 수정된 파일이 귀하가 파일을 변경했음을 알리는 중요한 알림을 전달하도록 유도해야 합니다.
  3. 귀하는 귀하가 배포하는 Derivative Works의 소스 형태로, 귀하가 배포한 모든 저작권, 상표, 상표, 출처 양식의 출처 통지서, Derivative Works의 일부와 관련이 없는 통지를 제외해야 합니다.
  4. 작업에 배포의 일부로 "NOTICE" 텍스트 파일이 포함된 경우 배포하는 모든 Derivative Works에는 Divative Works의 일부와 관련이 없는 해당 통지를 제외하고 이러한 NOTICE 파일에 포함된 읽을 수 있는 알림 사본이 포함되어야 합니다. 소스 양식 또는 문서 내에서, Derivative Works와 함께 제공되는 경우, 또는 이러한 제3자 통지가 정상적으로 표시되는 경우, Derivative Works에 의해 생성되는 디스플레이 내에 있습니다. NOTICE 파일의 내용은 정보 제공 목적으로만 사용되며 라이센스를 수정하지 않습니다. 이러한 추가 속성 통지는 라이센스 수정으로 해석될 수 없는 경우 귀하가 배포하는 Derivative Works 내에서 자신의 속성 알림을 추가할 수 있습니다.

귀하는 귀하의 수정 사항에 귀하의 저작권 성명서를 추가할 수 있으며, 귀하의 수정 사항을 사용, 재생 또는 배포하기위한 추가 또는 다른 라이센스 조건 및 조건을 제공할 수 있습니다, 또는 전체적으로 이러한 다이어브 작업 전체에 대한 제공, 귀하의 사용, 재생, 생산 및 배포를 다른 방법으로이 라이센스에 명시된 조건을 준수합니다.

5. 기여자를 제출합니다. 귀하가 명시적으로 달리 명시하지 않는 한, 귀하가 동의자에게 귀하가 프로젝트에 포함하기 위해 의도적으로 제출된 모든 기여는 추가 조건이나 조건없이 이 라이센스의 약관을 따라야 합니다. 위 내용에도 불구하고, 본원에서는 귀하가 그러한 기여에 관한 Licensor와 함께 실행할 수 있는 별도의 라이센스 계약의 조건을 대체하거나 수정하지 않습니다.

6. Trademarks. 이 라이센스는 문서의 출처를 설명하고 NOTICE 파일의 내용을 재현하는 데 필요한 경우를 제외하고 Licensor의 거래 이름, 상표, 서비스 마크 또는 제품 이름을 사용할 수 있는 권한을 부여하지 않습니다.

7. 보장에 대한 면책 조항. 관련 법령에서 요구되거나 서면으로 동의하지 않는 한, Licensor는 "AS IS" BA Cryostat, CONDITIONS 또는 CONDITIONS OF ANY KIND에 대해 작업(및 해당 기여자 제공)에 대해 작업(및 해당 기여자 제공)을 제공하며, TITLE의 어떠한 보증이나 조건을 포함하여 명시적 또는 임미한 KIND를 제공합니다. NON-INFRINGEMENT, MERCHANTABILITY 또는 FITNESS FOR A CryostatICULAR PURPOSE. 귀하는 작업 사용 또는 재배포의 적합성을 결정하고 이 라이센스에 따른 귀하의 권한 행사와 관련된 위험을 감수해야 합니다.

8. 가능성에 대한 제한입니다. 어떠한 경우에도, 어떠한 경우에도, 불법적인 이론, 계약, 계약, 관련 법령에 의해 요구되지 않는 한 (예를 들어, 고의적으로 과장된 행위) 또는 서면으로 동의하지 않는 한, 모든 기여자는 직접적, 간접적, 특수적, 부수적, 또는 결과 등을 포함하여 귀하에 대한배상을 귀하에게 책임이 있습니다. 이 라이센스의 결과 또는 사용 불가로 인해 발생하는 문자의 손상 (종료 손실에 대한 손상을 포함하되 이에 국한되지 않음) 작업 중지 페이지, 컴퓨터 오류 또는 오작동 또는 기타 모든 상업적 손상 또는 손실, 이러한 기여자가 이러한 손상의 가능성을 권고한 경우에도.

9. 보증 또는 추가 책임을 수락할 수 있습니다. 해당 작업 또는 Derivative Works를 재분배하는 동안, 귀하는 이 라이센스와 일치하는 작업, 지원, 보증, 이행, 또는 기타 관련 의무 및/또는 권리에 대한 요금을 제안하고 부과할 수 있습니다. 그러나, 귀하는 이러한 의무를 수락할 때, 귀하는 다른 기여자를 대신하여 그리고 귀하의 전적인 책임을 대신할 수 없으며, 귀하가 다른 기여자를 대신하여, 귀하가 그러한 보증 또는 추가적 책임을 수락하는 이유로 이러한 기여자에 대해 배상 또는 청구된 청구에 대해 각 기여자에 대해 무해하거나 무해한 경우에만 수행할 수 있습니다.

이용 약관 종료

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동