플레이북을 사용하여 다양한 서버에 다양한 캐릭터를 배포하세요

플레이북을 사용하여 다양한 서버에 다양한 캐릭터를 배포하세요

Fe "ansible-galaxy init"를 통해 두 가지 역할(deploy_back 및 배포_front)을 만들었습니다.

나는 또한 playbook.yml 파일을 작성했습니다.

- name: Create cluster
  become: yes
  hosts: all

  roles:
  - deploy_front
  - deploy_back

"ansible-playbook playbook.yml"을 통해 시작하면 두 서버 모두에 두 가지 역할이 배포됩니다. 플레이북의 다양한 서버에 다양한 캐릭터를 배포하는 방법은 무엇입니까?

playbook.yml을 작성하면

- name: Create cluster
  become: yes

  hosts: front
  roles:
  - deploy_front

  hosts: db
  roles:
  - deploy_db

그러면 출력은 "...중복 사전 키 발견(호스트) ...중복 사전 키 발견(역할) ...마지막으로 정의된 값만 사용됨".

답변1

귀하의 hosts:진술과 다른 진술을 다른 스크립트로 분리해야합니다. 코드는 다음과 같아야 합니다.

- name: Create front cluster
  become: yes
  hosts: front
  roles:
  - deploy_front

- name: Create db cluster
  become: yes
  remote_user: different-db-user
  hosts: db
  roles:
  - deploy_db

답변2

"중복 키" 메시지가 표시되는 이유는 YAML의 구조 때문입니다.

스크립트는 순서가 지정된 목록 형식의 스크립트 모음입니다. 각 재생은 일련의 키워드/값 쌍으로 지정됩니다. 흔한놀다name키워드는 , hosts, become및 입니다 roles.

YAML에서는 목록의 다른 항목을 지정하기 위해 대시( -) 문자를 사용할 수 있습니다. 두 예제 스크립트 모두 playbook.xml가장 왼쪽에 대시 문자만 있습니다. 이는 연극 또는 연극 대본에 대해 하나의 항목 목록만 있다는 것을 의미합니다.

hosts두 번째 예에서 두 번째 선언 앞에 대시 문자를 추가하면 playbook.yml이제 두 개의 플레이북이 포함된 유효한 플레이북이 생성됩니다.

- name: Create cluster
  become: yes

  hosts: front
  roles:
  - deploy_front

- hosts: db
  roles:
  - deploy_db

원래 두 번째 예에서는 단일 재생만 정의됩니다. 또한 hostsroles키워드는 한 번의 일치에서 두 번 정의됩니다. YAML은 hosts및 키워드에 대해 roles서로 다른 두 가지 정의가 있다고 불평합니다.

관련 정보