15단계: 조건부 논리를 사용하도록 쿡북 업데이트 - AWS OpsWorks

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

15단계: 조건부 논리를 사용하도록 쿡북 업데이트

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 고객과 기존 고객 모두 사용할 수 없게 되었습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

이제 특정 조건이 충족되는 경우에만 코드를 실행하는 기법인 조건부 논리를 사용하는 레시피를 추가하여 쿡북을 업데이트합니다. 자세한 정보는 if 문case 문 단원을 참조하세요.

이 레시피는 데이터 백 콘텐츠에 기반하여 다음 두 가지를 수행합니다. 인스턴스가 실행되는 운영 체제를 식별하는 메시지를 로그에 표시하고, 운영 체제가 Linux인 경우에만 주어진 Linux 배포에 맞는 패키지 관리자를 사용하여 패키지를 설치합니다. tree로 명명되는 이 패키지는 디렉터리 목록을 시각화하기 위한 간단한 앱입니다.

인스턴스에서 쿡북을 업데이트하고 새 레시피를 실행하려면
  1. 로컬 워크스테이션에서 opsworks_cookbook_demo directoryrecipes 하위 디렉터리에 다음 코드가 포함된 conditional_logic.rb 파일을 생성합니다.

    instance = search("aws_opsworks_instance").first os = instance["os"] if os == "Red Hat Enterprise Linux 7" Chef::Log.info("********** Operating system is Red Hat Enterprise Linux. **********") elsif os == "Ubuntu 14.04 LTS" || os == "Ubuntu 16.04 LTS" || os == "Ubuntu 18.04 LTS" Chef::Log.info("********** Operating system is Ubuntu. **********") elsif os == "Microsoft Windows Server 2012 R2 Base" Chef::Log.info("********** Operating system is Windows. **********") elsif os == "Amazon Linux 2015.03" || os == "Amazon Linux 2015.09" || os == "Amazon Linux 2016.03" || os == "Amazon Linux 2016.09" || os == "Amazon Linux 2017.03" || os == "Amazon Linux 2017.09" || os == "Amazon Linux 2018.03" || os == "Amazon Linux 2" Chef::Log.info("********** Operating system is Amazon Linux. **********") elsif os == "CentOS Linux 7" Chef::Log.info("********** Operating system is CentOS 7. **********") else Chef::Log.info("********** Cannot determine operating system. **********") end case os when "Ubuntu 14.04 LTS", "Ubuntu 16.04 LTS", "Ubuntu 18.04 LTS" apt_package "Install a package with apt-get" do package_name "tree" end when "Amazon Linux 2015.03", "Amazon Linux 2015.09", "Amazon Linux 2016.03", "Amazon Linux 2016.09", "Amazon Linux 2017.03", "Amazon Linux 2017.09", "Amazon Linux 2018.03", "Amazon Linux 2", "Red Hat Enterprise Linux 7", "CentOS Linux 7" yum_package "Install a package with yum" do package_name "tree" end else Chef::Log.info("********** Cannot determine operating system type, or operating system is not Linux. Package not installed. **********") end
  2. 터미널 또는 명령 프롬프트에서 tar 명령을 사용하여 opsworks_cookbook_demo 디렉터리와 업데이트된 내용 포함된 opsworks_cookbook_demo.tar.gz 파일의 새 버전을 만듭니다.

  3. 업데이트된 opsworks_cookbook_demo.tar.gz 파일을 S3 버킷에 업로드합니다.

  4. 5단계: 인스턴스에서 쿡북을 업데이트하고 레시피 실행 단원의 절차에 따라 인스턴스에서 쿡북을 업데이트하고 레시피를 실행합니다. "레시피 실행" 절차에서 실행할 레시피opsworks_cookbook_demo::conditional_logic를 입력합니다.

레시피를 테스트하려면
  1. 이전 절차의 [execute_recipes 명령 실행 중] 페이지가 표시된 상태에서 [cookbooks-demo1]의 [로그]에 대해 [표시]를 선택합니다. [execute_recipes] 로그 페이지가 표시됩니다.

  2. 로그를 아래로 스크롤하면서 다음과 유사한 항목을 찾습니다.

    [2015-11-16T19:59:05+00:00] INFO: ********** Operating system is Amazon Linux. **********

    인스턴스의 운영 체제가 Amazon Linux 2016.09이므로, (레시피 코드의 가능한 5개 항목 중) 이전 항목만 로그에 표시됩니다.

  3. 운영 체제가 Linux이므로 레시피가 트리 패키지를 설치합니다. 디렉터리의 내용을 시각화해 살펴보려면 원하는 디렉터리의 명령 프롬프트에서 또는 원하는 디렉터리의 경로를 사용하여 tree를 입력합니다(예: tree /var/chef/runs).

다음 단계에서는 Chef 커뮤니티가 제공하는 외부 쿡북의 기능을 사용하도록 쿡북을 업데이트합니다.