Sander
./inventory/host_vars/zabbix.example.com:
mysql.yml pve3ct.yml zabbix-agent.yml zabbix.yml
Sander
как это работает?
Sander
у меня так не читает
Sander
ах
Sander
я кажись понял
Sander
include точно никак не сделать?
Yuri
Может быть у тебя где-то еще переменные определены и они переопределяют то, что у тебя в group_vars?
Alf 🙀
Yuri
Зачем там инклуд вообще?
Sander
кароче, вспомнил я
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/vars.yml"
Sander
есть какой-нибудь способ, подобие такого?
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/*.yml"
Sander
@sysVinit а у тебя есть разделение на stage и prod?
или ты только на prod выкладываешь сразу без тестов.
Sander
наверное это разработчики деплоят так? у нас хотели гит на продакшене запускать
Sander
@sysVinit gitlabci только используете или jenkins тоже пробовали? почему именно gitlabci?
Sander
то есть тестируешь еще, чтоб все команды в ansible работали
sysvinit
наверное это разработчики деплоят так? у нас хотели гит на продакшене запускать
Нее, оперейшенз)) я подконтрольные хосты/сервисы с рабочей машинки. У меня проли и поейбуки. Другой опс деплоит со своей рабочей машины цельными поейбуками. Мы наши роли / плейбуки храним в рпсовом гогсе. Третий опс хранит цельные плейбуки и запускает их в дженкинсе. Часть продуктов деплоятся из тар-архивов с артифактори, часть гитпуллом на целевой машине.
sysvinit
sysvinit
Но это дома.
sysvinit
А на работе тестов на роли не пишу, нет времени.
Sander
понятно
Sander
Всем привет,
есть одна проблема, которую не могу решить.
Я использую ansible для создания, рабочего окружения, запускаю playbook и он мне собирает проект на базе docker-compose, в определенную папку, чтоб это каждый раз не делать руками я использую ansible, который мне соберет все включая dockerfiles, с необходимыми расширениями и так далее.
---
но так как это надо сделать на localhost, то возникают некоторые проблемы с получением host_vars. Раньше я их получал просто через vars_files
- hosts: "localhost"
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/vars.yml"
но хотелось бы, чтоб система не была привязана к одному файлу, потому что возникают некоторые проблемы в такой реализации.
---
Если поменять hosts -> - hosts: "site.ee"
тогда конечно он будет брать нужный мне host_vars, но он будет стучать уже не на localhost, а на другой хост, который там будет указан для stage серверов.
Пытался так же использовать delegate_to, но он работает только для tasks, для roles он работать не будет.
---
Кто может подсказать, как можно решить эту проблему?
Albert
Ты в одном плейбуке можешь несколько плеев сделать
Albert
- hosts: localhost
roles:
- myrole1
- hosts: host1
roles:
- myrole2
Albert
Работать будут по порядку
Albert
Причем можно получить параметры из предыдущего плея:
Albert
hostvars['localhost']['myvar']
Sander
только как это решает мою проблему? я же все равно не смогу получить данные из host_vars
Albert
Получишь
Albert
Второй плей притащит данные для его хоста
Sander
я плохо представляю как это работать будет
Sander
так как он начнет коннектиться к какому-нибудь серверу
Sander
так как hosts он игнорировать не может
Sander
так как все действия делаются только на localhost
Albert
Тогда выставь delegate_to на плей
Albert
Не уверен что будет работать, но попробуй
Sander
как я тебе на плей выставлю, delegate_to работает только на tasks
Sander
я на roles пробывал вешать и под хостом, это не работает
Sander
🤔
sysvinit
Всем привет,
есть одна проблема, которую не могу решить.
Я использую ansible для создания, рабочего окружения, запускаю playbook и он мне собирает проект на базе docker-compose, в определенную папку, чтоб это каждый раз не делать руками я использую ansible, который мне соберет все включая dockerfiles, с необходимыми расширениями и так далее.
---
но так как это надо сделать на localhost, то возникают некоторые проблемы с получением host_vars. Раньше я их получал просто через vars_files
- hosts: "localhost"
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/vars.yml"
но хотелось бы, чтоб система не была привязана к одному файлу, потому что возникают некоторые проблемы в такой реализации.
---
Если поменять hosts -> - hosts: "site.ee"
тогда конечно он будет брать нужный мне host_vars, но он будет стучать уже не на localhost, а на другой хост, который там будет указан для stage серверов.
Пытался так же использовать delegate_to, но он работает только для tasks, для roles он работать не будет.
---
Кто может подсказать, как можно решить эту проблему?
Про delegate_to:
Попробуй:
'''
- block:
- shell: whoami
- shell: hostname
delegate_to: localhost
Sander
не очень понял, что такое block? @sysVinit
sysvinit
Можно таски обединять в блоки, а дегейтту уже к блоку применить.
sysvinit
http://docs.ansible.com/ansible/playbooks_blocks.html
Sander
а на roles как-то можно сделать?
Sander
если указываю:
---
- hosts: "site.ee"
то он все равно будет долбиться на ip, который указан в inventories/stage/hosts
даже если я в блоках укажу delegate_to.
поэтому я сделал так:
- hosts: "localhost"
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/vars.yml"
но это какой-то костыль.
@sysVinit
Magistr
Sander
не очень понял, а в чем разница?
у меня проблема в том что я не могу разделить файл vars.yml на несколько файлов, то как мне было бы удобней. К примеру:
host_vars/site.ee/vars.yml
host_vars/site.ee/main.yml
host_vars/site.ee/php.yml
host_vars/site.ee/mysql.yml
но с моей логикой я привязан только к одному файул, vars.yml
Sander
😞
Serge
Sander
setup: false это куда вставтиь надо
Serge
Serge
Sander
---
- hosts: "localhost"
setup: false
?
Serge
Sander
так не работает
Serge
Sander
ERROR! 'setup' is not a valid attribute for a Play
The error appears to have been in '/ansible/kit.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
---
- hosts: "localhost"
^ here
Serge
Yuri
Может быть
gather_facts: no?
Yuri
А... ну да
Yuri
опоздал
Serge
А вот потом надо явно дергать setup таки, если захочешь на этот хост
Sander
---
- hosts: "site.ee"
gather_facts: false
fatal: [site.ee]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.135.111 port 22: No route to host\r\n", "unreachable": true}
Serge
Serge
У меня было с группами
Serge
А ты вообще чего изначально добиться хочешь?
Magistr
Yuri
Вообще, у меня второй день стойкое ощущение, что Sander S перепутал host_vars и group_vars
Sander
Sander
у меня проблема в том что я не могу разделить файл vars.yml на несколько файлов, то как мне было бы удобней. К примеру:
host_vars/site.ee/vars.yml
host_vars/site.ee/main.yml
host_vars/site.ee/php.yml
host_vars/site.ee/mysql.yml
Yuri
А скажи мне, site.ee - это один физический сервер? (в смысле - один ip-адрес)
Yuri
Это как бы наводящий вопрос
Sander
[site.ee]
192.168.135.111 ansible_user=vagrant
[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant
ansible_ssh_port=22
ansible_ssh_private_key_file=./.vagrant/machines/default/virtualbox/private_key
Sander
но должен смотреть на local
Yuri
Эмммм....
Sander
можно менять эти конфиги, но тогда придется копи пейстить hosts, да и не получится так
Yuri
а у тебя не возникает ощущения, что
[site.ee] - это все же группа
Yuri
И поэтому твои host_vars как бы не читаются
Sander
читаются, вчера запускал vagrant и оно ток в этом случаи работало