
Anatoly
24.02.2017
13:18:13
но как это сделать
если ты хочешь инклудить внутри варс(а я подозреваю что ты хочешь) то нет это так не работает

Yuri
24.02.2017
13:18:18
Собственно, group_vars - переменные для групп, которые описаны в инвентори...

Anatoly
24.02.2017
13:18:32

Sander
24.02.2017
13:18:43
group_vars это общие

Google

Sander
24.02.2017
13:18:53
а у меня конфиги на 1 проект находятся в host_vars

Anatoly
24.02.2017
13:18:58

Sander
24.02.2017
13:19:14
пример приведу
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
---
- include main.yml
- include php.yml
- include mysql.yml
==============
потом же будет порядок и работать же с этим будет легче

Anatoly
24.02.2017
13:20:07
работать с этим легче не будет.

Sander
24.02.2017
13:20:34
вот видите, Anatoly говорит нельзя
значит нельзя

Yuri
24.02.2017
13:20:47

Sander
24.02.2017
13:21:16
мне так удобней, у меня основные конфиги в одном файле, для пхп в другом

Yuri
24.02.2017
13:21:18

Anatoly
24.02.2017
13:21:20
значит нельзя
инклюдь в тасках или плэях. варс не для того чтобы в них инклюдами заниматься

Google

Yuri
24.02.2017
13:21:27
Зачем тебе инклюдить в варсах?
Вернее - там даже инклюдить не надо

Sander
24.02.2017
13:22:12
я же написал, мне так больше нравиться.
я смогу разделять конфиги логически, чтоб один файл был под что-то одно
я же им даже название даю
php.yml - значит конфиг ток для php

Yuri
24.02.2017
13:22:53
Да блин... разделяй. Просто инклудить зачем?

Anatoly
24.02.2017
13:22:53
чувак, оно не работает так как тебе нравится. есть правила. оно работает по правилам.

Sander
24.02.2017
13:23:00
как разделять

Yuri
24.02.2017
13:23:16
Ты можешь создать host_vars/site.ee/php
можешь создать просто host_vars/site.ee/ директорию и положить туда любые файлы без расширений

Sander
24.02.2017
13:23:46
оно не будет работать
он хочет vars файл

Yuri
24.02.2017
13:23:55
И оно будет работать с хостом, которые называется site.ee

Sander
24.02.2017
13:24:09
я уже попробовал так запустить

Yuri
24.02.2017
13:24:18
И?

Sander
24.02.2017
13:24:25
у меня было
host_vars/site.ee/php.yml
host_vars/site.ee/vars.yml
ну что и, не подхватывал конфиги

Yuri
24.02.2017
13:24:34
а у тебя хост называется site.ee?

Sander
24.02.2017
13:24:40
да
то что в vars.yml подхвотил

Google

Sander
24.02.2017
13:25:01
а из php.yml не подхвотил

Yuri
24.02.2017
13:25:37
Эээээ чот я вообще запутался

Dmitriy Varlamov
24.02.2017
13:25:50
никаких инклудов не надо

Sander
24.02.2017
13:28:00
./inventory/host_vars/zabbix.example.com:
mysql.yml pve3ct.yml zabbix-agent.yml zabbix.yml
как это работает?
у меня так не читает
ах
я кажись понял
include точно никак не сделать?

Yuri
24.02.2017
13:28:59
Может быть у тебя где-то еще переменные определены и они переопределяют то, что у тебя в group_vars?

Anatoly
24.02.2017
13:29:03

Yuri
24.02.2017
13:29:07
Зачем там инклуд вообще?

Sander
24.02.2017
13:29:08
кароче, вспомнил я
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/vars.yml"
есть какой-нибудь способ, подобие такого?
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/*.yml"
@sysVinit а у тебя есть разделение на stage и prod?
или ты только на prod выкладываешь сразу без тестов.

Dmitriy Varlamov
24.02.2017
13:39:17

Sander
24.02.2017
13:40:31
наверное это разработчики деплоят так? у нас хотели гит на продакшене запускать
@sysVinit gitlabci только используете или jenkins тоже пробовали? почему именно gitlabci?
то есть тестируешь еще, чтоб все команды в ansible работали

Google

Dmitriy Varlamov
24.02.2017
13:48:22
наверное это разработчики деплоят так? у нас хотели гит на продакшене запускать
Нее, оперейшенз)) я подконтрольные хосты/сервисы с рабочей машинки. У меня проли и поейбуки. Другой опс деплоит со своей рабочей машины цельными поейбуками. Мы наши роли / плейбуки храним в рпсовом гогсе. Третий опс хранит цельные плейбуки и запускает их в дженкинсе. Часть продуктов деплоятся из тар-архивов с артифактори, часть гитпуллом на целевой машине.
Но это дома.
А на работе тестов на роли не пишу, нет времени.


Sander
24.02.2017
13:53:30
понятно
Всем привет,
есть одна проблема, которую не могу решить.
Я использую 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
25.02.2017
00:29:09
Ты в одном плейбуке можешь несколько плеев сделать
- hosts: localhost
roles:
- myrole1
- hosts: host1
roles:
- myrole2
Работать будут по порядку

Admin
ERROR: S client not available

Albert
25.02.2017
00:31:59
Причем можно получить параметры из предыдущего плея:
hostvars['localhost']['myvar']

Sander
25.02.2017
00:34:41
только как это решает мою проблему? я же все равно не смогу получить данные из host_vars

Albert
25.02.2017
00:35:27
Получишь
Второй плей притащит данные для его хоста

Sander
25.02.2017
00:36:38
я плохо представляю как это работать будет
так как он начнет коннектиться к какому-нибудь серверу
так как hosts он игнорировать не может
так как все действия делаются только на localhost

Albert
25.02.2017
00:37:59
Тогда выставь delegate_to на плей

Google

Albert
25.02.2017
00:38:46
Не уверен что будет работать, но попробуй

Sander
25.02.2017
00:39:03
как я тебе на плей выставлю, delegate_to работает только на tasks
я на roles пробывал вешать и под хостом, это не работает
?


Dmitriy Varlamov
25.02.2017
15:12:11
Всем привет,
есть одна проблема, которую не могу решить.
Я использую 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
25.02.2017
15:14:42
не очень понял, что такое block? @sysVinit

Dmitriy Varlamov
25.02.2017
15:20:08
Можно таски обединять в блоки, а дегейтту уже к блоку применить.
http://docs.ansible.com/ansible/playbooks_blocks.html

Sander
25.02.2017
15:21:03
а на roles как-то можно сделать?
если указываю:
---
- hosts: "site.ee"
то он все равно будет долбиться на ip, который указан в inventories/stage/hosts
даже если я в блоках укажу delegate_to.
поэтому я сделал так:
- hosts: "localhost"
vars_files:
- "{{ inventory_dir }}/host_vars/{{ hosts_vars }}/vars.yml"
но это какой-то костыль.
@sysVinit

Magistr
25.02.2017
15:32:34

Sander
25.02.2017
15:34:54
не очень понял, а в чем разница?
у меня проблема в том что я не могу разделить файл 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
?

Serge
25.02.2017
15:43:38

Sander
25.02.2017
15:44:19
setup: false это куда вставтиь надо

Serge
25.02.2017
15:44:36

Sander
25.02.2017
15:45:10
---
- hosts: "localhost"
setup: false
?

Serge
25.02.2017
15:45:19

Sander
25.02.2017
15:45:28
так не работает

Serge
25.02.2017
15:45:41

Sander
25.02.2017
15:46:05
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