Nikolay
Точно. Вот это я и проглядел. Хотя в прошлом плейбуке не прошляпил и создал подпапки tsksk. Спасибо.
Nikolay
а чтобы скопировать полностью папку с ансибл-хоста на удаленный хост, надо использовать synchronize?
Artem
Или copy
🇷🇺 Роман
всем привет! столкнулся с вопросом при написании шаблона ansible...
есть список вида:
my_list:
- element 1
- element {{ var1 }}
- element {{ var2 }}:
- subel1
- subel2
пытаюсь его распарсить в шаблоне:
{% macro config(parameters, indent = 0) %}
{% for parameter in parameters %}
{% if parameter is string -%}
{{ parameter|indent(indent, true) }}
{% elif parameter is mapping %}
{% for parameter_key, parameter_value in parameter.iteritems() -%}
{{ '<'|string|indent(indent, true) }}{{ parameter_key }}{{ '>\n' -}}
{{ config(parameter_value, indent + 8) }}
{{- '</'|string|indent(indent, true) }}{{ parameter_key|string|regex_replace('^([a-zA-Z]+)( .*)?','\\1') }}{{ '>\n' }}
{% endfor %}
{% endif %}
{% endfor %}
{% endmacro %}
в строке
{{ '<'|string|indent(indent, true) }}{{ parameter_key }}{{ '>\n' -}}
не раскрывается переменная {{ var2 }}, выводится просто текстом вместе с фигурными скобками
у меня не получается написать шаблон таким образом, чтобы эта переменная {{ var2 }} была воспринята как переменная
может кто подскажет чего?
Nikolay
Или copy
copy сожрал всю память и весь swap 0_о
Artem
Зачит что-то не так делаешь, копи через sftp/scp работает, и как оно может вожрать всю память я с трудом представляю
Nikolay
вот эту папку пытаюсь скопировать
Nikolay
может лучше ее в архив, а потом копи вызывать? а на месте уже разархивировать
Nikolay
в общем копи не выжил
"ERROR! A worker was found in a dead state"
🇷🇺 Роман
Andrey
Nikolay
уже через synchronize сделал. всё скопировалось 👍
Konstantin
Dmitry
парни, а есть по солту чят?
Denis 災 nobody
Этот был. Первого апреля.
Dmitry
а спрошу тут - один хер джинджа и ямль
Dmitry
targets:
host13:
checks:
- icmp
- node
- ports:
- 80
- 22
Dmitry
есть такой ямль
Dmitry
и нужно его распарсить джинжой, чтобы сунуть в другой ямль только в другом виде
Dmitry
и все нормально парсится-разбирается
Dmitry
пока я не упираюсь в
- ports:
- 80
- 22
Sergey
пока я не упираюсь в
- ports:
- 80
- 22
хитрая вещь - элемент списка, являющийся словарём с одним ключом, по которому лежит список 😊)))
похоже, что месье любит боль и унижение.
а какая задача изначально стоит по парсингу этой псевдорадости?
Dmitry
ну надо сделать удобный конфиг для того чтобы генерить не очень удобный конфиг
Dmitry
{% for check in ["https", "node", "http", "icmp", "ports"] %}
- targets:
{%- for host, properties in pillar.get('targets', {}).iteritems() -%}
{% if check in properties["checks"] -%}
{% if check == 'node' %}
- {{ host }}:9100
- {{ host }}:9126
{%- elif check is iterable %}
blahblah
{%- else %}
- {{ host }}
{%- endif %}
{%- endif -%}
{%- endfor -%}
{% endfor %}
Dmitry
вот как то так сейчас
Sergey
что ломается?
Dmitry
да ничего не ломается, просто в итерации с ports пусто
Dmitry
пробовал {%- elif 'ports' in check %}
Dmitry
тоже не едет
Sergey
я бы при отладке такой конструкции попробовал проверить работу условных блоков
Sergey
ну и dict - вовсе не iterable
Dmitry
я думаю что {% if check in properties["checks"] -%} тут просто не отрабатывает
Sergey
отрабатывает, но не тем способом 😊 напиши {% else %} блоки для if-ов, результат обещает быть интересным
Dmitry
{'checks': ['icmp', 'node', {'ports': [80, 22]}]}
Dmitry
вот что в пропертис кстати
Sergey
я ж тебе так и сказал - портс это словарь (dict или hash)
Sergey
туплю
Sergey
не портс - словарь, а тртий элемент списка - словарь с единственным ключом "портс", значением которого является список
Sergey
так что там пригодится вот эта проверка - http://jinja.pocoo.org/docs/2.9/templates/#mapping
Sergey
и дальше уже внутри этого словаря проходить циклом по парам "ключ-значение"
Anonymous
Вечер добрый. Парни, почему when: ansible_distribution_version не отрабатывает?
Dmitry
Anonymous
Имею вот такую конструкцию:
- name: Copy the binary file (CentOS 7).
copy:
src: binfile_7
dest: /bin/binfile
mode: 0755
when: ansible_distribution_version >= 7
- name: Copy the binary file (CentOS 6).
copy:
src: binfile_6
dest: /bin/binfile
mode: 0755
when: ansible_distribution_version < 7
Dmitry
targets:
host13:
checks:
- icmp
- node
ports:
- 80
- 22
Sergey
Sergey
Anonymous
о как. Спасибо
Sergey
Anonymous
вроде не первый день с ансиблом работаю, а это шаманство ненужно было)
Sergey
а помогло?
Sergey
дока говорит, что этот фильтр ещё с 1.6 существует
Anonymous
сделал изящней
Anonymous
- name: Copy the binary file.
copy:
src: binfile_{{ ansible_distribution_major_version }}
dest: /bin/binfile
mode: 0755
Sergey
а, ну тож годно. только LFHS не соответствует 😞... если хочется красиво - "/opt/provider_name/application_name/bin/binfile" в тренде
Anonymous
а почему не /usr/local/bin вроде тоже подходит)
Anonymous
Потому что там обычно бардак
Aleksey
Ilya
Приветствую!
Ilya
Это нормально что команды которые на выходе дают много строчек инфы не "пролезают" через анзибль? Например: show interfaces fe-0/0/7.0 работает, а show interfaces fe-0/0/7, которая выдает на пару десятков строк больше 0 нет.
Ilya
Alf 🙀
Nikolay
У меня ansible 2.2.1.0
show run забирает нормально
Ilya
Nikolay
Это при запуске ansible? Как вы его ставили?
Anonymous
git clone наверно.
Ilya
Ilya
при выполнении плейбука
Ilya
вот собственно сам бук
Ilya
Ilya
подозреваю, что нет каких-то зависимостей Питона, либо система не может их найти, получается
Nikolay
Я тоже так думаю. Я ставил через pip, он всё нужно всасывает
Ilya
Ilya
Nikolay
Да
Ilya
странно, делал то же самое...
Alf 🙀
Alf 🙀
окей