팀 프로젝트- 2회차

박형준·2024년 6월 14일

VPC를 terraform으로 생성 후에 subnet을 이용하여 인스턴스 생성 및 httpd를 설치하여 웹 사이트 호스팅

VPC를 생성 후에 인스턴스 생성

  • VEC-PRD-VPC-NGINX-PUB-2A (10.250.1.0/24) - 251
    VEC-PRD-VPC-NGINX-PUB-SG-2A (80,443)
    ec2 name: VEC-PRD-VPC-NGINX-PUB-2A : 10.250.1.212
  1. S3에서 HTML 파일 형식의 객체 가져오기
  • ftp를 이용해서 local PC의 create-survey.html을 가져오기
  1. EC2 인스턴스에서 웹 서버 설정
  • Apache 웹 서버 설치:
    접속 후 Apache 웹 서버를 설치합니다.

    • sudo yum update -y
      sudo yum install -y httpd
  • 웹 서버 시작 및 부팅 시 자동 시작 설정:

    • sudo systemctl start httpd
      sudo systemctl enable httpd
  1. S3에서 다운로드한 HTML 파일을 EC2 인스턴스에 업로드
  • EC2 인스턴스에서 웹 서버의 루트 디렉토리로 파일 이동:

    • sudo mv /home/ec2-user/your-html-file.html /var/www/html/index.html
  1. 웹사이트 접속 확인


Amazon Linux 2023 AMI 를 통해 ansible을 실행

  • Amazon Linux 2023 인스턴스 시작:

    • AWS Management Console에서 EC2 인스턴스를 시작하고, Amazon Linux 2023 AMI를 선택합니다.
  • 시스템 업데이트:

    • 인스턴스에 SSH로 접속한 후, 시스템 패키지를 업데이트합니다.

    • sudo dnf update -y

  • Ansible 설치:

    • Amazon Linux 2023은 dnf 패키지 관리자를 사용합니다. EPEL(EPEL은 Extra Packages for Enterprise Linux의 약자) 리포지터리를 사용하여 Ansible을 설치할 수 있습니다.

    • sudo dnf install epel-release -y
      sudo dnf install ansible -y

  • Ansible 버전 확인:

    • 설치가 완료되면 Ansible 버전을 확인하여 설치가 성공적으로 이루어졌는지 확인합니다.

    • ansible --version


  1. AWS CLI 설치 및 자격 증명 설정
  • AWS CLI는 AWS 서비스와 상호작용하는 명령줄 도구입니다. AWS 자격 증명을 설정하려면 AWS CLI를 먼저 설치해야 합니다.

  • AWS CLI 설치:

  • aws 버전 확인

    • aws --version

AWS 자격 증명 설정:

  • AWS CLI가 설치된 후, 다음 명령을 사용하여 AWS 자격 증명을 설정합니다.

    • aws configure
    • 엑세스 키: AKIA*****
      비밀 키: 5QN+Gvsn********
  1. Python 및 pip 설치
  • Ansible은 Python 기반 도구이므로 Python 및 패키지 관리 도구인 pip가 필요합니다.

    • sudo dnf install python3-pip -y
  1. 필요한 Ansible 모듈 설치
  • Ansible을 사용하여 AWS를 관리하려면 boto3와 botocore, 그리고 AWS CLI와 같은 추가 패키지가 필요합니다.

    • pip3 install boto3 botocore awscli

이후에 playbook을 통해 리소스 생성

---
- name: Create an EC2 instance
  hosts: localhost
  gather_facts: False
  collections:
    - amazon.aws
  tasks:
    - name: Create EC2 instance
      amazon.aws.ec2_instance:
        key_name: home
        instance_type: t2.micro
        image_id: ami-02428dc32a3b6596f # 올바른 AMI ID로 변경
        wait: yes
        region: ap-northeast-2
        count: 1
      register: ec2

    - debug:
        var: ec2

명령어를 통해 실행

ansible-playbook create_ec2.yml

Ansible 버전 경고 해결: ansible-galaxy collection install amazon.aws --upgrade

ec2가 생성되는 것을 테스트 해보았으며, lambda함수를 zip파일로 압축하여 s3로 이동시키는 것을 수행?

보안을 위해 엑세스 키 갱신하며 하기


S3의 bucket을 생성하면서 bucket안에 객체를 ImportJson.zip로 업로드

  1. Python 가상 환경 생성 및 활성화
  • Python 가상 환경을 사용하여 Ansible을 설치하고 관리하는 것이 좋습니다.

    • # 가상 환경 생성
      python3 -m venv ansible-env

    • # 가상 환경 활성화
      source ansible-env/bin/activate

  1. Ansible 설치
  • 가상 환경이 활성화된 상태에서 Ansible을 설치합니다.

    • pip install ansible
  1. AWS Collection 설치
  • Ansible의 AWS Collection을 설치합니다

    • ansible-galaxy collection install amazon.aws
  1. 필요한 라이브러리 설치
  • 가상 환경이 활성화된 상태에서 botocore와 boto3 라이브러리를 설치합니다.

    • source ansible-env/bin/activate
      pip install boto3 botocore
  1. Ansible Python 인터프리터 설정
  • Ansible이 올바른 Python 인터프리터를 사용하도록 플레이북에 ansible_python_interpreter를 추가합니다. 이렇게 하면 Ansible이 가상 환경의 Python을 사용하게 됩니다.

  • 플레이북을 수정하여 다음과 같이 ansible_python_interpreter를 추가합니다:

---
- name: Create S3 bucket and upload file
  hosts: localhost
  gather_facts: False
  collections:
    - amazon.aws
  vars:
    s3_bucket_name: "my-unique-bucket-phj-12345"  # 원하는 버킷 이름으로 변경
    source_file_path: "/home/guru/ImportJson.zip"
    s3_object_name: "ImportJson.zip"
  tasks:
    - name: Create S3 bucket
      amazon.aws.s3_bucket:
        name: "{{ s3_bucket_name }}"
        state: present
        region: ap-northeast-2  # 원하는 AWS 리전으로 변경

    - name: Upload file to S3 bucket
      amazon.aws.s3_object:
        bucket: "{{ s3_bucket_name }}"
        object: "{{ s3_object_name }}"
        src: "{{ source_file_path }}"
        mode: put
  1. 가상 환경 내에서 Ansible 실행
  • 가상 환경이 활성화된 상태에서 Ansible 플레이북을 실행합니다.

    • source ansible-env/bin/activate
      ansible-playbook create_s3_bucket_and_upload.yml


기록용 스크린 샷

aws 계정 인증

s3 버킷에 lambda 함수를 업로드하는 play book 작성

ansible 실행

업로드 확인

0개의 댓글