Николай
Значит, что надо посмотреть в stdout/stderr for the exact error
Wadik
А , все разобрался
Wadik
Shared connection to closed
Wadik
Не , не разобрался
Wadik
"module_stdout": "Traceback (most recent call last):\r\n File \"/root/.ansible/tmp/ansible-tmp-1592213611.491804-41769013549783/AnsiballZ_lineinfile.py\", line 113, in <module>\r\n _ansiballz_main()\r\n File \"/root/.ansible/tmp/ansible-tmp-1592213611.491804-41769013549783/AnsiballZ_lineinfile.py\", line 105, in _ansiballz_main\r\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n File \"/root/.ansible/tmp/ansible-tmp-1592213611.491804-41769013549783/AnsiballZ_lineinfile.py\", line 48, in invoke_module\r\n imp.load_module('main', mod, module, MOD_DESC)\r\n File \"/tmp/ansible_lineinfile_payload_JMmeoI/main.py\", line 524, in <module>\r\n File \"/tmp/ansible_lineinfile_payload_JMmeoI/main.py\", line 515, in main\r\n File \"/tmp/ansible_lineinfile_payload_JMmeoI/main.py\", line 264, in present\r\n File \"/usr/lib/python2.7/re.py\", line 194, in compile\r\n return _compile(pattern, flags)\r\n File \"/usr/lib/python2.7/re.py\", line 251, in _compile\r\n raise error, v # invalid expression\r\nsre_constants.error: bad character range\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1
Wadik
что это вообще может значить
Mista
Что нужно простыню закинуть на pastebin
Wadik
https://pastebin.com/4rTp7pw2
Mista
Похоже где-то неэкранируемые спец символы
Mista
Вот парсер и улетает
Wadik
https://pastebin.com/8tPLtgZd
Wadik
вот такой у меня плэйбуук
Wadik
вроде верно, но это не точно
Alex
fatal: [app_slave]: FAILED! => changed=false attempts: 5 msg: The Python 2 bindings for rpm are needed for this module. If you require Python 3 support use the `dnf` Ansible module instead.. The Python 2 yum module is needed for this module. If you require Python 3 support use the `dnf` Ansible module instead. ...ignoring подскажите, а как лечить при использовании python3. Получаю такую ошибку на CentOS 7
Alex
замена yum на dnf ничего не дала
Alex
fatal: [app_slave]: FAILED! => changed=false msg: attempts: 5 changed: false cmd: dnf install -y python3-dnf failed: true msg: '[Errno 2] No such file or directory: b''dnf'': b''dnf''' rc: 2
Alex
а у вас dnf установлен?
fatal: [app_slave]: FAILED! => changed=false msg: attempts: 5 changed: false cmd: dnf install -y python3-dnf failed: true msg: Could not import the dnf python module using /usr/bin/python3 (3.6.8 (default, Apr 2 2020, 13:34:55) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]). Please install `python3-dnf` package or ensure you have specified the correct ansible_python_interpreter. rc: 1 results: [] stderr: |- Error: Unable to find a match: python3-dnf stderr_lines: - 'Error: Unable to find a match: python3-dnf' stdout: |- Last metadata expiration check: 0:02:06 ago on Mon Jun 15 10:35:06 2020. No match for argument: python3-dnf stdout_lines: - 'Last metadata expiration check: 0:02:06 ago on Mon Jun 15 10:35:06 2020.' - 'No match for argument: python3-dnf'
Anastasia
python3-dnf надо поставить перед этим
там замкнутый круг, без одного не поставить другого
Anastasia
yum не работает на python3, а без yum не установить пакеты для dnf
Michael
Мэй би shell?!
Michael
Или package?
Michael
Мэй би shell?!
Установить
Michael
Или package?
Задействует то что можно задействовать
Michael
Костыль, но должно сработать
Michael
/usr/bin/python3
Куда ссылается?
Alex
yum не работает на python3, а без yum не установить пакеты для dnf
угу, все пичально - https://github.com/ansible/ansible/issues/67083
Alex
Куда ссылается?
# ls -lad /usr/bin/python3 lrwxrwxrwx. 1 root root 9 Jun 15 09:55 /usr/bin/python3 -> python3.6
Michael
Или package?
Должно помочь
Wadik
Подскажите можно ли как то через lineinfile добавить строку использую $HOSTNAME ?
Андрей
Подскажите можно ли как то через lineinfile добавить строку использую $HOSTNAME ?
тебе файл хостс формировать из инвентори задача?
Alex
просто тут многие тыкали. что python2 мертвый не юзай его, все пацаны уже на 3м
Alex
а оно не все так гладко )))
Gleb
с 7 центосом весело вообще
Gleb
и 3 питоном
Wadik
тебе файл хостс формировать из инвентори задача?
Я хочу в файлик на разных хостах добавить строку с именем этого хоста
Андрей
Я хочу в файлик на разных хостах добавить строку с именем этого хоста
lineinfile: path: "/etc/hosts" regexp: ".*\t{{ hostvars[item]['ansible_hostname']}}\t{{ hostvars[item]['ansible_hostname']}}" line: "{{ hostvars[item]['ansible_env'].SSH_CONNECTION.split(' ')[2] }}\t{{ hostvars[item]['ansible_hostname']}}\t{{ hostvars[item]['ansible_hostname']}}" state: present backup: yes я делаю так, но это для hosts
Андрей
думаю под твои цели тоже сойдет)
Alex
Должно помочь
не помогает fatal: [app_master]: FAILED! => changed=false attempts: 5 msg: The Python 2 bindings for rpm are needed for this module. If you require Python 3 support use the `dnf` Ansible module instead.. The Python 2 yum module is needed for this module. If you require Python 3 support use the `dnf` Ansible module instead. ...ignoring
Alex
в данный момент - нет, но в январе 2021 он будет дропнут, так что начинаем переход на 3ку
Anastasia
в данный момент - нет, но в январе 2021 он будет дропнут, так что начинаем переход на 3ку
ближайшее адекватное решение, которое вижу - установить нужные пакеты для dnf через python2, а дальше работать через python3\dnf. Но почему-то мне кажется, что должно быть другое решение, может, более знающие люди помогут
Alex
для 2го питона есть пакет python2-dnf, а вот для 3го нет
Gleb
можно для конкретного таска переопределять версию питона
Gleb
я вообще ничего адекватного не придумал если хочешь 3 питон юзать
Gleb
для центос 7
Gleb
- name: install docker pip packages pip: name: "{{ docker_pip_packages }}" state: present executable: /usr/bin/pip3 вот такая дичь завелась из-за этого
Gleb
для pip понятно, а как быть с yum/dnf?
ну я ничего кроме environment: ansible_python_interpreter= не придумал
Gleb
вообще у редхата должно быть решение
Gleb
надо его найти только, если его нет - это будет очень странно
Gleb
ну оракл еще
Gleb
и сцаентифик
Gleb
все бейсд
Gleb
на 8 все отлично
Full
Народ, нид хелп, чет я вообще потерялся: Таска: - name: Add Users user: name: '{{ item.user }}' password: '{{ item.pass }}' groups: '{{ item.groups | default(omit) }}' append: true state: present loop: '{{ users }}' become: true Скипается с сообщением: "skip_reason": "Conditional result was False" О каком условии он мне тут?
Full
Отбой тревоги. Да, все так, уровнем выше. Я условие убрал, а запушить изменения забыл.
Full
Едем дальше. Хочу скипать таску, если password отсутствует, или пустой. Пробовал так: - name: Add Users user: name: '{{ item.user }}' password: '{{ item.pass }}' loop: '{{ users }}' when: - users is defined - item.pass is defined - item.pass | length Обламывается с ошибкой: object of type 'NoneType' has no len() Нуок, убираем item.pass | length - теперь юзеров с пустым паролем добавляет. Как бы еще проверить, что переменная пустая?
Full
The conditional check 'item.pass | length > 0' failed
Full
Пункт, на котором фейлится: - user: user2 pass: groups: - adm - sudo При вызове модуля там pass: none
Full
Хм, пошел смотреть.
Lamobot
Хм, пошел смотреть.
Ну и непонятно, почему не сделать с паролем тоже default(omit) ?
Full
Чтоб не создавать юзеров с пустыми паролями.
Full
Зачем условия? Попробуйте: '{{ users|selectattr("pass", "defined")|rejectattr("pass","equalto","")|list }}'
Так не скипает. А вот так - скипает как надо: {{ users|selectattr("pass", "defined")|rejectattr("pass","equalto", none)|list }} Спасибо.
Full
Не, ну так закономерно все хорошо. Тут можно просто условие расширить, еще один rejectattr добавить.
Lamobot
Не, ну так закономерно все хорошо. Тут можно просто условие расширить, еще один rejectattr добавить.
И ещё у default есть второй параметр https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#defaulting-undefined-variables
Full
Мне кажется, он тут не пригодится. Там же написано, что false or an empty string, а у меня - None.
Anton
Ребят привет. А есть у кого рабочий плейбук с установкой докер-композ. У меня чет фейлиться