
jidckii
10.07.2018
08:45:54
господа подскажите, почему ансибл меняет кавычки и как этого избежать?
передаю env при деплое докер контейнера
и ансибл меняет " " на ' '
вход:
- name: Install consul in docker
include_role:
name: consul
vars:
consul_container_options:
recreate: "yes"
env:
CONSUL_BIND_INTERFACE: "eth1"
CONSUL_LOCAL_CONFIG: {
"skip_leave_on_interrupt": true
}
command: ["agent", "-server", "-bootstrap-expect=3", "-client=0.0.0.0"]
tags: ["consul"]

Google

jidckii
10.07.2018
08:47:26
выход :
docker inspect -f '{{ .Config.Env }}' consul
[CONSUL_LOCAL_CONFIG={'skip_leave_on_interrupt': True}
CONSUL_BIND_INTERFACE=eth1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CONSUL_VERSION=1.2.0
HASHICORP_RELEASES=https://releases.hashicorp.com]
так как по сути это JSON парсер ругается на не валидность и консул собственно не стартует

Sergey
10.07.2018
09:00:56
Так же, как и в названия ключей в словарях (фигурные скобки).

jidckii
10.07.2018
09:02:59
так а как правильно то сделать ?
что бы это
CONSUL_LOCAL_CONFIG: {
"skip_leave_on_interrupt": true
}
не превращалось в это
[CONSUL_LOCAL_CONFIG={'skip_leave_on_interrupt': True}

Sergey
10.07.2018
09:06:52
тебе нужен JSON - так об этом и скажи ансиблу, там же у Jinja есть фильтр специальный to_json

ShadoWalkeR
10.07.2018
10:13:58
Господа, нужна помощь. Ансиблом раскатывают хост. Часть пакетов ставится, часть нет через модуль apt. Ошибка всегда:
"dpkg: warning: 'ldconfig' not found in PATH or not executable",
"dpkg: warning: 'start-stop-daemon' not found in PATH or not executable",
"dpkg: error: 2 expected programs not found in PATH or not executable",
"Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin"
Сделал echo PATH там /sbin нет, но если я залогинюсь под собой и сделаю sudo - $PATH нормальный. Плейбук вызываю с ключом —become

cent
10.07.2018
10:15:39

ShadoWalkeR
10.07.2018
10:18:22

cent
10.07.2018
10:19:46

ShadoWalkeR
10.07.2018
10:20:15
Все установки в рамках одного плейбука выполняются

Sergey
10.07.2018
10:21:02

Google

ShadoWalkeR
10.07.2018
10:21:14
В том то и дело, что они есть

Sergey
10.07.2018
10:21:31

ShadoWalkeR
10.07.2018
10:21:52
И ldconfig и start-stop-daemon которые он найти не может

Sergey
10.07.2018
10:22:43
для того сочетания uid/gid/переменных окружения, которые получаются в момент установки пакета - не может.

Pavel
10.07.2018
10:35:04

Alexander
10.07.2018
11:08:34
Как описать джинжа шаблон,4 надо чтобы он вхял все файлы из директории, и в шаблон подставить первым словом имя этого файла, и чернз пробел содержимое файла. Список файлов я получаю и имя вывожу, не могу понять как рядом содержимое подставить

Sergey
10.07.2018
11:14:10

Alexander
10.07.2018
11:21:40

eucariot
10.07.2018
12:35:39
Привет.
Подскажите, в новом ansible 2.6 для коннекта к huawei какой использовать Connection?
network_cli требует указания OS, но Huawei там нет.
Local - пытается подконнектиться, как я понимаю, к хосту, но точно не лезе по ssh.

Sergey
10.07.2018
12:38:31

eucariot
10.07.2018
12:49:40


Vladimir
10.07.2018
15:41:22
привет, народ
помогите понять, как быть с шаблоном?
уменя используются хостварсы в которых параметры домена
один из параметров webroot чтобы указать нестандартный home для vhost-а
соответственно логика в шаблоне vhost-а
{% if "{{ item.webroot }}" %}
DocumentRoot /var/www/html/{{ item.webroot }}
{% else %}
DocumentRoot /var/www/html/default
{% endif %}
но не работает.
всегда отрабатывается первый вариант
в шаблонизатор отдается дикт
(item={u'webroot': None, u'email': u'alex@alch.com', u'name': u'lve'})
перепробованs варианты:
{% if "{{ item.webroot }}" is defined %}
{% if "{{ item.webroot }}" != '' %}
{% if "{{ item.webroot }}" != None %}
понятно что is defined проверяет переден ли такой параметр и предохраняет от отсутствия его, а как быть если он есть, но пустой?

Sergey
10.07.2018
15:46:11
не стоит заниматься странным: {{ item.webroot | default('default') }} вывозит

Vladimir
10.07.2018
15:46:54
и правдв странным ))
спасибо )

Sergey
10.07.2018
15:47:30

Vladimir
10.07.2018
15:53:31
а где подробно можно прочитать?
кажется оно считает что значение есть - подставляет пустое значение

Sergey
10.07.2018
15:55:55
Ну и да - у тебя не просто значение, а значение, хранящееся по ключу в словаре.
а, всё верно, туплю уже к вечеру.

