Некоторое время я использую ansible с автономными плейбуками и теперь хотел бы настроить структуру ролей в своей среде. Это структура папок (пример, обобщение)
├── hosts
├── playbooks
│ ├── project1-staging.yml
│ └── project1-production.yml
├── roles
│ └── project1-compile
│ ├── files
│ │ └── project1.conf
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ └── vars
│ └── main.yml
│ └── ec2-create
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ └── vars
│ └── main.yml
│ └── project1-deploy
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ └── vars
│ └── main.yml
├── vars.yml
Это выглядит просто. Я хотел бы выполнить playbook project1-staging.yml, чтобы создать новую промежуточную среду для конкретной версии, например; ansible-playbook project1-staging.yml -e 'версия = 1'
и плейбук ниже;
---
- name: deploy project1 (staging) {{ version }}
hosts: local
connection: local
roles:
#- project1-compile version={{ version }}
- { role: ec2-create, project: project1, count:1 }
- { role: project1-compile, version: {{ version }} }
- { role: project1-deploy, version: {{ version }}, target: {{last_ec2}} }
В этой структуре есть некоторые проблемы, и мне это тоже не нравится. - Это правильный путь? - как я могу использовать результат роли ec2-create, я хотел бы развернуть коды на только что созданном сервере, и я не знаю идентификатор. - есть ли другой способ передать параметры ролям?