주:

Oracle Linux Automation Engine을 사용하여 Oracle Linux 작업 실행

소개

관리자는 Oracle Linux Automation Engine을 통해 일련의 플레이북 및 작업을 통해 코드형 인프라(IaC) 구성 관리 도구를 사용하여 Oracle Linux의 초기 설정을 자동화하고 기타 관리 작업을 실행할 수 있습니다.

목표

이 자습서에서는 다음을 수행하는 방법을 배웁니다.

필요 조건

Oracle Linux Automation Engine 배포

주: 고유 테넌시에서 실행 중인 경우 랩 환경을 배치하기 전에 linux-virt-labs GitHub 프로젝트 README.md을 읽고 필요 조건을 완료하십시오.

  1. Luna Desktop에서 터미널을 엽니다.

  2. linux-virt-labs GitHub 프로젝트를 복제합니다.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. 작업 디렉토리로 변경합니다.

    cd linux-virt-labs/olam
    
  4. 필요한 모음을 설치합니다.

    ansible-galaxy collection install -r requirements.yml
    
  5. Oracle Linux 인스턴스 구성을 업데이트합니다.

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "ol-control-node"
        type: "control"
      2:
        instance_name: "ol-host"
        type: "remote"
    olam_type: olae
    EOF
    
  6. 재고 파일을 생성합니다.

    cat << EOF | tee hosts > /dev/null
    localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6
    EOF
    
  7. lab 환경을 배치합니다.

    ansible-playbook create_instance.yml -i hosts -e "@instances.yml"
    

    무료 실습 환경에서는 Python용 Oracle Cloud Infrastructure SDK에 대한 RPM 패키지를 설치하므로 localhost에 대한 추가 변수 ansible_python_interpreter가 필요합니다. 이 패키지 설치 위치는 사용 중인 Oracle Linux 버전을 기반으로 하는 시스템의 기본 Python 모듈 아래에 있습니다. 인벤토리 변수를 사용하면 localhost 이외의 호스트에서 실행되는 재생에 영향을 주지 않습니다.

    기본 배치 구성은 AMD CPU를 사용합니다. 명령행에서 새 쉐이프 변수 정의를 전달하여 인스턴스의 쉐이프를 변경할 수 있습니다.

    예: -e instance_shape="VM.Standard3.Flex"

    마찬가지로 Oracle Linux 이미지의 기본 버전은 `default_vars.yml 파일에 정의된 os_version 변수를 사용합니다. 명령줄에서 Oracle Linux 주 버전을 전달하여 이 값을 수정할 수 있습니다.

    예: -e os_version="9"

    중요: 플레이북이 성공적으로 실행될 때까지 기다렸다가 일시 중지 작업에 도달합니다. 플레이북의 이 단계에서 Oracle Linux 설치가 완료되고 인스턴스가 준비됩니다. 이전 플레이에서 배포하는 노드의 공용 및 전용 IP 주소를 인쇄합니다.

초기 설정 플레이북 작성

많은 플레이북에서는 키-값 쌍을 포함하는 변수와 변수 파일을 활용하여 코드가 정적으로 유지되는 동안 실제 플레이북 작업을 동적으로 수행할 수 있습니다. 플레이북에는 런타임 동안 재생의 일부가 되는 변수가 포함되며, 여기서 플레이북은 작업을 실행할 때 해당 값을 사용합니다.

Oracle Linux Automation Engine을 사용하면 이러한 변수를 각각 특정 우선순위 순서로 여러 위치에서 정의할 수 있습니다. 플레이북 레벨 변수는 vars 또는 vars_files 지시어를 사용하여 플레이북 내에 정의됩니다. vars 지시어는 변수를 재생의 일부로 지정하고, vars_files 지시어는 변수를 포함하는 외부 파일을 포함합니다. 이 예에서는 플레이북을 실행하기 전에 시스템 구성을 정의하는 대로 개발자가 다른 플레이에서 동적으로 또는 정적으로 이러한 변수를 만들 수 있습니다.

  1. 새 터미널을 열고 SSH를 통해 ol-control-node 시스템에 연결합니다.

    ssh oracle@<ip_address_of_instance>
    
  2. Oracle Linux Automation Engine 명령을 사용할 수 있는지 확인합니다.

    ansible --version
    
  3. 작업 프로젝트 디렉토리를 만듭니다.

    mkdir -p ~/ol-playbook
    
  4. 프로젝트에 대한 변수 디렉토리 및 파일을 생성합니다.

    mkdir ~/ol-playbook/vars
    
    touch ~/ol-playbook/vars/defaults.yml
    
  5. 변수 및 값을 파일에 추가합니다.

       
    cat << EOF | tee ~/ol-playbook/vars/defaults.yml > /dev/null
    ---
    username: oracle
    user_default_password: oracle
    ssh_key_file: id_rsa
    ssh_private_key_file: "{{ lookup('file', lookup('env','HOME') + '/.ssh/' + ssh_key_file + '.pub') }}"
    additional_packages: ['git']
    EOF
       
    

    이 정보는 각 변수 및 사용 방법에 대해 설명합니다.

    • username: 플레이북을 실행할 때 만든 sudo 사용자의 이름입니다. 이 예에서 사용자 이름은 oracle입니다.
    • user_default_password: 생성할 때 oracle 사용자에 대한 기본 비밀번호입니다. sudo 명령을 실행할 때 암호가 필요합니다.
    • ssh_key_file: 사용자의 SSH 키 쌍의 이름을 설정합니다.
    • ssh_private_key_file: 사용자의 SSH 퍼블릭 키를 지정된 경로의 원격 사용자의 authorized_key 파일에 복사합니다. 이 예에서는 lookup 플러그인을 사용하여 로컬 사용자 $HOME/.ssh/ 디렉토리에서 공개 키 id_rsa.pub를 찾습니다.
    • additional_packages: 배열 형식으로 설치할 추가 패키지의 이름을 추가합니다. 배열의 각 패키지는 작은 따옴표로 묶고 쉼표로 구분해야 합니다. container-tools와 같은 appstream 모듈을 설치하는 경우 배열은 ['git',' @container-tools:ol8']와 같이 표시됩니다.
  6. 플레이북 파일을 만듭니다.

       
    cat << EOF | tee ~/ol-playbook/setup.yml > /dev/null
    ---
    - hosts: all
      become: yes
      vars_files:
        - vars/defaults.yml
    
      tasks:
    
      - name: Generate new ssh keypair
        community.crypto.openssh_keypair:
          path: "~/.ssh/{{ ssh_key_file }}"
          size: 2048
          comment: olam ssh keypair
        become: true
        become_user: "{{ username }}"
        delegate_to: localhost
    
      - name: Add a user account with access to sudo
        ansible.builtin.user:
          name: "{{ username }}"
          password: "{{ user_default_password | password_hash('sha512') }}"
          comment: Default Oracle user
          groups: wheel
          append: yes
          update_password: on_create
    
      - name: Set the authorized key for the user using a local public key file
        ansible.posix.authorized_key:
          user: "{{ username }}"
          state: present
          key: "{{ ssh_private_key_file }}"
    
      - name: install additional packages
        ansible.builtin.dnf:
          name: "{{ additional_packages }}"
          state: latest
    EOF
       
    

    플레이북의 특정 작업 및 모듈 이름은 플레이북을 자체 문서화하도록 만드는 것을 목표로 합니다. 이 항목은 재생을 실행하는 위치 및 사용자를 지시합니다.

    • hosts: all: 이 행은 인벤토리에서 작업을 실행할 호스트를 지정합니다.
    • become: yes: 기본적으로 sudo 권한으로 실행되도록 이 섹션 내의 작업을 지시합니다.
    • vars_files" 이 지시어는 이 튜토리얼의 플레이북 구성을 포함하는 변수 파일을 로드합니다.

필요한 모음 설치

ansible-core 패키지에는 호스트 관리를 위한 최소 모듈 세트가 포함되어 있으며, ansible.builtin 모음 내에 구성됩니다. 모음은 대상 작업을 수행하는 플레이북, 역할, 모듈 또는 플러그인을 배포하는 방법입니다. ansible-core에서는 내장 외부에 필요한 모듈 또는 모음을 다운로드하고 설치해야 합니다.

위의 플레이북은 ansible.posix 컬렉션을 사용하므로 이 컬렉션 및 기타 컬렉션을 설치해야 합니다. 이 작업을 수행하는 가장 쉬운 방법은 모든 종속성을 포함하는 요구 사항 파일을 만드는 것입니다.

  1. 요구 사항 파일을 만듭니다.

    cat << 'EOF' | tee ~/ol-playbook/requirements.yml > /dev/null
    ---
    collections:
      - name: ansible.posix
      - name: community.crypto
    EOF
    
  2. 모음을 설치합니다.

    ansible-galaxy collection install -r ~/ol-playbook/requirements.yml
    

    출력은 Galaxy 사이트에서 압축 된 아카이브 파일을 검색 한 다음 .ansible/collections. 아래의 홈 디렉토리에 설치하는 프로세스를 보여줍니다.

    주: 출력에 ERROR: Ansible requires the locale encoding to be UTF-8; Detected None.가 표시되면 ansible에 대한 로케일 설정이 잘못되었음을 나타냅니다. 다음 두 가지 환경 변수를 설정하여 문제를 해결합니다.

    export LC_ALL="en_US.UTF-8"
    export LC_CTYPE="en_US.UTF-8"
    

플레이북 실행

플레이북을 실행하기 전에 관리하려는 원격 Oracle Linux 인스턴스를 가리키는 이 프로젝트에 대한 인벤토리 파일을 생성해야 합니다.

  1. 원격 시스템의 변수에 ol-host의 IP 주소를 지정합니다.

    이 변수를 사용하면 재고 파일 생성을 보다 쉽게 스크립팅할 수 있습니다.

    export REMOTE=<ip_address_of_instance>
    
  2. 프로젝트 디렉토리 내에 새 인벤토리 파일을 생성합니다.

    cat << EOF | tee ~/ol-playbook/inventory > /dev/null
    [production]
    ol-host ansible_host=$REMOTE
    EOF
    
  3. 프로젝트 작업 디렉토리로 변경합니다.

    cd ~/ol-playbook
    
  4. ad hoc ping 명령을 사용하여 연결을 테스트합니다.

    ansible ol-host -i ~/ol-playbook/inventory -m ping -u opc
    
    • -u: ssh 접속에 대한 사용자 이름을 전달합니다. 무료 실습 환경에서는 OCI(Oracle Cloud Infrastructure)의 Oracle Linux 인스턴스에 제공된 기본 사용자인 opc 사용자를 사용합니다. 계속하려면 프롬프트에 yes를 입력하여 ECDSA 키 지문을 승인합니다.

    명령은 표시된 것과 유사한 결과를 사용하여 성공적으로 실행됩니다.

    출력 예:

    ol-host | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": false,
        "ping": "pong"
    }
    
  5. Playbook을 실행합니다.

    ansible-playbook -i inventory setup.yml -u opc
    

    명령이 성공적으로 실행되어 각 재생의 changed 결과가 표시됩니다.

원격 호스트에 접속

플레이북이 성공적으로 실행되면 username 변수에 정의된 대로 사용자를 사용하여 원격 시스템에 연결할 수 있습니다.

  1. SSH를 통해 ol-host 시스템에 연결합니다.

    ssh oracle@$REMOTE
    

    ssh_key_file 변수의 값을 변경한 경우 `-i' 옵션을 ssh로 전달하고 지정된 쌍의 개인 키 파일을 가리켜야 합니다.

    예:

    ssh -i ~/.ssh/<local_ssh_private_key> <username>@<ip_address_of_host>
    
  2. 요청된 패키지의 설치를 확인합니다.

    로그인한 후 플레이북이 git 패키지를 설치했는지 확인할 수 있습니다.

    git --version
    
  3. 원격 호스트에서 접속을 해제합니다.

    exit
    