Vladimir
10.07.2018
16:16:15
Не нашел подходящего ((

Google

Alex
10.07.2018
16:32:52
https://github.com/ansible/ansible/issues/7984

Vladimir
10.07.2018
17:49:48
все равно не работает
предлагается делать так:
{% if foo is defined and foo %}
но вот так не работает
{% if "{{ item.webroot }}" is defined and "{{ item.webroot }}" %}
(без кавычек вылетает с руганью на синтаксис)
fck....
убрал фигурные скобки из проверки, сработало
рабочий варик
{% if item.webroot is defined and item.webroot %}
DocumentRoot /var/www/html/{{ item.webroot }}
{% else %}
DocumentRoot /var/www/html/default
{% endif %}

Dmitry
10.07.2018
19:04:09

Alexander
11.07.2018
05:31:17

Vladimir
11.07.2018
06:30:02
в продолжение темы с отдельным web root folder
в шаблон запихано, отрабатывает
т.е. у меня для хоста есть хоствар
sites:
- email: mail.server.com
name: domain.name
webroot: web_folder
в таске проверяется так:
- name: Creating subdomain folders
file: path=/var/www/html/{{ item.webroot }} state=directory
with_items:
- "{{ sites }}"
when: item.webroot is defined
отрабатывает норм даже если вебрут есть, но пустой
создает только те у которых есть значение

ShadoWalkeR
11.07.2018
07:15:44
Господа, а как в переменной забэкслэшить спецсимволы?

Dovnar
11.07.2018
07:16:18
обратным слешем )
не понятен до конца вопрос

ShadoWalkeR
11.07.2018
07:17:14
Ну у меня есть переменная, в которую попадает символ !. Как мне его забэкслешить?

Alexander
11.07.2018
07:19:06
одинарные кавычки?

ShadoWalkeR
11.07.2018
07:19:18
Пробовал - не очень работает
Если добавляю \! то ансибл превращает это в \\!

eucariot
11.07.2018
07:38:28
А что делать, когда ансибл ргуается так:
"msg": "Could not find imported module support code for ce_command. Looked for either ComplexList.py or utils.py"

ShadoWalkeR
11.07.2018
07:56:47
Вот это дичь. Если на диске есть уже гит репозиторий то модуль гит с —check опцией падает с ошибкой. Если нет репозитория, то он отрабатывается ок. Без —check он отрабатывается независимо от наличия репозитория.
Логичный вывод что в режиме —check он не может делать update вместо clone...

inqfen
11.07.2018
09:45:40
всем привет
Глупый вопрос
Как в with_items list засунуть?

Google

Albert
11.07.2018
09:46:43
А ты ман по loop читал?

inqfen
11.07.2018
09:46:47
Типа
list: ['1', '2']
- name: test
shell: echo {{ item }}
with_items: {{ list }}

Robert
11.07.2018
09:46:53
with_items:
- {{ list }}

Albert
11.07.2018
09:47:06

inqfen
11.07.2018
09:47:13
о, внезапно
Спасибо
Это я от балды написал

Admin
ERROR: S client not available

Sergey
11.07.2018
10:08:19

Maksim
11.07.2018
12:18:46
Привет
Как вы относитесь к include в ролях ?

Artem
11.07.2018
12:18:59
Люблю

Maksim
11.07.2018
12:19:08
В чем прикол ?
Роль на подроли разделять ?

Artem
11.07.2018
12:19:24
Не люблю партянки

Сергей
11.07.2018
12:20:07
ну отдельны йдля редхата, от дельно для дебиана или другой вариант разделения

Maksim
11.07.2018
12:21:58
не совсем понимаю зачем люди мешают классический yaml и однострочные портянки
- name: Disable SELinux
selinux:
state: disabled
- name: disbale on firewalld on boot
service: name=firewalld enabled=no

Nklya
11.07.2018
12:22:41
потому что они не знают что это плохо

Vadim
11.07.2018
12:23:12
тяжелое наследие царского режима

Google

Dmitry
11.07.2018
12:43:42
копировали со stackoverflow

ShadoWalkeR
11.07.2018
12:44:32

Maksim
11.07.2018
12:44:32
да там много чего копировали как я понял

Dmitry
11.07.2018
12:45:28

Maksim
11.07.2018
12:45:54
так и появляюются девопсы

Alexander
11.07.2018
12:50:48
а я думал это все Чак Норрис

Artem
11.07.2018
12:51:44
доброго времени суток, а никто не знает способа динамической групировки хостов по назначеным на хост ансибл ролям? Официального способа не нашел. Как вариант- в роли делать кастомный факт и групировку по нему, но если потом убрать эту роль с хоста(плейбука)- факт не удалится и групировка жу ебудет неверной.

Max
11.07.2018
13:06:31
кто нибудь сталкивался с create_host_config() got an unexpected keyword argument 'init' в модуле docker_container ?

Vit
11.07.2018
14:17:10
А что насчёт
---
- name: Include OS-specific variables.
include_vars: "{{ ansible_os_family }}.yml"в начале роли. Ансибл 2.5 матерится, что мол
[DEPRECATION WARNING]: Specifying include variables at the top-level of the task is deprecated. Please see:
http://docs.ansible.com/ansible/playbooks_roles.html#task-include-files-and-encouraging-reuse for currently
supported syntax regarding included files and variables. This feature will be removed in version 2.7.
URL естественно невалидный, и в чём трабла / как исправить - не понятно

Nklya
11.07.2018
14:35:56
ну geerlingguy так же делает, значит это не сильно проблема
https://github.com/geerlingguy/ansible-role-awx/blob/master/tasks/main.yml

Ievgen
11.07.2018
14:37:25

No1
11.07.2018
14:37:47

Artem
11.07.2018
14:42:44

No1
11.07.2018
14:45:53
Есть примеры?
https://www.google.com/search?q=ansible+dynamic+inventory&oq=ansible+dyn&aqs=chrome.1.69i57j0j69i61j69i60j0l2.4401j0j7&sourceid=chrome&ie=UTF-8

Artem
11.07.2018
14:46:24

No1
11.07.2018
14:46:53
усложняете себе жизнь
вот что я понял из вопроса ?

Artem
11.07.2018
14:47:46
и не смогли пройти мимо и н еповые.... , а я к сожелению, не смог это "спокойно" воспринять)