@pro_ansible

Страница 155 из 625
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
Собственно, group_vars - переменные для групп, которые описаны в инвентори...
человек хочет разбить на логические состовляющие

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
мне так удобней, у меня основные конфиги в одном файле, для пхп в другом

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
@sysVinit если вас не затруднит, скажите как
у меня на каждое окружение отдельный инвентори вот листинг директорий http://pastebin.com/H7zBxYF4

никаких инклудов не надо

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
@sysVinit а у тебя есть разделение на stage и prod? или ты только на prod выкладываешь сразу без тестов.
Это домашняя лаба. Конфигурятся сервисы для неё. Роли тестируются в gitlabci, сначала ansible-review, потом раскатываются на котейнерах с целевыми ос. А на работе с управлением конфигурацией треш, угар и содомия, каждый конфигурит и деплоит, как ему по душе.

Sander
24.02.2017
13:40:31
наверное это разработчики деплоят так? у нас хотели гит на продакшене запускать

@sysVinit gitlabci только используете или jenkins тоже пробовали? почему именно gitlabci?

то есть тестируешь еще, чтоб все команды в ansible работали

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

то есть тестируешь еще, чтоб все команды в ansible работали
Да, роли тестируются, и синтаксис и корректная работа.

Но это дома.

А на работе тестов на роли не пишу, нет времени.

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

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

?

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

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

Страница 155 из 625