inqfen
А, теперь понял о чем он
inqfen
Не помню точно про сворм, но скорее всего стек в лейблах
inqfen
То есть, если применишь без нужных лейблов - он их и удалит
Дмитрий
Всем привет. Подскажите, кто сталкивался с распутыванием башсибловой лапши, как это лучше делать? Достался большой инвентарь, в нём все узлы не поделены на группы никак и у себя в hostvars хранят кучу переменных, они постоянно повторяются. Ещё есть большое количество плейбуков, которые почти полностью написаны на башсибле (сам в ужасе), и они там туда-сюда по тегам вызываются. Если с инвентарём ещё понятно, аккуратно побить на группы и общие переменные в groupvars вынести, а вот как разгребать лапшу в плейбуках - не представляю. Возможно, проще будет переписать всё заново, но нужно понимание, что откуда торчит, где какие переменные используются, может есть какие-нибудь инструменты, которые в этом могут помочь или всё руками только разгребать?
Sergey
В теории тебе помогут ключи "--check --diff", они помогут при рефакторинге не сломать ничего на продакшне: ты будешь видеть все изменения, которые Ансибл собирается внести, но реально они вноситься не будут - по крайней мере, для core-модулей.
Alex
Всем привет. Подскажите, кто сталкивался с распутыванием башсибловой лапши, как это лучше делать? Достался большой инвентарь, в нём все узлы не поделены на группы никак и у себя в hostvars хранят кучу переменных, они постоянно повторяются. Ещё есть большое количество плейбуков, которые почти полностью написаны на башсибле (сам в ужасе), и они там туда-сюда по тегам вызываются. Если с инвентарём ещё понятно, аккуратно побить на группы и общие переменные в groupvars вынести, а вот как разгребать лапшу в плейбуках - не представляю. Возможно, проще будет переписать всё заново, но нужно понимание, что откуда торчит, где какие переменные используются, может есть какие-нибудь инструменты, которые в этом могут помочь или всё руками только разгребать?
а в чем проблема разгребать башсибл? Берешь таск за таском и мигрируешь на соотв модули
Дмитрий
а в чем проблема разгребать башсибл? Берешь таск за таском и мигрируешь на соотв модули
В том, чтобы не сломать ничего из-за того, что модуль не делает того, что делает команда в shell/command, особенно учитывая тот факт, что там херова гора переменных у каждого хоста, которые туда подставляются.
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
для него нет модуля, насколько я помню
Дмитрий
Я на этот ужас уже месяц смотрю и хочу переделать, а всё никак не могу найти как этой гидре начать головы прижигать
Alex
У ансибл есть docker connection plugin
Run commands or put/fetch files to an existing docker container. это немного не то
Alex
И не надо
аналог в студию
Vlad
Run commands or put/fetch files to an existing docker container. это немного не то
Это как раз прямая замена для docker exec
Alex
Это как раз прямая замена для docker exec
https://docs.ansible.com/ansible/latest/plugins/connection/docker.html речь о нем?
Vlad
Мы писали плейбуки и просто заменой connection plugin запускали как одно и то-же и на сервере и в контейнере
inqfen
Ну как бы вообще в идеологии докера если надо выполнить команду - поднимаешь второй контейнер, выполняешь команду, контейнер завершается
Vlad
Ну как бы вообще в идеологии докера если надо выполнить команду - поднимаешь второй контейнер, выполняешь команду, контейнер завершается
Виртуалку долго поднимать, а контейнер стартует быстро. Просто быстрый способ прогнать тесты и ничего более.
Vlad
Надо протестировать плейбук. Это можно сделать в виртуалке или где-то ещё
Дмитрий
Ну вот я тоже думаю, что проще будет переписать с нуля, но я чёт даже концов найти не могу, откуда это начать переписывать, надо же понять как этот монстр работает. Была бы на него хоть какая-то документация, было бы проще, а так нужно ковырять всё и сразу
Дмитрий
Был бы какой-нибудь транслятор плейбуков в документацию, было бы круто. Он же декларативный, парсишь плейбук и помодульно по шагам расписываешь, что происходит
inqfen
Vlad
Контейнер можно использовать как замену виртуалки, запустить там systemd и т.д.
Alex
Смотря какие цели ставятся
не важно - это идеология докер
Alex
один контйнер - один процесс, а всякие supervisord и т.п. это уже костыли
Vlad
Да все равно на идеологию, ansible позволяет идемпотентно выполнять задачи как по ssh так и в контейнере.
Отделение Bereke Bank
и как это связанно с докер и systemd?
Если у тебя таски используют системд - твой образ для молекулы должен уметь в системд Наверное об этом речь
Svyatoslav
Привет! Подскажите по условию when: '"grouphost" in group_names', если мне необходимо условие по частичному имени хоста? Как сделать?
A
Здравствуйте, подскажите плз: Выполняю таску, получаю вывод вида: "word1" "word2" "word3" ... "wordXX" Как мне потом выполнить следующую таску для каждого word или для каждого, кроме первого?
Alex
https://pastebin.com/rLn0EnPz а сталкивался кто? Уже проверил все yml файлы на non ascii символы - все нормально, нигде их нет
977
Как исправить?
Sergey
UglyKoyote
для начала show clock подвинь
Sergey
Как исправить?
Скриншоты из чата убрать :-)
Николай
Отличные скриншоты, красивые. И ямл кривой.
Николай
Как исправить?
Попробуй почитать https://docs.ansible.com/ansible/latest/modules/ios_command_module.html
Sergey
поправил
👍🙏🏻
Sergey
977 если что - я вообще не пошутил.
Николай
поправил
По этому тексту никто ничего не посоветует (ну хз, может, телепаты есть). Нужен таск (вероятно, и плейбук)
977
Коллеги что не так с show clock?
UglyKoyote
поэтому ансибл и не понимает что от него хотят
Sergey
поправил
У тебя питон 3.5 + юникод где-то в файле (=беда).
A
https://pastebin.com/rLn0EnPz а сталкивался кто? Уже проверил все yml файлы на non ascii символы - все нормально, нигде их нет
Предположу, что это связано с кодировкой и питоном 2.7 vs 3. Если есть самописный модуль, можно попробовать указать вверху # encoding=utf8
Alex
По этому тексту никто ничего не посоветует (ну хз, может, телепаты есть). Нужен таск (вероятно, и плейбук)
таск элементарный - создание пользователя - name: Ensure user yarx exists become: yes user: uid: "{{ jfxr_default_uid }}" name: "{{ jfxr_default_user }}" group: "{{ jfxr_default_group }}" create_home: yes home: "{{ jfxr_product_home }}" shell: /bin/bash state: present
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
Коллеги кто за финансовую плату может помочь?
Alex
У тебя питон 3.5 + юникод где-то в файле (=беда).
а разве питон не поддерживает юникод? А как найти где именно проблема? Ибо возникает только на этом одном таске
Sergey
@Lex_hha Дык ещё раз: символ с2 прямо таки кричит о том, что там Юникод, который не может быть разобран кодеком ascii (и это правда!)
Alex
и в этом листинге у тебя gid, а в таске - uid. Чё-то странное. Кажется, листинг -vvv не его.
ошибся, перед создание пользователя идет вызов создания группы и там все ок
Alex
хотя по сути почти все те же параметры
Николай
а откуда он берется? Я ведь проверил все файлы на наличие non ascii симолов
Ну у тебя либо переменные в таске юзера раскрываются во что-то чудовищное (проверь, поставив вызов модуля debug перед падающим таском), то ли ещё какой стук подземный
Sergey
а откуда он берется? Я ведь проверил все файлы на наличие non ascii симолов
Собственно, в выхлопе есть, как узнать: запусти с тремя v
Alex
но jfxr_product_home в vars определен как строка
Svyatoslav
regex
Спасибо!
Sergey
но jfxr_product_home в vars определен как строка
Видимо, как-то не очень хорошо этот jfxr_product_home определён?
Alex
Видимо, как-то не очень хорошо этот jfxr_product_home определён?
$ cat playbooks/group_vars/all/variables.yml | grep jfxr_prod jfxr_product_home: "/home/yarx"
Sergey
$ cat playbooks/group_vars/all/variables.yml | grep jfxr_prod jfxr_product_home: "/home/yarx"
Окай, а вот это откуда? https://t.me/pro_ansible/150837
Alex
Это я добавил debug переменных, которые я передаю в модуль user
Николай
и кто из них кто? Там 2 таска дебага