[Docker·Ansible] 15분 만에 웹서버 구축

Docker 및 Ansible을 사용하여 하나의 명령으로 가상 환경에 웹 서버를 구축하려고합니다.
15분 이내에 구축할 수 있는 것을 목표로 합시다.

전제 조건은 다음과 같습니다.
  • 호스트 환경은 MacOS
  • VirtualBox, Vagrant 및 Ansible이 호스트 환경에 설치되어 있습니다

  • 그럼 빨리 갑니다.

    디렉토리 파일 작성 (2 ~ 3 분)



    다음과 같은 디렉토리 구성을 작성하십시오.
    .
    ├── Vagrantfile
    ├── ansible.cfg
    ├── hosts
    ├── playbook.yml
    └── roles
        ├── docker
        │   └── tasks
        │       └── main.yml
        └── docker-compose
            ├── tasks
            │   └── main.yml
            └── template
                └── docker-compose.yml
    

    파일 복사(3~4분)



    위의 구조로 만들 수 있으면 각 파일의 내용을 복사하십시오.
  • Vagrantfile
  • Vagrant.configure(2) do |config|
     config.vm.define "WebServerByDocker" do |node|
        node.vm.box = "bento/ubuntu-18.04"
        node.vm.hostname = "WebServerByDocker"
        node.vm.network :private_network, ip:"192.168.5.5"
        node.vm.provider "virtualbox" do |vb|
          vb.customize ["modifyvm", :id, "--memory", "1024"]
        end
        node.vm.provider "virtualbox" do |vb|
          vb.gui = false
        end
      end
    end
    
  • ansible.cfg
  • [ssh_connection]
    ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
    
  • hosts
  • [WebServer]
    192.168.5.5
    
  • playbook.yml
  • ---
    - hosts: WebServer
      become: no
      roles:
        - {role: 'docker', tags: 'docker'}
        - {role: 'docker-compose', tags: 'docker-compose'}
    
  • roles/docker/tasks/main.yml
  • - name: apt-get update
      become: yes
      apt:
        update_cache: yes
    
    - name: install required package
      become: yes
      apt:
        name: "{{item}}"
      with_items:
        - apt-transport-https
        - ca-certificates
        - curl
        - software-properties-common
    
    - name: install GPO key
      become: yes
      shell: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
    
    - name: add repository
      become: yes
      shell: add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
    - name: apt-get update
      become: yes
      apt:
        update_cache: yes
    
    - name: install docker-ce
      become: yes
      apt:
        name: docker-ce
    
  • roles/docker-compose/tasks/main.yml
  • - name: install docker-compose
      become: yes
      shell: curl -L "https://github.com/docker/compose/releases/download/1.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    - name: change right of docker-compose
      become: yes
      shell: chmod +x /usr/local/bin/docker-compose
    
    - name: copy docker-compose.yml
      become: yes
      copy:
        src: template/docker-compose.yml
        dest: /home/vagrant/
        mode: 644
    
    - name: container up
      become: yes
      shell: docker-compose up -d
    
  • roles/docker-compose/template/docker-compose.yml
  • version: "3"
    services:
      WebServer:
        image: nginx:alpine
        ports:
          - 8888:80
    

    명령 실행(6~7분)



    가상 환경을 시작하고 Ansible을 실행합니다.
    작성한 디렉토리의 루트 디렉토리에서 실행하십시오.
    가상 환경에서 Docker, Docker-compose를 설치하는 데 시간이 오래 걸립니다.
    $ vagrant up
    $ ansible-playbook -i hosts playbook.yml -u vagrant -k
    SSH password: vagrant
    .
    .
    .
    192.168.5.5                : ok=11   changed=10   unreachable=0    failed=0
    

    웹 서버에 액세스



    Chrome 등을 사용하여 웹 서버가 실행 중인지 확인합니다.192.168.5.5:8888를 입력하십시오.



    nginx가 성공적으로 시작되었습니다!

    결론



    어땠습니까?
    지금의 시대 Web 서버 하나 세우는 것도 고생이 없네요.
    Docker, Docker-compose에 대한 자세한 내용은 또 다른 기사에서 다루려고합니다.
    Ansible에 대해서는 간단하게 개요나 한가지의 흐름을 정리하고 있으므로 그쪽을 참조해 보세요.

    좋은 웹페이지 즐겨찾기