>

방금 Ansible 모범 사례를 읽었지만 모두 dev, test 및 prod 단계로 작업했습니다. 저에게는 조금 더 복잡합니다. 다음과 같은 서버가 있습니다 :

  • 응용 프로그램 개발 서버
  • 응용 프로그램 테스트 서버
  • 응용 프로그램 서버
  • 지라 테스트 서버
  • 지라 프로드 서버
  • 솔리드 프로드 서버
  • 젠킨스는 노예를 만든다

재고를 정의하려고 할 때 어려움을 겪고 있습니다. 발생할 수있는 여러 시나리오가 있기 때문에 :

  • 모든앱 서버에서 플레이 북 실행(dev + test + prod)
  • 모든앱 제작 서버에서 플레이 북 실행
  • 모든prod 서버에서 플레이 북 실행(앱 + jira + solr)

이 경우 디렉토리 레이아웃은 어떻습니까? 호스트 및 환경 별 변수를 정의 할 위치는 어디입니까? 그리고 내 플레이 북을 어떻게 실행합니까? ?)

--limit

  • 답변 # 1

    모범 사례는 항상 모든 사용 사례에 가장 적합한 것은 아닙니다. 특정 용도로 사용하려면 아래에 설명되어 있어야합니다.

    플랫폼으로 여러 인벤토리를 만들고 서버 기반 기능으로 분류하십시오. 예를 들어, 각 환경에 대해 별도의 인벤토리를 보유하십시오.

    application dev server inventory
    application test server inventory
    application prod server inventory
    jira test server inventory
    jira prod server inventory
    solr prod server inventory
    jenkins build slave inventory
    
    

    각 인벤토리는 다음과 같은 고전적인 구조를 갖습니다 :

    이 인벤토리를 모두 갖추면 여러 플레이 북을 구성 할 수있는 간단한 셸 스크립트 모음을 가질 수 있습니다. 예를 들어 앱 서버의 셸 스크립트는 다음과 같습니다.

    echo "***********************************"
    echo "****INFO:- Performing deployment: on app servers"
    echo "***********************************"
    ansible-playbook $deploy_component_playbook1 -i $INVENTORY_PATH/application-dev-server/hosts --extra-vars " " # define env varaibles inside " "
    ansible-playbook $deploy_component_playbook2 -i $INVENTORY_PATH/application-test-server/hosts --extra-vars " "  # define env varaibles inside " "
    ansible-playbook $deploy_component_playbook3 -i $INVENTORY_PATH/application-prod-server/hosts --extra-vars " " # define env varaibles inside " "
    
    
    이 변수를 정의하십시오.  절대/상대 경로가있는 각 플레이 북 이름으로

    변수 deploy_component_playbook1, deploy_component_playbook2, deploy_component_playbook3  모든 인벤토리가 배치되는 인벤토리 관리자의 절대 경로 여야합니다.

    환경 변수는 INVENTORY_PATH 다음에 언급 한대로 정의 할 수 있습니다.  내부 "".

    유사하게 다른 플레이 북 조합을위한 쉘 스크립트를 가질 수 있습니다. 결국 원하는 쉘 스크립트를 시작하기 만하면됩니다.

  • 답변 # 2

    재고가 그리 복잡하지 않으므로 아래와 같이 그룹 및 하위 그룹을 관리 할 수 ​​있습니다.

    --extra-vars
    
    

    동적 인벤토리 파일을 광범위하게 사용하지만 (데이터베이스를 쿼리하고 호스트 목록을 가져옵니다)

    [app_prod] appserverslist.xyz.com [jira_prod] jiraserverslist.xyz.com [application:children] app_prod app_stage app_test [jira:children] jira_prod jira_test jira_stage [application:vars] # variables to all groups xyz=10 [app_prod:vars] # variables to individual group http_port=88 [all:vars] # variables to all hosts ansible_ssh_user=xyz

  • 이전 python - GML 파일을 쓰는 중 NetworkX 키 오류
  • 다음 php - 모델에서 Yii2 GridView의 첫 번째 알림, 두 번째 알림을 인쇄하는 방법은 무엇입니까?