Max
Переменные в роль
Max
Нафига в группу?
Sander
в группе, потому что несколько серверов может быть на сайт
Dima
Переменные в роль
а потом в один момент приоритеты переменных снова поломают.... и разбирайтесь )
Dima
опасно!
Max
Лол
Max
Ну дааа)
Max
Но можно не указывать одинаковые
Dima
да, лол, когда у тебя прод работает. а когда не работает из-за того что туда катнулись defaults из роли - это точно не лол :)
Max
Ща домой зайду покажу
Sander
так как правильно тогда, если я в hostvars кину переменные, и мне понадобиться сделать это на двух серверах, то мне что создавать два hostvars для каждого сервера?
Dima
hostvar - переменная уникальная для хоста
Sander
для хоста, а у меня на несколкьо сайтов один хост
Dima
короче
Dima
http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable почитай лучшие практики
Dima
"Куда положить переменную"
Dima
и вот сделаешь по этим рекомендациям - не должно быть проблем
Sander
да времени нет мне надо сейчас быстро поправить
Max
блин
Max
одинаковые переменные - в defaults роли
Max
разные - в два плейбука например prod.yml и staging.yml
Dima
ты прям называешь как я!
Dima
😡
Dima
аж вздрогнул.
Max
vars: var1: yoba var2: DESU
Max
переменные группы нужны когда у тебя одна и та же хрень должна выкатываться на разные группы серверов с разными параметрами
Max
логично полагать, что у тебя один сервер не должен хавать 2 пачки переменных групп
Max
в инвентори у тебя будет
Max
[my_fucked_host] hostame
Max
ну ок параметры для ссх
Max
если проект один, и нужно 2 окружения то не надо делить их переменными групп, нужно сделать 2 плейбука, потому что глупо разом катить и то и другое, если это прод и стейдж
Sander
так я так делаю: ansible-playbook -i inventories/vagrant deploy:group1.yml
Max
а переменные в группе те зачем тогда?
Sander
он понимает что это деплой на vagrant, /inventories/vagrant/group_vars
Max
да не нужны тебе group_vars
Sander
я в плейбке прописаю - hosts: group1, и он подхватывает нужную группу
Max
переменные в плейбук пропиши
Max
и всё
Sander
и так же запускать группу? просто если в плейбке то уже не очень удобно, так-то отдельный конфиг
Max
какая те разница где они прописаны?
Max
групповые нужны когда ты один плейбук сразу катишь на несколько групп
Max
у тебя же не та ситуация
Max
и ышшр раз
Max
в жтом случае сервера в группах должны быть разные
Sander
видимо потому что сервера одинакове в группах, поэтому такая ерунда
Max
ессно
Sander
но у меня сервера в группах будут одинаковые, в этом и пробелма
Max
этого быть не должно - смысл в этих группах где
Max
перенеси переменные из групп в плейбуки
Sander
ну вот так у нас устроено, один сервер где несколько сайтов
Max
и чего?
Max
переменные - в плейбуки....
Sander
1) перенести group_vars -> playbook
Max
да
Max
всё, достаточно
Max
и плейбук будет типа такой
Sander
2) я надеюсь если я сделаю - playbook deploy:group1.yml и вот такую группу [group1] host1 ansible_user=vagrant host2 ansible_user=vagrant---- то он сможет выполнить работу на эти два hosts, которые указаны в группе.
Max
--- name: deploy prod hosts: group1 roles: - my_awesome_site vars: var1: ... var2: ... var3: ...
Max
сможет, но юзера тоже можно прописать в плейбук )
Max
ну с юзером пофиг
Sander
я обычно в файле inventoreis/vagrant/hosts прописываю user, ssh port и так далее
Sander
у тебя в примере выше, hosts: {{ тут именно хост, группу можно? }}
Sander
во
Max
твоё право
Max
можно
Sander
и еще вопрос если можно
Sander
vars: почему они снизу? я сверху обычно ставил
Sander
или тут все равно
Max
декларативный подход
Max
название, хосты, роли, параметры
Max
всё по порядку
Max
For starters, here’s a playbook that contains just one play: --- - hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
Max
вот те из интро в плейбуки выдержка
Sander
не удобно, то что мне придется делать куча плейбуков, так я подхватывал inventory, который хватал мне нужные параметры. а вторым я запускал playbook, что позволялао делать один playbook, для vagrant,dev,stage,prod. ansible-playbook -i inventories/vagrant deploy.ymlа так придется делать для всего этого по 4 плейбка.
Max
для этого придуманы роли
Max
много плейбуков это нормально, оно тебе позволяет катить только то что нужно
Sander
просто много дублей будет, действия то везде одинаковые
Max
таски что ли?