Sergey
task такой: lineinfile: dest: file.conf regexp: '^#? ?{{ item.option }} =' line: '{{ item.option }} = "{{ item.value }}"' with_flattened: - "{{ file_ini }}" variable: file_ini: - option: qq value: "33;45" Ошибка: The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'option Подскажите - как можно исправить
Sergey
если поменять на loop, то выдает ошибку: The error was: 'list object' has no attribute 'option
Timur
Просто loop:
Timur
И без дефиса в начале
Lamobot
если поменять на loop, то выдает ошибку: The error was: 'list object' has no attribute 'option
Вот так изменить переменную попробуй file_ini: - {option: "qq", value: "33;45"}
Sergey
в одну строку тоже самое. Как я понимаю - нужно как-то заэкранировать ; или само здачение в поле value
Sergey
в defaults, это роль
Lamobot
в defaults, это роль
У тебя где-то ошибка в другом месте. Или file_ini не подхватывается из defaults или ещё что-то. Так как вот такой плейбук выполняется отлично: --- - hosts: localhost vars: file_ini: - {option: "qq", value: "33;45"} tasks: - debug: msg: "Option={{ item.option }} and value={{ item.value }}" loop: "{{ file_ini }}"
Sergey
у меня там много значений перечислено все предыдущие заменяются, как доходит до значения с ; - падает с ошибкой
Lamobot
Сравни с другими значениями из того же листа
Sergey
попробовал вывести так: msg: '{{ item.option }} = "{{ item.value }}"' loop: "{{ file_ini }}" в результате так же все предыдущие выводятся, а на значении с ; так же отваливается
Sergey
пробовал менять на одинарные/двойные, вообще без кавычек - всегда одно и то же :( Только в самом таске ничего не менял
Timur
Покажите
Sergey
value: "33;45" - тут пробовал, так же сейчас попробовал поставить %3b вместо ;
Sergey
в таске не пробовал
Sergey
все разобрался, извините за беспокойство.
Sergey
даже самому стыдно, оказывается там была опечатка, а я ее в упор не замечал :(
George
Блин. Читаю. И ужасаюсь. Будто группы в ансибле сделаны через одно место. @amarao чего думаешь ?
Из всего неудачного, что есть в ансибле, группы - самые логичные. А моя практика работы с группами говорит, что надо различать группы для исполнения (эту плей - на эти группы), группы для запросов (вписать в конфиг все хосты из этой группы) и группы для настроек (у всех хостов этой группы foo:bar)
Sergey
Обходиться одним набором групп мсье не позволяют городсть и предубеждение? O_o
Sergey
^^^
George
Она не наглядная, т.к. провоцирует создавать группы на каждый чих. Условно - я хотел каждый узел отнести к двум или более категориям
Sergey
Здесь я, пожалуй, соглашусь. Однако, насколько я понимаю, это больше вопрос к тому, как мы в _плоскую древовидную_ (YaML) структуру записываем закольцованный граф (спойлер: через задницу).
Sergey
То бишь если запилить годный dynamic inventory с поддержкой вот этой вот хотелки, то снова всё будет гуд.
George
Вообще-то да
Timur
George
Разве при таком подходе группы не будут дублироваться? Почему не использовать одну группу вместо трех?
Ты можешь одну группу сделать children другой. Например, pg_access child для pg_passwords
Rad
подскажите пожалуйста, запутался в шаблоне jinja2 , вот так работает {{ hostvars['nginx'].ansible_host }} а вот так нет {% for item in groups['mygroup'] %} {{ hostvars[item].ansible_host }} {% endfor %} Я так понимаю потому что в {{ hostvars[item].ansible_host }} item передается без ' '
Alex
а никто не сталкивался с медленной скоростью работы ансибла при переходе с питона 2.х на 3.х? Переехал с 16.04 на 18.04 и скорость работы просто бросается в глаза
Владислав
подскажите пожалуйста, запутался в шаблоне jinja2 , вот так работает {{ hostvars['nginx'].ansible_host }} а вот так нет {% for item in groups['mygroup'] %} {{ hostvars[item].ansible_host }} {% endfor %} Я так понимаю потому что в {{ hostvars[item].ansible_host }} item передается без ' '
item и должен без кавычек передаваться, иначе из хост варс придет хост с названием 'item' Может с областью видимости проблема, попробуй так {% for host in groups['mygroup'] %} {{ hostvars[host].ansible_host }} {% endfor %}
Timur
Кстати, если кому будет полезно, в 2.8 ветке сломан модуль package_facts
Timur
Не на всех ОС, но на дебиане и убунту точно
Отделение Bereke Bank
а как проявляется поломанность? вообще не пашет или пашет не так как нужно?
Timur
https://github.com/ansible/ansible/issues/55850
Timur
Пакет отрабатывает, но на убунте выдает пустой список
Alex
Начните использовать mitogen
что то не заметил особой разницы. В выводе вообще должно где то упоминаться, что используется mitogen?
Alex
Значит не используете
подключал так strategy = mitogen_linear strategy_plugins = /usr/local/lib/python3.6/dist-packages/ansible_mitogen/plugins/strategy или надо еще что то ?
Alex
а что значит по-человечески? Я ж вроде через strategy_plugins и указал
Sergey
Ansible умеет в автозагрузку. Если ты кладёшь плагин в ...._plugins, то он будет автомагически загружен.
JonnSmitt_\/Z
Всем доброго времени суток. Вопрос: как добавить id_rsa.pub на удалённый сервер в /root/.ssh/autorised_key имя учётку парольную на удалённом сервере с SUDO. Ах да.... Это всё в ОДИН таск\роль\команду......
Vladislav 👻
что то не заметил особой разницы. В выводе вообще должно где то упоминаться, что используется mitogen?
Должно быстрее быть на сборе фактов и передачи тасков и генерации темплейтов как минимум, причем заметно это очень сильно. Можно запустить с ключами -vvv(vv) и по выводу понять, работает ли митоген или нет
JonnSmitt_\/Z
Эх.......... Правила же прочитаны, да?
прочитал. Не нашол варика, что можно руту(сразу из плэйбука) добавить кей, из под учетки юзера хоть и с судо, имя только пароль(без ключа) юзера.
Alex
[task 3304] 16:06:36.549894 D ansible_mitogen.planner: BinaryPlanner() rejected 'command' [task 3304] 16:06:36.550014 D ansible_mitogen.planner: NewStylePlanner() accepted 'command' (filename '/usr/local/lib/python3.6/dist-packages/ansible/modules/commands/command.py') вроде как используется
JonnSmitt_\/Z
Модуль authorized_key
Хотелось бы в один таск. и модуль юзается - если у ансибла есть уже доступ к серваку по ключу. и —extra-vars $User -k пробовал. в Одно нажатие не выходит.
Sergey
Хотелось бы в один таск. и модуль юзается - если у ансибла есть уже доступ к серваку по ключу. и —extra-vars $User -k пробовал. в Одно нажатие не выходит.
Вот всё тебе верно сказали - https://docs.ansible.com/ansible/latest/modules/authorized_key_module.html. authorized_key: user: root authirized_key: 'ssh_rsa 01020304....'
Sergey
Без доступа к хосту ничег оне выйдет.
JonnSmitt_\/Z
Вооот!
Sergey
Что? А ты хочешь силой мысли ключи раскладывать?
Sergey
Так это в других чатиках.
Lamobot
Хотелось бы в один таск. и модуль юзается - если у ансибла есть уже доступ к серваку по ключу. и —extra-vars $User -k пробовал. в Одно нажатие не выходит.
# !!! Need to add --ask-pass to ansible-playbook command - hosts: newservers remote_user: user become: yes gather_facts: no vars: ansible_ssh_extra_args: "-o StrictHostKeyChecking=no -o PreferredAuthentications=password" tasks:
Lamobot
При запуске добавляешь —ask-pass В тасках дальше делаешь чего хочешь под этим юзером. Ему нужен sudo доступ на машине
Lamobot
И --ask-become-pass тоже
checkdiff
Коллеги, кто использовал lookup/query с until, есть рабочие варианты? Задача: проверять TXT запись, пока не вернется верная.
Alex
по ходу нашел причину тормозов. Дело не в питоне, а в # apt-get update && apt-get install mc jq unzip expect openjdk-8-jre-headless socat python-docker docker.io Hit:1 http://europe-west1.gce.archive.ubuntu.com/ubuntu xenial InRelease Get:2 http://europe-west1.gce.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB] Get:3 http://europe-west1.gce.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB] Get:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [109 kB] Get:5 http://europe-west1.gce.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [1010 kB] 0% [Connecting to archive.canonical.com (91.189.92.150)] и так оно висит минут 5. Есть какие то воркэраунды для таких случаев? Использую модуль apt