를 사용하여 : ansible 2.2.0.0, 내가 실행이 JSON을 반환하는 인벤토리 스크립트가 & 2.1.4.0ansible 반환 잘못된 바르 테스트 동적 재고
2.2.1.0 (예를 위해서 최소화) :
{
"componentA-service_ci": {
"hosts": [
"host1.example.com",
"host2.example.com"
],
"vars": {
"httpport": "8100",
"nginxpool": "componentA_pool"
}
},
"componentB-service_ci": {
"hosts": [
"host1.example.com",
"host3.example.com"
],
"vars": {
"httpport": "9999",
"nginxpool": "componentB_pool"
}
}
}
필자가 작성중인 안내서는 응용 프로그램을 배포하기위한 것입니다. 인벤토리의 변수는 그룹별로 고유합니다. 즉, 각 서비스에는 자체 lb 풀과 http 포트가 있습니다. 또한 한 호스트에 여러 응용 프로그램이있을 수 있습니다. 단순히 변수 nginxpool 및 HTTPPORT 출력한다 역할에
---
- hosts: all
remote_user: deployment
become: true
become_method: sudo
become_user: root
gather_facts: yes
serial: 1
roles:
- app-deploy
하는 작업 : 그리고 여기에 플레이 북처럼 좋아하는 것입니다.
나는이 같은 작전을 실행
ansible-playbook deploy.yml -i inventory.py --limit componentA-service_ci
예상 결과 :
TASK [app-deploy : debug] ******************************************************
ok: [host1.example.com] => {
"msg": "pool componentA_pool port 8100"
}
TASK [app-deploy : debug] ******************************************************
ok: [host2.example.com] => {
"msg": "pool componentA_pool port 8100"
}
실제 결과 :
TASK [app-deploy : debug] ******************************************************
ok: [host1.example.com] => {
"msg": "pool componentB_pool port 9999"
}
TASK [app-deploy : debug] ******************************************************
ok: [host2.example.com] => {
"msg": "pool componentA_pool port 8100"
}
--limit
작품을 해당 구성 요소가 componentA-service_ci에 대해 나열된 호스트에 배포되지만 host1.example.com에 대해서는 componentB-service_ci vars에서 nginxpool 및 httpport 값을 얻게됩니다. 나는 documentation을 읽었지만 어떻게 될지 이해하지 못합니까? 이게 버그 야? 아니면 내가 얼마나 유능한가?
[특정 호스트 그룹에서 실행 가능] (http://stackoverflow.com/questions/41500463/run-ansible-on-specific-hosts-group) 가능한 복제본 – techraf