저장소 추가

Oracle Linux는 미션 크리티컬 애플리케이션을 배포할 수 있는 안전하고 확장 가능하며 안정적인 플랫폼을 제공합니다. 추가 저장소를 추가하면 새 Oracle 제품 또는 타사 응용 프로그램을 설치할 수 있습니다. Oracle Linux는 이러한 추가 저장소의 프로비전을 처리하는 추가 패키지를 제공합니다.

Oracle Linux YUM 서버는 Oracle이 제공하는 다양한 저장소에 대한 세부 정보를 제공합니다.

  1. 기존 플레이북 파일에 이러한 추가 작업을 추가합니다.

    cat << EOF | tee -a setup.yml > /dev/null
      - name: Add the EPEL repository
        ansible.builtin.dnf:
          name: oracle-epel-release-el8
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '8'
    
      - name: Add the EPEL repository
        ansible.builtin.dnf:
          name: oracle-epel-release-el9
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '9'
    
      - name: Install the htop utility package
        ansible.builtin.dnf:
          name: htop
          enablerepo: ol8_developer_EPEL
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '8'
    
      - name: Install the htop utility package
        ansible.builtin.dnf:
          name: htop
          enablerepo: ol9_developer_EPEL
          state: present
        when:
          - ansible_distribution == 'OracleLinux'
          - ansible_facts['distribution_major_version'] == '9'
    EOF
    

    이 플레이북은 정의된 플레이 내에서 여러 작업을 추가합니다. 첫번째 집합은 Oracle Linux 인스턴스의 기존 소프트웨어 저장소에 EPEL 저장소를 추가합니다. 한편 두번째 재생 세트는 동일한 대상 호스트 인스턴스에 htop 패키지를 설치합니다.

    주목할 만한 매개변수:

    • state: present: 참조된 패키지가 시스템에 이미 있거나 dnf를 사용하여 설치되었는지 확인합니다.
    • enablerepo: 현재 작업 기간 동안에만 특정 저장소(사용 안함으로 설정된 경우)를 사용으로 설정합니다.
  2. 추가 작업을 수행하려면 플레이북을 다시 실행합니다.

    ansible-playbook -i inventory setup.yml -u opc
    

    플레이북이 성공적으로 완료되어 실행 중에 몇 가지 경고가 표시됩니다. 이러한 경고는 현재 플레이북에 영향을 주지 않으므로 지금은 무시할 수 있습니다. 플레이북은 ok 또는 changed 상태로 올바르게 완료된 작업을 보고합니다. changed 상태는 패키지가 존재하는지 확인하는 대신 최신 버전의 패키지를 요청할 때 htop 패키지를 추가하거나 dnf 캐시를 업데이트하여 플레이북이 호스트를 수정했음을 나타냅니다. ok는 작업 완료를 나타내며 작업이 필요하지 않습니다.

  3. 저장소 및 패키지 설치를 확인합니다.

    ssh oracle@$REMOTE which htop
    
  4. htop 명령을 실행합니다.

    ssh oracle@$REMOTE -t htop
    

    htop에는 대화식 셸이 필요하므로 SSH 명령의 -t 옵션은 TTY 할당을 강제로 수행합니다.

  5. q를 입력하여 htop 프로그램을 종료합니다.

