inqfen
А, теперь понял о чем он
inqfen
Не помню точно про сворм, но скорее всего стек в лейблах
inqfen
То есть, если применишь без нужных лейблов - он их и удалит
Дмитрий
Всем привет. Подскажите, кто сталкивался с распутыванием башсибловой лапши, как это лучше делать?
Достался большой инвентарь, в нём все узлы не поделены на группы никак и у себя в hostvars хранят кучу переменных, они постоянно повторяются. Ещё есть большое количество плейбуков, которые почти полностью написаны на башсибле (сам в ужасе), и они там туда-сюда по тегам вызываются.
Если с инвентарём ещё понятно, аккуратно побить на группы и общие переменные в groupvars вынести, а вот как разгребать лапшу в плейбуках - не представляю.
Возможно, проще будет переписать всё заново, но нужно понимание, что откуда торчит, где какие переменные используются, может есть какие-нибудь инструменты, которые в этом могут помочь или всё руками только разгребать?
Sergey
В теории тебе помогут ключи "--check --diff", они помогут при рефакторинге не сломать ничего на продакшне: ты будешь видеть все изменения, которые Ансибл собирается внести, но реально они вноситься не будут - по крайней мере, для core-модулей.
Alex
Всем привет. Подскажите, кто сталкивался с распутыванием башсибловой лапши, как это лучше делать?
Достался большой инвентарь, в нём все узлы не поделены на группы никак и у себя в hostvars хранят кучу переменных, они постоянно повторяются. Ещё есть большое количество плейбуков, которые почти полностью написаны на башсибле (сам в ужасе), и они там туда-сюда по тегам вызываются.
Если с инвентарём ещё понятно, аккуратно побить на группы и общие переменные в groupvars вынести, а вот как разгребать лапшу в плейбуках - не представляю.
Возможно, проще будет переписать всё заново, но нужно понимание, что откуда торчит, где какие переменные используются, может есть какие-нибудь инструменты, которые в этом могут помочь или всё руками только разгребать?
а в чем проблема разгребать башсибл? Берешь таск за таском и мигрируешь на соотв модули
Andrey
Alex
ну просто не менять все таски с command/shell сразу а по одному
Alex
в bashсиблах можно включить -x чтобы быть точно уверенным, что именно делает данный скрипт
Дмитрий
Когда у тебя вот такое:
- shell: >
apt-get update;
apt-get dist-upgrade -y;
apt-get install -y gnupg ntp ntpdate python-minimal lsb-release rsync sudo mc apt-transport-https parted htop openvpn iotop resolvconf curl bzip2 supervisor tcpdump ca-certificates software-properties-common
args:
executable: /bin/bash
ignore_errors: yes
это одно, это можно безболезненно переделать
А когда вот так:
- name: 'Получаем версию релиза'
shell: >
docker exec -i {{ docker_container_name_dispatcher.stdout }}
sh -c 'cat {{ item[0] }}/protected/config/version.php | grep return | awk "{print $2}" | cut -d\" -f2'
register: version_list
args:
executable: /bin/bash
loop: "{{ dict_domains_list }}"
То становится страшно такое трогать
Alex
а докер exeс ты особо не автоматизируешь 😉
Alex
для него нет модуля, насколько я помню
Vlad
Дмитрий
Я на этот ужас уже месяц смотрю и хочу переделать, а всё никак не могу найти как этой гидре начать головы прижигать
inqfen
Vlad
Vlad
Мы писали плейбуки и просто заменой connection plugin запускали как одно и то-же и на сервере и в контейнере
inqfen
Ну как бы вообще в идеологии докера если надо выполнить команду - поднимаешь второй контейнер, выполняешь команду, контейнер завершается
Alex
Vlad
inqfen
Vlad
Надо протестировать плейбук. Это можно сделать в виртуалке или где-то ещё
Дмитрий
Ну вот я тоже думаю, что проще будет переписать с нуля, но я чёт даже концов найти не могу, откуда это начать переписывать, надо же понять как этот монстр работает. Была бы на него хоть какая-то документация, было бы проще, а так нужно ковырять всё и сразу
Дмитрий
Был бы какой-нибудь транслятор плейбуков в документацию, было бы круто. Он же декларативный, парсишь плейбук и помодульно по шагам расписываешь, что происходит
inqfen
Vlad
Контейнер можно использовать как замену виртуалки, запустить там systemd и т.д.
Alex
Alex
Vlad
Alex
один контйнер - один процесс, а всякие supervisord и т.п. это уже костыли
Vlad
Да все равно на идеологию, ansible позволяет идемпотентно выполнять задачи как по ssh так и в контейнере.
Alex
Svyatoslav
Привет! Подскажите по условию when: '"grouphost" in group_names', если мне необходимо условие по частичному имени хоста? Как сделать?
Alex
A
Здравствуйте, подскажите плз: Выполняю таску, получаю вывод вида:
"word1" "word2" "word3" ... "wordXX"
Как мне потом выполнить следующую таску для каждого word или для каждого, кроме первого?
Alex
Alex
https://pastebin.com/rLn0EnPz
а сталкивался кто? Уже проверил все yml файлы на non ascii символы - все нормально, нигде их нет
977
Как исправить?
Sergey
UglyKoyote
для начала show clock подвинь
Николай
Отличные скриншоты, красивые. И ямл кривой.
Николай
Как исправить?
Попробуй почитать https://docs.ansible.com/ansible/latest/modules/ios_command_module.html
Alex
Sergey
Sergey
977 если что - я вообще не пошутил.
Николай
поправил
По этому тексту никто ничего не посоветует (ну хз, может, телепаты есть). Нужен таск (вероятно, и плейбук)
977
Коллеги что не так с show clock?
UglyKoyote
UglyKoyote
поэтому ансибл и не понимает что от него хотят
Sergey
поправил
У тебя питон 3.5 + юникод где-то в файле (=беда).
Alex
самописанных модулей нет
Alex
питон на обоих машинах 3.х
Alex
вот так он вызывается с -vvv
changed: [app_master] => changed=true
gid: 2020
invocation:
module_args:
gid: 2020
local: false
name: yarx
non_unique: false
state: present
system: false
name: yarx
state: present
system: false
977
Коллеги кто за финансовую плату может помочь?
Николай
Sergey
@Lex_hha Дык ещё раз: символ с2 прямо таки кричит о том, что там Юникод, который не может быть разобран кодеком ascii (и это правда!)
Николай
Alex
Alex
хотя по сути почти все те же параметры
Alex
Sergey
Alex
но jfxr_product_home в vars определен как строка
Svyatoslav
Sergey
Alex
Это я добавил debug переменных, которые я передаю в модуль user
Николай
и кто из них кто? Там 2 таска дебага