Ansible 프로비저닝 : 더 스마트하고 간편한 프로비저닝 방법



이 Ansible 프로비저닝 블로그는 가장 유용한 Ansible 기능 중 하나를 지적합니다. LAMP 스택을 설정하고 Ubuntu에서 wensite를 호스팅하는 방법을 시연합니다.

애플리케이션의 운영 라이프 사이클을 자동화하는 첫 번째 단계는 인프라 프로비저닝을 자동화하는 것입니다. 프로비저닝은 실제로 사용하기 전에 구성을 설정하고 메모리, 디스크 공간 등을 할당하는 성가신 프로세스입니다. Ansible Provisioning이이를 더 간단하고 빠르게 만드는 방법을 살펴 보겠습니다.

대부분의 대규모 배포에는 여러 시스템에서 동일한 환경 설정이 필요합니다.그래서 어떻게하나요? 수백 대의 시스템에서 동일한 명령 집합을 수동으로 실행 하시겠습니까 ?? 아니 .. 너무 오래된 학교 네요. 이것은 인간이 아니라 기계가 잘하는 것입니다. 이 길고 지루한 프로세스를 하나의 Ansible 플레이 북 만 실행하여 수행 할 수 있다고 말하면 어떻게됩니까?이것이이 블로그 인 Ansible Provisioning에서 이야기 할 내용입니다.





다루는 주제는 다음과 같습니다.

DevOps를 마스터하려면 ' 코스를 선택해야합니다.



Ansible은 무엇입니까?

DevOps는 자동화가 매우 우선시되는 문화입니다. 배포 및 테스트 프로세스를 자동화하기위한 도구가있을 때 구성 관리 및 프로비저닝을위한 도구가없는 이유는 무엇입니까? 더 똑똑해지는 방법은 백만 가지가 있으며 Ansible을 사용하는 것도 그중 하나입니다. 가장 널리 사용되는 도구 중 하나입니다.

Ansible은 초보자도 이해할 수있는 YAML 기반 플레이 북을 사용합니다. 에이전트없는 아키텍처를 사용하여 클라이언트 컴퓨터에 설치할 타사 도구를 포함하지 않고 대신 SSH 기반 연결을 사용하는 클라이언트와 통신합니다. Ansible은 자동화 도구이므로 무엇을 자동화 할 수 있는지 알아 보겠습니다.

최고의 자바 IDE는 무엇입니까

Ansible은 무엇을 자동화 할 수 있습니까?

개발주기의 단계에 이름을 지정하면 Ansible이 구성 관리, 프로비저닝, 오케스트레이션, 지속적 배포, 보안 또는 애플리케이션 배포와 같은 단계를 지원합니다. Ansible은 개발주기 워크 플로를 에이전트가없는 단일 플랫폼으로 통합합니다.



  1. 프로비저닝 : 애플리케이션 / 소프트웨어가 살기에 적합한 환경을 만드는 것이 필요합니다. Ansible은 애플리케이션 존재를 위해 생성 된 환경을 자동화하는 방법을 제공합니다.
  2. 구성 관리: 서비스 시작 / 중지, 시스템, 장치 또는 응용 프로그램의 구성 변경 등과 같은 다양한 구성 작업을 수행합니다.
  3. 응용 프로그램 배포 : Ansible로 배포 정의를 자동화하고 다음을 사용하여 배포를 관리합니다. Ansible 타워 . 이를 통해 프로덕션에서 배포까지 전체 애플리케이션주기를 효율적이고 관리 할 수 ​​있습니다.
  4. 지속적인 제공 : 지속적 통합 / 지속적 배포 파이프 라인을 생성하고 관리하는 것은 번거로울 수 있습니다. Ansible이 개입하여 개발자의 삶을 더 편하게 만듭니다.
  5. 보안 및 규정 준수 : 프로젝트 작업은 항상 경계를 설정하고 회사의 보안 정책과 통합됩니다. 보안 정책을 배포와 자동으로 통합하면 정책을보다 쉽게 ​​준수 할 수 있습니다.
  6. 관현악법: 전체 프로젝트는 구성이 다른 여러 인스턴스의 모음입니다. Ansible은 이러한 다양한 인스턴스를 전체적으로 병합하고 관리합니다.

Ansible 프로비저닝의 필요성

