구성 관리에 ansible을 사용하기 시작했고 ansible 디렉터리를 구성하는 방법이 궁금합니다. 예를 들어 web1
구성 편집이 필요한 호스트는 다음과 같습니다.아파치그리고/etc/ssh/sshd_config. jira1
사용하지 않는 호스트입니다.아파치, 그러나 동일한 편집이 필요합니다./etc/ssh/sshd_config.
ansible
내 생각은 내 디렉토리 아래에 라이브러리 디렉토리를 만들고 sshd.yml
플레이북 아래에 를 두는 것이었습니다. 라이브러리에 대한 심볼릭 링크를 사용하여 호스트 디렉터리를 만들 수 있습니다.
ansible
|
|
+ library
| |
| +- sshd.yml
| +- apache.yml
| +- nginx.yml
+ web1
| |
| + playbooks
| |
| +- symlink_to_../../library/sshd.yml
| +- symlink_to_../../library/apache.yml
+ jira1
|
+ playbooks
|
+- symlink_to_../../library/sshd.yml
+- symlink_to_../../library/nginx.yml
이렇게 하면 중복 .yml
파일이 제거되고 ansible은 심볼릭 링크를 신경 쓰지 않는 것 같습니다. 하위 디렉터리를 한눈에 보면 특정 호스트를 구성하는 데 어떤 플레이북이 필요하거나 사용되는지 정확히 알 수 있습니다. 좋은 계획인 것 같지만 더 좋은 방법이 있을까요?
내가 생각할 수 있는 유일한 것은 vars/facts
구성에서 모든 단일 호스트를 포함/제외하는 모든 플레이북을 갖추는 것입니다. 그래도 먼 길인 것 같습니다. LAN에서 호스트를 추가하거나 제거할 때마다 모든 플레이북을 편집합니다.
답변1
Konstantin이 쓴 것처럼 표준 빌딩 블록에 대한 역할, 서버 유형별 그룹 및 해당 역할을 적용할 플레이북이 있어야 합니다. 따라서 구조는 다음과 같습니다.
ansible
|
|
+-roles
| |
| +-sshd
| +-apache
| +-nginx
|
+-playbook_for_group_web.yml
|
+-playbook_for_group_jira.yml