파일 및 디렉토리 추가, 업데이트 및 삭제

  1. 다음을 기존 플레이북 파일에 추가하여 디렉토리와 파일을 만듭니다.

       
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Create an example directory (if it does not already exist)
        ansible.builtin.file:
          path: "/home/{{ username }}/example"
          state: directory
          mode: '0755'
        become_user: "{{ username }}"
    
      - name: Create an empty file
        ansible.builtin.file:
          path: "/home/{{ username }}/example/test.txt"
          state: touch
          # mode: u=rw,g=r,o=r
        become_user: "{{ username }}"
    EOF
       
    

    이 플레이북은 정의된 플레이 내에서 두 가지 작업을 추가합니다. 첫번째 디렉토리는 원격 사용자의 홈 디렉토리에 example이라는 새 디렉토리를 만들고, 두번째 디렉토리는 새로 만든 example 디렉토리에 test.txt이라는 빈 파일을 만듭니다.

    주목할 만한 추가 매개변수:

    • state:: ansible.builtin.file 모듈은 absent, directory, file, hard, linktouch 매개변수를 지원합니다. 이러한 작업은 디렉토리 경로가 없는 경우 만드는 directory와 비어 있는 파일이 없는 경우 만드는 touch를 사용합니다.
    • mode: 생성된 객체에 대한 파일 시스템 권한을 설정합니다. 명령줄을 사용할 때는 8진수 0644 또는 심볼릭 u=rw,g=r,o=r 모드를 사용할 수 있습니다. mode: 매개변수를 생략하면 시스템 기본 모드가 적용됩니다.
    • become_user: "": Oracle Linux Automation Engine 권한 에스컬레이션 기능을 사용하여 작업을 실행합니다. 이전 자습서에서는 root 사용자로 작업을 실행하는 become: 권한 에스컬레이션 기능을 도입했습니다. 이 예제에서는 유사한 기능을 사용하여 작업을 다른 유저로 실행하는 방법을 보여줍니다. vars/defaults.yml 파일에서 oracle 사용자로 미리 정의한 변수 ""로 사용자를 설정합니다. 따라서 이 작업은 oracle 사용자로 실행되며 해당 사용자의 기본값을 상속합니다.
  2. 추가 작업을 수행하려면 플레이북을 실행합니다.

    ansible-playbook -i inventory setup.yml -u opc
    
  3. 새 디렉토리와 파일이 원격 호스트에 있는지 확인합니다.

    ssh oracle@$REMOTE ls -al example
    

    출력은 새 디렉토리와 빈 파일의 생성을 확인합니다. test.txt 파일은 0바이트를 가지며 oracle 사용자가 소유합니다.

  4. 여러 파일 추가.

    시스템 설정 중에 디렉토리 내에 여러 파일을 만들어야 할 수 있습니다. 개별 작업을 사용하는 대신 디렉토리에 단일 원자 작업으로 여러 파일을 만들 수 있습니다.

       
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Add multiple files
        ansible.builtin.file:
          path: "/home/{{ username }}/example/{{ item }}"
          state: touch
        with_items:
        - file01.txt
        - file02.txt
        - file03.txt
        - file04.txt
        become_user: "{{ username }}"
    EOF
       
    

    이 작업은 루프를 사용하여 목록에서 여러 개의 빈 파일을 만듭니다.

    • path:: 파일을 쓸 원격 시스템의 위치를 정의합니다. Oracle Linux Automation Engine은 런타임 중에 `` 변수를 with_items 매개변수의 각 item으로 바꿉니다.
    • with_items:: 이 매개변수는 이 태스크 실행 중 루프오버할 items 목록을 나타냅니다. 이 예에서는 네 개의 파일 이름만 사용하지만 필요에 따라 목록을 만들 수 있습니다.
  5. 추가 작업을 수행하려면 플레이북을 실행합니다.

    ansible-playbook -i inventory setup.yml -u opc
    
  6. 새 디렉토리와 파일이 원격 호스트에 있는지 확인합니다.

    ssh oracle@$REMOTE ls -al example
    

    출력에는 원본 test.txt 파일과 새 파일이 표시됩니다.

  7. 파일에 단일 콘텐츠 행을 추가합니다.

       
    cat << 'EOF' | tee -a setup.yml > /dev/null     
    
      - name: Insert some text into the test.txt file
        ansible.builtin.lineinfile:
          path: "/home/{{ username }}/example/test.txt"
          line: This is a test
          create: True
          owner: "{{ username }}"
          group: "{{ username }}"
          mode: '0644'
    
      - name: Add an extra line after the line just inserted
        ansible.builtin.lineinfile:
          path: "/home/{{ username }}/example/test.txt"
          regexp: '^a test'
          insertafter: 'This is a test'
          line: This is an additional test.
          create: True
          owner: "{{ username }}"
          group: "{{ username }}"
          mode: '0644'
    
      - name: Get the contents of the test.txt file
        ansible.builtin.command: cat ~/example/test.txt
        register: command_output
        become_user: "{{ username }}"
    
      - name: Print the results of the cat command
        ansible.builtin.debug:
          msg: "{{ command_output }}"
    
      - name: Print only the lines added to the text file
        ansible.builtin.debug:
          msg: "{{ command_output.stdout_lines }}"
    EOF
       
    
    • 처음 두 작업은 ansible.builtin.lineinfile를 사용하여 파일에서 단일 행을 추가하고 업데이트합니다.

    • 나머지 작업에는 변경 사항을 확인하는 메소드가 표시됩니다. 플레이북은 먼저 ansible.builtin.command를 사용하여 업데이트된 파일의 내용을 stdout으로 출력하고 이를 메모리에 register 변수에 저장합니다. 그런 다음 ansible.builtin.debug 모듈을 사용하여 재생 설명서 출력의 일부로 해당 콘텐츠를 화면에 인쇄합니다. 두번째 디버그 작업은 출력을 이전 작업에서 가져온 JSON 출력의 특정 부분으로 제한하는 방법을 보여줍니다.

  8. 추가 작업을 수행하려면 플레이북을 실행합니다.

    ansible-playbook -i inventory setup.yml -u opc
    

    플레이북의 마지막 작업은 debug 모듈을 사용하여 파일의 내용을 인쇄합니다.

  9. 파일에 여러 줄의 콘텐츠를 추가합니다.

       
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Add two lines into test.txt
        ansible.builtin.blockinfile:
          path: "/home/{{ username }}/example/test.txt"
          insertafter: 'This is some updated text that was added later.'
          block: |
            "Welcome to {{ ansible_hostname }}"
            "Last updated on {{ ansible_date_time.iso8601 }}"
    
      - name: Create a new file and insert content into it
        ansible.builtin.copy:
          content: |
            === The text below was added by Oracle Linux Automation Engine ==========
    
            Hello from the ansible.builtin.copy module.
            This task is an example of inserting multiple lines into a text file.
            You can insert more lines if you want.
    
            === The text above was added by Oracle Linux Automation Engine ===========
          dest: "/home/{{ username }}/example/testing.txt"
          mode: '0644'
        become_user: "{{ username }}"
    EOF
       
    
  10. 추가 작업을 수행하려면 플레이북을 실행합니다.

    ansible-playbook -i inventory setup.yml -u opc
    
  11. 파일에 두 개의 새 행이 있는지 확인합니다.

    ssh oracle@$REMOTE cat example/test.txt
    

    출력에는 추가된 내용이 표시되며 런타임 중 플레이북에서 수행한 자동 팩트 수집을 기반으로 작업의 변수 값이 원격 호스트에 대해 해석됩니다.

  12. 새 파일 생성 및 콘텐츠 추가를 확인합니다.

    ssh oracle@$REMOTE cat example/testing.txt
    
  13. 파일 및 디렉토리를 삭제합니다.

    Oracle Linux Automation Engine은 파일 및 디렉토리 생성 및 텍스트 추가 외에도 이러한 항목을 삭제할 수 있습니다. 이 플레이북이 만드는 디렉토리와 모든 파일을 제거하여 시스템을 시작할 때와 동일한 상태로 둡니다. 이러한 작업은 먼저 absent로 설정된 state: 매개변수를 사용하여 파일 목록과 디렉토리를 제거합니다. 두번째 작업은 한 단계에서 파일과 디렉토리를 제거하는 작업을 처리합니다. 그럼에도 불구하고 Oracle Linux Automation Engine 기능에 대한 추가 데모를 위한 첫 번째 작업이 포함되어 있습니다.

        
    cat << EOF | tee -a setup.yml > /dev/null     
    
      - name: Delete multiple files
        ansible.builtin.file:
          path: '{{ item }}'
          state: absent
        with_items:
          - "/home/{{ username }}/example/test.txt"
          - "/home/{{ username }}/example/file01.txt"
          - "/home/{{ username }}/example/file02.txt"
          - "/home/{{ username }}/example/file03.txt"
          - "/home/{{ username }}/example/file04.txt"
          - "/home/{{ username }}/example/testing.txt"
    
      - name: Recursively remove directory
        ansible.builtin.file:
          path: "/home/{{ username }}/example"
          state: absent
    EOF
        
    

    표시된 두번째 작업을 사용하여 디렉토리 및 내용을 반복적으로 삭제할 수 있습니다. 파일을 개별적으로 삭제하는 첫 번째 작업은 특정 파일만 삭제하려는 경우에만 사용할 수 있습니다. 파일과 파일 및 디렉토리를 모두 삭제하려는 경우 두번째 작업이 더 효율적입니다.

  14. 추가 작업을 수행하려면 플레이북을 실행합니다.

    ansible-playbook -i inventory setup.yml -u opc
    
  15. 지정된 디렉토리의 제거를 확인합니다.

    ssh oracle@$REMOTE ls
    

    출력이 부족하면 지정된 디렉토리와 이 자습서 중 생성된 파일이 더 이상 존재하지 않음을 확인할 수 있습니다.

다음 단계

이렇게 멀리까지 해주신 것을 축하드립니다. 이 사용지침서에서는 Oracle Linux Automation Engine을 통해 패키지 설치, 파일 및 디렉토리 생성, 업데이트 및 삭제, Oracle Linux에 사용자 계정 추가 등 Oracle Linux에서 일상적인 작업을 자동화할 수 있는 여러 가지 방법을 소개했습니다. 또한 Playbook을 실행하는 동안 Oracle Linux Automation Engine의 ansible.builtin.debug 모듈을 사용하여 터미널에 정보를 표시하는 방법을 시연했습니다. 이러한 기술로, 당신은 앞으로 벤처하고 플레이 북을 작성하는 머리 시작이있다.

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.