앞서 언급했듯이 첫 번째 단계는애플리케이션의 운영 수명주기 자동화환경, 즉 프로비저닝을 준비하는 것입니다. 대규모 배포에는 똑같은 구성을 가진 여러 호스트가 필요합니다. 하나의 호스트를 프로비저닝 한 후 수동으로 수행 할 경우 다음 10 개의 호스트가 정확히 동일한 구성을 갖게 될 가능성은 얼마나됩니까? 또한 동일한 반복 작업을 수행하는 데 얼마나 많은 시간을 할애합니까? 이것이 Ansible이 우리의 서비스에 온 곳입니다. 하나의 플레이 북을 실행하여 수백 개의 호스트를 프로비저닝 할 수 있습니다. 마법? ㅋ! 아니요, 자동화의 진화 일뿐입니다.

데모 : LAMP 스택 생성 및 웹 페이지 배포

30 개의 시스템에 웹 사이트를 배포하려고한다고 가정하면 모든 웹 사이트 배포에는 기본 OS, 웹 서버, 데이터베이스 및 PHP가 필요합니다. ansible 플레이 북을 사용하여 30 개 시스템 모두에 이러한 필수 구성 요소를 한 번에 설치합니다.

이 Ansible 프로비저닝 데모에서는 Ansible을 사용하여 웹 사이트 호스팅 환경을 프로비저닝하는 방법을 보여 드리겠습니다. LAMP (Linux, Apache, MySQL 및 PHP) 스택을 설치 한 다음 웹 사이트를 배포합니다.

이 데모에서는 Ubuntu 버전이 17.04 인 Linux VirtualBox를 사용했습니다. 두 개의 가상 머신을 사용했는데 하나는 Ansible이 설치된 서버로, 다른 하나는 원격 호스트로 작동합니다. 서버에서 Ansible을 설정하는 것부터 시작하겠습니다.

폴더에 저장된 간단한 정적 웹 페이지를 만들었습니다. 인덱스 index.html 및 style.css라는 두 개의 파일이 있습니다.

index.html :

  HTML 및 CSS를 사용하는 웹 사이트                지금 채택        

style.css

* { 여백 : 0 패딩 : 0 } 머리글 { 배경 이미지 : linear-gradient (rgba (0,0,0,0.5), rgba (0,0,0,0.5)), url ( 'puppie.jpg') 높이 : 100vh 배경 크기 : 표지 배경 위치 : 중앙 } .nav-menu { 부동 : 오른쪽 목록 스타일 : 없음 margin-top : 30px } .nav-menu li { 디스플레이 : 인라인 블록 } .nav-menu li a { 색상 : 청록색 텍스트 장식 : 없음 패딩 : 5px 20px font-family : 'Verdana', 'sans-serif' 글꼴 크기 : 20px } .homebtn a { 테두리 : 1px 단색 회색 background-color : white } .nav-menu li a : hover { 테두리 : 1px 단색 회색 배경색 : 흰색 } .tagline { 위치 : 절대 너비 : 1200px 여백-왼쪽 : 0 여백-상단 : 0 } h1 { 색상 : 흰색 글꼴 크기 : 50px font-family : 'Verdana', 'sans-serif' 텍스트 정렬 : 가운데 margin-top : 275px } .adopt { margin-top : 30px 여백-왼쪽 : 540px } .bttn { 테두리 : 1px 단색 흰색 패딩 : 10px 30px 색상 : 노란색 font-family : 'Verdana', 'sans-serif' 글꼴 크기 : 22px 텍스트 장식 : 없음 } .adopt a : hover { 배경색 : 벌리 우드 }

1 단계: 다음 명령을 실행하여 리포지토리를 업데이트하고 필요한 리포지토리를 추가하고 Ansible 설치를 위해 머신에서 PPA를 구성합니다.

$ sudo apt-get 업데이트 $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa : ansible / ansible

Enter를 눌러 PPA 추가를 수락하고 마지막으로 저장소를 업데이트 한 후 Ansible을 설치합니다.

$ sudo apt-get 업데이트 $ sudo apt-get 설치 ansible

2 단계: 서버의 / etc / hosts 파일로 이동하여 호스트 이름과 호스트의 IP 주소를 추가합니다.

etc 호스트-Ansible 프로비저닝-Edureka그림 1 – / etc / hosts 파일에 원격 호스트 추가 – Ansible 프로비저닝

3 단계 : Ansible은 SSH를 사용하여 호스트와 통신하는 에이전트없는 아키텍처에서 작동하므로 ssh 키를 설정합니다. 기본적으로 하나의 서버와 하나의 호스트가 있습니다. 우리는 서버로 호스트를 제어하므로 서버에 공개 ssh-key를 생성하고 호스트의 컴퓨터에 복사합니다. 서버에서 다음 명령을 실행하십시오.

$ ssh-keygen

