Nikita
ну. так все это вроде есть в фактах
Data type of 'ansible_all_ipv4_addresses' is {{ ansible_interfaces }} могу просто греануть по eth* ?
Grek 🇺🇦
а если там ens а не eth? никто конечно не запрещает грепать, но раз уж взяли ансибл - сделайте его стредствами
George
А если не ens, а eno? Или кастомная фигня типа usbeth ?
Sergey
Потёр оффтоп.
Sergey
Запрет на некрофилию добавлю в правила.
Dmitry
Потёр оффтоп.
а я не могу понять, почему мой reply превратился в просто message
Dmitry
Запрет на некрофилию добавлю в правила.
это ты так шестнадцатую убунтучку!
Dmitry
ууууу
Sergey
Оно само (С)
Alex
это ты так шестнадцатую убунтучку!
у который EOL в 2024 если что )))
Sergey
@count0ru теперь сам и удаляй
Отделение Bereke Bank
У убунт EOL наступает в момент первого rc
Dmitry
я не понимаю о чем спор - нет питона? собери
Alex
не сыпь мне соль на рану ( с ) 😂😂😂
Alex
а то сейчас посоветуют обновиться до 8ки
Sergey
Сейчас уже с наибольшей вероятностью посоветуют RO, например, на недельку.
Sergey
Ну то есть пока ещё нет, но.....
Sergey
Iwan
Может у вас линк стоит не на тот самый питон? ll /usr/bin/python* lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python -> python2.7 lrwxrwxrwx 1 root root 9 Apr 16 2018 /usr/bin/python2 -> python2.7
Iwan
ну например на 3-й, и он по умолчанию пытается всё с 3-м запустить, и ломается
Iwan
у меня по началу также было через pip пытался. Пробовали наверное уже, удалять все пакеты pip uninstall docker docker-py docker-compose? И попробовать установить - install python-pip.
Iwan
Но у вас же в системе есть 3-й?
Iwan
# ansible -m ping -e all -i inventories -v [DEPRECATION WARNING]: Distribution Ubuntu 18.04 on host nsi-HOST should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible releases. nsi-db-test | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } # ansible -m ping -e 'ansible_python_interpreter=/usr/bin/python3' all -i inventories -v nsi-db-test | SUCCESS => { "changed": false, "ping": "pong" } nsi-db-test ~ # pip list | grep docker docker (4.2.0) dockerpty (0.4.1) nsi-db-test ~ # apt list | grep python-pip python-pip/bionic-security,bionic-updates,now 9.0.1-2.3~ubuntu1.18.04.2 all [installed] python-pip-whl/bionic-security,bionic-updates,now 9.0.1-2.3~ubuntu1.18.04.2 all [installed,automatic]
Iwan
у меня по умолчанию стоит 2 питон, но если говоришь ансиблу используй 3-й он использует его
Iwan
А у вас не может быть в ansible.cfg в репе указано, что-то типа этого? [defaults] interpreter_python = auto_silent
Iwan
Либо если у вас это запускает awx, может он каким-то образом вмешивается? Я с ним не работал правда - пальцем в небо )
Iwan
Vadim "Oxyd"
а как отфильтровать виртульные инфейсы ?
Вы это имеете ввиду? ansible localhost -m setup -a 'filter=ansible_virbr[0-9]' localhost | SUCCESS => { "ansible_facts": { "ansible_virbr0": { "active": false, "device": "virbr0", "id": "8000.525400d09714", "interfaces": [ "virbr0-nic" ], "ipv4": { "address": "192.168.122.1", "broadcast": "192.168.122.255", "netmask": "255.255.255.0", "network": "192.168.122.0" }, "macaddress": "52:54:00:d0:97:14", "mtu": 1500, "promisc": false, "speed": -1, "stp": true, "type": "bridge" } }, "changed": false }
John
Парни, как можно ограничить ансибл по использованию памяти? а то oomkiller его валит... плейбук не большой, но хостов оочень много
George
limit ?
George
сам ансибл ты не ограничишь - это же путон
George
Уменьшить forks
тоже вариант
John
на сколько? у меня сейчас дефолт прописан
George
https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html#setting-the-number-of-forks почитал
George
еще throttle есть ключ
George
на сколько? у меня сейчас дефолт прописан
от задачи зависит, вот посчитай сколько тебе реально нужно
John
задача пройти 1500 хостов. сериал = 150 форки - дефолт..
George
еще один самоубийца
Отделение Bereke Bank
John
4гб)
George
😳🙈
Отделение Bereke Bank
я помню когда запускал роль в которой много slurp и copy content у меня уже на 30 серверах отжиралось гигов 8 😂
Vlad
на сколько? у меня сейчас дефолт прописан
Defaults forks = 5 Оценить потребление памяти можно через /usr/bin/time
John
не получится) это awx в контейнере и запуск через веб-морду)
George
че-то ору
Отделение Bereke Bank
докинь памяти серверу
Dmitry
задача пройти 1500 хостов. сериал = 150 форки - дефолт..
скопируй плейбуки локально и запусти
Vadim "Oxyd"
да , только как вытащить связку интерфейс и мак
У меня один, поэтому и выдал один. Запросите со своего сервера где связка интерфейсов, полную выдачу, посмотрите что вам нужно отфильтровать и напишите нужные фильтры (-a 'filter=') Мак, кстати, в выдаче есть.
Vadim "Oxyd"
имел ввиду наоборот физические интерфейсы оставить
ansible localhost -m setup -a 'filter=ansible_eth[0-9]' localhost | SUCCESS => { "ansible_facts": { "ansible_eth0": { "active": false, "device": "eth0", "macaddress": "24:b6:fd:11:49:49", "module": "r8169", "mtu": 1500, "pciid": "0000:02:00.0", "promisc": false, "speed": -1, "type": "ether" } }, "changed": false }
Nikita
ansible localhost -m setup -a 'filter=ansible_eth[0-9]' localhost | SUCCESS => { "ansible_facts": { "ansible_eth0": { "active": false, "device": "eth0", "macaddress": "24:b6:fd:11:49:49", "module": "r8169", "mtu": 1500, "pciid": "0000:02:00.0", "promisc": false, "speed": -1, "type": "ether" } }, "changed": false }
--- - name: Ansible Variable Example Playbook hosts: all tasks: # display the variable data type - debug: msg: - " Data type of 'ansible_all_ipv4_addresses' is {{ ansible_interfaces }} " - " Data type of 'ansible_all_ipv4_addresses' is {{ ansible_enp7s0 }} " # Simply printing the value of fact which is Ansible UnSafe Text type # - debug: # msg: "{{ansible_default_ipv4.macaddress}}" # Accessing the Second Element of the list - debug: msg: "{{ansible_interfaces[1].macaddress}}" - debug: msg: "{{ansible_enp7s0.macaddress}}" - debug: msg: "{{ansible_enp8s0.macaddress}}"
Nikita
и стазу вытащить связку mac + имя интерфейса
Dees7
Уважаемые, а кто как дебажит j2 шаблоны? есть нормальный способ? или только online parser?
Mike
Привет, хз актуально или нет. Сегодня тоже столкнулся. Решение - поставить зависимости, сверху python2-pip,python-setuptools затем pip'ом поставить docker
Grek 🇺🇦
и стазу вытащить связку mac + имя интерфейса
что это значит? покажите как вы хотите это видеть?
Mike
Решение было, насколько я понял ранить ansible с интерпретатора 3го?
Nikita
что это значит? покажите как вы хотите это видеть?
1 таск получить связку mac + имя интерфеййса в петле 2. lineinfile: в петле path: /etc/udev/rules.d/70-persistent-ipoib.rules line: UBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="{{ hostvars[inventory_hostname].ansible_default_ipv4.macaddress }}", ATTR{type}=="1", NAME="{{ ansible_default_ipv4.i$ create: yes то есть все физические интерфейсы записать в udev/rules.d
Nikita
что это значит? покажите как вы хотите это видеть?
- name: print interfaces debug: msg: "{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}" теперь на эти интерфесы надо получить маки
Nikita
- debug: msg: "{{ansible_enp8s0.macaddress}}"
Nikita
то есть вывод записать в переменную и если использовать в циксле
Nikita
вот с этим проблема (
NM
не получится) это awx в контейнере и запуск через веб-морду)
Нафиг он в контейнере, ставить так и работает
George
Уважаемые, а кто как дебажит j2 шаблоны? есть нормальный способ? или только online parser?
в смысле? Вопрос похож на такой - а кто как дебажит SQL запросы
George
блин, беру и из головы пишу
George
если хочется - всегда можно шаблонизатор jinja прогнать, ну, и дебаг в ансиболи никто не отменял
Отделение Bereke Bank
Нафиг он в контейнере, ставить так и работает
раз в контейнере значит есть реджистри 😏
Dees7
в смысле? Вопрос похож на такой - а кто как дебажит SQL запросы
Ну вот у меня есть огромный json. и кусок шаблона. В какой то момент ансибл падает, типа ошибка в шаблоне. Как поймать что именно сломалось? сейчас приходится выцеплять какой json был. идити в онлайн парсер и там дебажить. но не удобно
NM
раз в контейнере значит есть реджистри 😏
Его ещё не было в контейнере когда я мучил редхатовцев с их Tower - один раз разберитесь с rpm awx и забудьте про контейнер - это версия для тех кто не умеет в пыхтон
Nikita
tasks: - name: print interfaces debug: msg: "{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}" - debug: msg: "{{ansible_enp8s0.macaddress}}" - name: Add a line to a file if the file does not exist, without passing regexp lineinfile: path: /etc/udev/rules.d/70-persistent-ipoib.rules line: UBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="{{ ansible_enp8s0.macaddress }}", ATTR{type}=="1", NAME="{{ ansible_interfaces | select('match', '^(enp)[0-9]+') | list }}" create: yes
hackru
Здарова, бандиты. ткните кто-нибудь носом в какой-нибудь навешиваемый поверх awx дашборд, чтобы он был ориентирован на состояние хостов, а не на состояние тасков. т.е. сейчас у меня awx на дашборде показывает состояние выполнения тасков, а я хочу видеть состояние всех хостов из плейбука в таске. есть такое?
Aleksey
что такие состояние хостов ?
hackru
что такие состояние хостов ?
всё хорошо если плейбук добежал на хосте, всё плохо, если не смог