2016-05-18 3 views
1

В настоящее время у меня есть следующий сборник пьес:Как я могу структурировать свою игру, чтобы иметь больше смысла?

- hosts: "{{env}}_{{product}}" 
    name: "tools" 
    sudo: yes 
    vars_prompt: 
    product: "Which product would you like to deploy [all|proxy|query|rest]?" 
    env: "Which environment should we deploy to [dev|qa|test|prod]?" 
    roles: 
    - { role: proxy, when: "product == 'all' or product == 'proxy'" } 
    - { role: query, when: "product == 'all' or product == 'query'" } 
    - { role: rest, when: "product == 'all' or product == 'rest'" } 

Все мои группы сохраняются в одном файле ./inventory/all, например ,:

# ----------------------------------------------------------------------------------- 
# -------------- 
# ### DEV ### 
# -------------- 
# ----------------------------------------------------------------------------------- 

[dev_all:children] 
dev_redis 
dev_query 
dev_rest 
dev_proxy 

[dev_redis] 
.hosts 

[dev_query] 
.hosts 

[dev_rest] 
.hosts 

[dev_proxy:children] 
dev_proxy-dc1 
dev_proxy-dc2 
dev_proxy-dc3 

[dev_proxy-dc1] 
.hosts 

[dev_proxy-dc2] 
.hosts 

[dev_proxy-dc3] 
.hosts 


# ----------------------------------------------------------------------------------- 
# -------------- 
# ### PROD ### 
# -------------- 
# ----------------------------------------------------------------------------------- 

[prod_all:children] 
prod_redis 
prod_query 
prod_rest 
prod_proxy 


[prod_redis] 
.hosts 

[prod_query] 
.hosts 

[prod_rest] 
.hosts 

[prod_proxy:children] 
prod_proxy-dc1 
prod_proxy-dc2 
prod_proxy-dc3 

[prod_proxy-dc1] 
.hosts 

[prod_proxy-dc2] 
.hosts 

[prod_proxy-dc3] 
.hosts 

Я не могу помочь, но чувствую, что я что делает это слишком сложным. Я стараюсь, чтобы люди не пропускали теги или файлы инвентаря. Но теперь я не уверен, что лучший способ разрешить развертывание для таких вещей, как хосты redis, которые на самом деле не являются тем, что мы будем рассматривать как «продукт», но по-прежнему нуждаемся в его собственной группе, поскольку она размещена на собственном наборе хосты. Я мог бы просто добавить его в текущий список, [all|proxy|query|rest|redis], но ... похоже, должен быть способ указать redisи еще product, но в то же время не требуя и того ... Я не знаю, как хоть.

Я хотел бы иметь что-то, где вы могли бы сказать

«Я хочу, чтобы развернуть proxy в dev, и давайте обновим redis в то время как мы на это»

- это возможно с моей текущей настройкой?

ответ

1

Это не похоже на лучший способ справиться с этим.

Вместо этого я бы структурировал свои плейбуры индивидуально для задания определенных ролей, и я бы также установил, что мои кадастры охватывают определенную среду, а не все.

Если вы хотите сделать это так, чтобы люди не проходили мимо файла инвентаря или конкретной пьесы, я бы обернул команду ansible-playbook в какой-либо форме сценария-оболочки.

Это позволяет людям использовать ваши плейбуки намного более грамотно и гибко, насколько вам это необходимо, но по-прежнему предлагает такую ​​же возможность предлагать пресеты через ваш сценарий оболочки.

Смежные вопросы