다중 웹사이트 구성으로 다중 서버를 관리하기 위해 Ansible을 사용하는 방법은 무엇입니까?

다중 웹사이트 구성으로 다중 서버를 관리하기 위해 Ansible을 사용하는 방법은 무엇입니까?

저는 새로운 서버를 프로비저닝하기 위해 Ansible을 조사했는데 매우 효과적이었습니다. 내 플레이는 MySQL, Nginx 및 나머지 모든 것을 설치합니다. 이제 이를 구성 관리 도구로도 사용하는 가장 좋은 방법이 무엇인지 궁금합니다.

우리는 각 서버에서 여러 웹사이트를 운영하고 있습니다. 나에게 이는 각 서버의 일반 Nginx 설정과 각 사이트/도메인에 필요한 특정 구성을 의미합니다. 필요할 때 Ansible을 사용하여 일반 설정과 특정 구성을 독립적으로 업데이트할 수 있다는 점을 염두에 두고 있습니다(새로운 통찰력이나 보안을 가정해 보겠습니다).

이 상황에서 나는 어떻게 해야 할까요? 이렇게 하려면 모든 사이트와 해당 사이트가 있는 사이트를 보유하는 변수를 유지해야 합니까? 아니면 더 나은 대안이 있습니까?

답변1

이 목적에 큰 이점을 제공하는 데 사용할 수 있는 템플릿 기능은 템플릿 기능입니다.

그만큼주형모듈을 사용하면 각 호스트에 대해 고유한 값을 가진 파일을 배포할 수 있습니다. 현재 작업 중인 호스트의 이름은 Inventory_hostname 및 Inventory_hostname_short 변수에 유지됩니다(후자는 호스트 이름의 첫 번째 점으로 구분된 구성 요소임).

group_vars/all의 사전에 호스트별 변수를 보관할 수 있습니다. 예를 들어:

www_sites: {
    host1: "www.mysite1.com",
    host2: "www.mysite2.com",
  }

그런 다음 nginx conf 파일의 템플릿에는 다음 줄을 따라 내용이 포함될 수 있습니다.

server {
  listen       80;
  server_name  {{ www_sites[inventory_hostname_short] }};
  access_log   logs/{{ www_sites[inventory_hostname_short] }}.access.log  main;

Ansible에서 사용하는 Jinja2 템플릿 언어에 대한 문서를 찾을 수 있습니다.여기.

답변2

나는 문제의 호스트에 특정 작업을 수행하기 위해 vars를 사용합니다. 내 조언은 호스트를 그룹으로 그룹화하고 그룹 변수를 사용하는 것입니다. Ansible 플레이북은 git 또는 SVN 버전 관리에 적합하므로 변경 사항을 추적할 수 있습니다.

vars_prompt특히 cron에서 예약된 플레이북을 실행하지 않는 경우에는 을 사용하는 것이 도움이 될 수 있습니다 .

도움이 되었기를 바랍니다!

관련 정보