파일 이름을 입력하라는 메시지가 표시됩니다.내가 어디키를 저장하고 선택 사항 인 생성 된 키에 액세스하기위한 비밀번호를 생성하라는 메시지를 표시하고 싶습니다. 기본적으로 공개 키는 .ssh / id_rsa.pub 파일에 저장되고 개인 키는 .ssh / id_rsa에 저장됩니다.

그림 2 – ssh 키 생성 – Ansible 프로비저닝

이제이 생성 된 키가 호스트에 있어야합니다. 키를 호스트에 복사하는 방법은 호스트에 수동으로 복사하거나 ssh-copy-id 명령을 사용하는 두 가지 방법으로 수행 할 수 있습니다. 이 경우 ssh-copy-id root @ IP_of_host 명령을 사용하여 복사합니다.

$ ssh-copy-id root@192.168.56.104

참고-이 명령을 실행하기 전에 호스트에 ssh 할 수 있는지 확인하십시오.

4 단계 : Ansible 호스트를 구성합니다. / etc / ansible / hosts 파일로 이동하여 호스트 이름을 추가합니다. 보유한 호스트 및 서버의 수에 따라 달라집니다. 당신은 또한 더 많이 가질 수 있습니다하나의 서버여기.

그림 3 – 인벤토리 파일에 원격 호스트 추가 – Ansible 프로비저닝

5 단계 : 호스트가 준비되었는지 확인하십시오. 이 명령을 실행하면 유사한 출력이 표시됩니다.

$ ansible -m ping all

그림 4 – 원격 호스트 상태 확인 – Ansible 프로비저닝

6 단계 : 이제 Ansible이 준비되었으므로 웹 사이트를 배포 할 수있는 환경을 만들어 보겠습니다. 단일 Ansible 플레이 북을 사용하여 Apache, MySql 및 PHP를 설치합니다. 한 번 살펴 보겠습니다.

참고 : 초보자 인 경우 플레이 북 작성 방법을 설명하는 블로그.

--- # LAMP 스택 설정-호스트 : host1 작업 :-이름 : ppa 저장소 추가 : 예 apt_repository : repo = ppa : ondrej / php-이름 : 램프 스택 설치 : 예 apt : pkg :-apache2-mysql-server -php7.0-php7.0-mysql 상태 : 현재 업데이트 캐시 : 예-이름 : 아파치 서버 시작 : 예 서비스 : 이름 : apache2 상태 : 시작됨 : 예-이름 : mysql 서비스 시작 : 예 서비스 : 이름 : mysql 상태 : 시작됨 활성화 됨 : yes-이름 : 대상 디렉토리 파일 생성 : path = / var / www / html state = directory mode = 0755-이름 : index.html 배포하기 : yes copy : src : / etc / ansible / index / index.html 대상 : var / www / html / index / index.html

보시다시피 6 개의 작업이 있으며 각 작업은 특정 기능을 수행합니다.

  • 첫 번째 작업은 MySQL 및 PHP를 설치하는 데 필요한 저장소를 추가합니다.
  • 두 번째 작업은 apache2, MySQL-server, PHP 및 PHP-MySQL을 설치합니다.
  • 세 번째 및 네 번째 작업은 Apache 및 MySQL 서비스를 시작합니다.
  • 다섯 번째 작업은 호스트 컴퓨터에 대상 디렉터리를 만들고
  • 마지막으로 여섯 번째 작업은 index.html 파일을 실행하고 서버 시스템에서 파일을 선택하여 호스트 시스템에 복사합니다.

다음 명령으로이 플레이 북을 실행합니다.

C ++에서 오버로딩과 오버라이드의 차이점
$ ansible-playbook lamp.yml -K

된다 : 예 플레이 북에서 루트로 실행해야한다고 알려주므로 명령을 실행할 때 sudo 암호를 입력하라는 메시지가 표시됩니다.

그림 5 – Ansible 플레이 북 실행 – Ansible 프로비저닝

이제 호스트 컴퓨터로 이동하여 웹 사이트가 호스팅되었는지 확인할 수 있습니다.

그림 6 – Localhost에서 웹 사이트 호스팅 – Ansible 프로비저닝

이제 서버와 상호 작용하는 모든 호스트에 배포되는 웹 페이지 (이 경우에는 호스트가 하나뿐 임)이지만 원격 호스트가 100 개라도 동일하게 적용 할 수 있습니다.

Ansible Provisioning 블로그의 끝으로 이동합니다. 이 기사가 유용하다고 생각되면 ' Edureka 제공. IT 산업을 더 똑똑하게 만든 모든 도구를 다룹니다.

질문이 있으십니까? 그것을 게시하십시오 다시 연락 드리겠습니다.