![다중 웹사이트 구성으로 다중 서버를 관리하기 위해 Ansible을 사용하는 방법은 무엇입니까?](https://rvso.com/image/668783/%EB%8B%A4%EC%A4%91%20%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%20%EA%B5%AC%EC%84%B1%EC%9C%BC%EB%A1%9C%20%EB%8B%A4%EC%A4%91%20%EC%84%9C%EB%B2%84%EB%A5%BC%20%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20Ansible%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 새로운 서버를 프로비저닝하기 위해 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에서 예약된 플레이북을 실행하지 않는 경우에는 을 사용하는 것이 도움이 될 수 있습니다 .
도움이 되었기를 바랍니다!