Denis 災 nobody
вопрос кто НЕ юзал? )
Denis
вопрос как сделать
Sergey
Да, я это слышал, уже, спасибо. С интересом посмотрю на питоновую реализацию этого же для ansible.
from hashlib import md5
class FilterModule(object):
def filters(self):
return {
'georgify': self.examplefilter,
}
def examplefilter(self, inp, start_port=0x0400, end_port=0xC000):
result = ''
target_range = end_port - start_port
source_range = 0x0FFFF
scale_factor = source_range / float(target_range)
if (start_port > 0x0FFFF) or (start_port < 0):
raise AnsibleFilterError('start_port should be between 0 and 65535')
if (end_port > 0xFFFF) or (end_port < 0):
raise AnsibleFilterError('end_port should be between 0 and 65535')
if end_port <= start_port:
raise AnsibleFilterError('end_port should be bigger than start_port')
if isinstance(inp, string_types):
m = int(floor(int(md5(inp).hexdigest()[-4:],16)/scale_factor) + start_port)
else:
raise AnsibleFilterError('Input value should have string type, now {}'.format(type(inp))
return m
George
Спасибо, я впечатлён. Почти так же компактно, как range(1000, 37272) | random(seed=item)
Sergey
Sergey
Вызывается, кстати, очень просто в минимальном варианте и с дефолтами:
"{{ item | georgify }}"
😃
kSandr
George
Не, спор был что лучше - написать на jinja/ansible или сразу всё бросать и начинать писать на питоне.
George
В примере выше нет баша, чистый ansible и jinja. В моём первом варианте было md5 с подстрокой, но SO подсказал, что random прям умеет seed из строки.
George
@kSandr, а где ты увидел сишные утилиты и баш? Ни один из примеров не делал exec'а.
kSandr
George
Это всё jinja2 с фильтрами ансибла. И даже первая версия (с md5 и подстроками) тоже была на чистой jinja.
kSandr
ну тогда действительно не вижу смысла пилить модуль )
George
Насчёт удовольствия от использования баша - тут я полностью согласен, ибо лучше в 10 раз больше на ЯП написать, чем один пайп потом разбирать.
Timur
Denis
обычный
Denis
в процессе плэйбука я дергаю томкат и мне надо получить его логи
Denis
Denis
а как ?
Denis
Timur
Файл с локалхоста - лукапом
Timur
С удаленного - slurp
Timur
Опять же - в чем конкретно задача? Что именно вы хотите добиться чтением файла?
Maxim
set_facts какой-нибудь, может быть?
Timur
При чем тут set_facts?
Maxim
при том, что исходя из логов, можно понять, что где-то поменялось и как поменялось?
George
George
В смысле, у тебя хэши будут разные. Или тебе нужно именно локально обеспечить их уникальность
George
Если будет random меняться (другие значения для того же сида) - это будет регрессия. Впрочем, обычная при апргейде с версии на версию у ансибла
George
Anonymous
Привет. Начал баловаться с Ansible, пытаюсь создать несколько раздел на диске, используя модуль parted.
Вот мой небольшой плейбук: http://ix.io/1RpZ
Проблема в том, что в конце таблица разделов получается не gpt, а msdos.
Если запихнуть label во второй таск, то тогда пропадает первый раздел, потому что таблица разделов пересоздается, видимо. За один таск можно создать только один раздел, если я правильно понял.
Как быть?
George
George
потом можно поискать примеры на гитхабе и почитать ишью
Anonymous
Да я вроде бы прочитал
George
например, есть такое https://github.com/ansible/ansible/issues/38594
George
это похоже прям точь-в-точь на твой кейс
Anonymous
George
если полная засада - то по идее можно вступить в сделку с совестью и заюзать shell/command
George
а потом уже отрефакторить на нормальные модули
George
и, да, когда что-то такое сломано постоянно - это нормально для такого сложного проекта как ансибл
Anonymous
Anonymous
это похоже прям точь-в-точь на твой кейс
«Ran into the same issue. Accidentally formatted my drives and removed all partitions. Repeating the existing label prevents it.»
Если повторить лейбл, то он создает два раздела по 512B
George
🤷♂️
Anonymous
Перезапустил QEMU, заработало
Anonymous
Подскажите пожалуйста, есть у кого-то примеры красивого стиля jinja шаблонов? Пробовал разные варианты с различными схемами отступов и все равно какашка какая-то выходит
Anonymous
И так ерунда, и так ерунда. оба варианта тяжело читаются
Anonymous
Anonymous
Anonymous
Timur
George
Timur
Anonymous
Спасибо, попробуем пожить с вторым вариантом тогда. Большая часть команды тоже к этому варианту склонна.
orginux
Подскажите, почему playbook не передает переменные в роль?
orginux
Ivan
а мне первый вариант нравится
orginux
Ошибка:
The error was: 'virtualenv_name' is undefined
Alexander
Как понять, какую версию Jinja2 использует ansible?
George
Системную. pip freeze или pip list сделай и посмотри. Или ты про что-то другое ?
Alexandr
Всем привет, у меня такой трабл : failed to transfer file to /root/.ansible/tmp/ansible-local-31036GGXwfN/tmp3uukXl syntax error (line 1 column 5)/AnsiballZ routeros command.py:\n\nscp error: : No such file or directory\n"} , я нашел багрепорты по такой же проблеме : https://github.com/ansible/ansible/issues/41808 https://github.com/ansible/ansible/pull/36755 https://github.com/StackStorm-Exchange/stackstorm-ansible/issues/25
Alexandr
все сводится к некоему :
Alexandr
pass those environment variables to ansible-local command:
ANSIBLE_LOCAL_TEMP=$HOME/.ansible/tmp
ANSIBLE_REMOTE_TEMP=$HOME/.ansible/tmp
Alexandr
что есть ансибл-локал комманд ?
Alexandr
я только ставлю его, так что легче не стало, трабл при коннекте к микротикам, винда и линух пинги выдают
⪓⚝⪔
плейбук покажите
Alexandr
GNU nano 2.3.1 Файл: test_data_get.yml
- name: Getting data from routers
hosts: routers
gather_facts: false
tasks:
- name: system command
routeros_command:
commands: /system routerboard print
register: system_print
- name: debug print
debug: var=system_print.stdout_lines
Alexandr
https://spw.ru/educate/articles/ispolzovanie-ansible/ взято отсюда в общем
Anonymous
По мне так выглядит круто.
У меня хуже смотрится.
Alexander
Можно ли запустить плейбук, не изменяя его, выставив между всеми тасками паузу?
Denis
--step one-step-at-a-time: confirm each task before running
Alexander
Alexander
Есть такой таск:
- name: Create directory with config
file:
path: "{{ ansible_config_location }}"
state: directory
owner: '{{ app_user }}'
group: '{{ app_user_group }}'
mode: u=rwx,g=rwx,o=r
Директория создается, но с правами drwxr-xr-x, а должно быть drwxrwxr-x
Alexander
И на этом моменте происходит фейл
Alexander
Руками папка создается нормально, права есть
Sergey