Alexander
Народ, подскажите, пожалуйста по такому вопросу.
Есть простой такс, копирующий файлы из role/files/ в каталог на целевой машине:
copy:
src: "{item}"
dest: "{{ destination_path }}"
loop: "{{ lookup('fileglob' ....) | list }}"
И вот он происходит довольно медленно, файлов там десятка 2-3, все текстовые на 5-10 Кб. Можно ли как-то эту задачу решить, чтобы оно быстрее работало?
Grek 🇺🇦
синхронайз
Alexander
rsync?
Grek 🇺🇦
https://docs.ansible.com/ansible/latest/collections/ansible/posix/synchronize_module.html
Alexander
Ага, читаю уже ) спасибо
Отделение Bereke Bank
Sergey
Sergey
Alexander
Всегда будет changed?
Sergey
Ну по логике - да. Если бы у тебя был фиксированный список - его можно и в переменную сложить. А так - нутыпонел.
Alexander
Больше вариантов не может быть?
Sergey
Если изменений не ожидается - fileglob нинужен.
Alexander
Alexander
Может измениться как содержимое файла, так и их количество
Alexander
Это директория с инклюдами для конфига софта. =)
Николай
Николай
а не вот это вот
Vladislav 👻
Николай
{{ внутри {{ — отличный совет. Так и надо делать
Vladislav 👻
на хабре на эту тему есть большая статья, как читаются переменные и как прогоняются и в какой момент через jinja
Николай
Закрывай секрет обратно. Конкатенация.
Vladislav 👻
понятно, проходи
Николай
Поклонник хабра, бгг
Vladislav 👻
перепилите на конкатенацию - медаль дам
Vladislav 👻
а пока, ваши набросы ни о чем, весь ансибл так работает и никого не смущает, все ваши переменные так или иначе так работают, когда работаете с инвентори
Alexander
Vladislav 👻
Alexander
Николай
Медаль (с закруткой на спине) себе оставь))
Vladislav 👻
Alexander
Александр
copy с этим прекрасно справляется.
Александр
В случае если исходник на удаленной машине проще сначала на ansible забрать папку, а потом её всем раскидать.
Николай
Мы ж YAML-программисты, нужно писать красиво
Alexander
Я не про {{ }} внутри {{ }} ))
Alexander
Я про lookup('file') против lookup('fileglob')
Alexander
Так-то я тоже конкатенацию использую
Николай
но вообще лучше синхронайз)
Alexander
Попробую его
Alex
Python creator Guido van Rossum joins Microsoft – TechCrunch
https://techcrunch.com/2020/11/12/python-creator-guido-van-rossum-joins-microsoft/
Alex
Приехали
Отделение Bereke Bank
Отделение Bereke Bank
Теперь майкрософт закроет Гвидо...
Александр
copy:
src: /shared
dest: /opt/
directory_mode: yes
Андрей
тебе просто не повезло)
Андрей
Башсибл раньше имел место быть)
Sergey
На вот: https://docs.ansible.com/ansible/2.9/modules/deploy_helper_module.html. И развидь спокойно.
Combot
Total messages: 167741
Sergey
@igorfraa всё просто, дальше продолжаешь = RO.
Игорь
Игорь
там выше сказали "приехали", что тоже не очень относится к ансиблу
Sergey
что продолжаю?
Давай так: у тебя есть выбор. Чтобы не получить первое RO на сутки, ты сейчас сам подумаешь и скажешь, чем отличается сообщение о смене места работы известного специалиста - автора языка, на котором написан онтопик, причём из его же личного твиттера, от копипасты с сайта Дропбокса, и почему здесь первое - в тему, а второе - нет. Ну или можешь просто согласиться на RO.
Игорь
Sergey
Я полагаю, ты всё-таки всё понял и не безнадёжен.
Смысл не в том, чтобы я победил, а в том, чтобы по возможности участники группы думали, прежде чем что-то запостить: "кому принесёт пользу моё сообщение?" Обуждать личные высказывания известного человека в чате по инструменту - ну такое, для других чатов, именно поэтому я и стриггерился. А вот устройство известного специалиста - автора языка на работу в Майкрософт теоретически повлияет на ситуёвину с питоном на винде (т.е. плохую), и глядишь - ансибл виндовый появится.
Sergey
Именно поэтому коллега выше запостил сугубо про второе.
Игорь
Игорь
замяли
Aliaksei
небольшой вопрос: как сделать удобнее,
- ansible при вызове модяля uri делает вызов с целевого хоста, но я хочу в некоторых случаях его вызывать с машины где установлен ansible (без предварительного захода через ssh)
- import_tasks: meta.yml
в группе задач используется ansible_ssh_host который берется из инвентари и используется внутри тасков (в таком случае происходит ansible -> ssh host -> ext url)
- import_tasks: meta.yml
delegate_to: 127.0.0.1
в таком случае происходит ansible -> ext url но затирается переменная ansible_ssh_host (адрес становится 127.0.0.1) и все ломается
пробовал в дефолте определять доп переменную,
tmp_ansible_ssh_host: "{{ ansible_ssh_host }}" но она тоже переопределяется во время delegate_to
Grek 🇺🇦
Не ломается, а работает как и должно. Передавайте jump host в другой переменной
-
Aliaksei
ну да, я понял что так должно,
- задача обновить метинформацию во внешней системе, и еще некоторые таски, там нужен IP адрес машины, использую {{ ansible_ssh_host }}
например
- name: Change server name
uri:
url: "https://example.com/{{ tmp_ansible_ssh_host }}"
method: POST
-
"{{ lookup('vars','inventory_hostname') }}" не подходит?
Aliaksei
inventory_hostname може еще не быть в днс например, он же вернет имя(
Aliaksei
Из постоянных фактов только IP адрес.
—
идея просетапить машину, потом обновить мет информацию, дописать машину в днс, ну может еще чего потом.
ansible_host=IP а инвентари.
Aliaksei
вообще я думал что модуль uri будет работать не с remote host когда начинал писать логику)
-
Aliaksei
да. запутал) сейчас чуть понятнее попробую обьяснить.
инвентари заполяется вручную, там есть
[provision]
node1.example.com ansible_host=ip
я использую служебные переменные
inventory_hostname (для указания имени сервера который еще может быть не готов для доступа по ssh но хочется дописать его в днс и другую внешнюю систему) с адресом IP
ansible_ssh_host
-
Aliaksei
провобавал определить в дефолте, но после delegate тоже меняется ip на 127,
tmp_ansible_ssh_host: "{{ ansible_ssh_host }}"
gather_facts используется((
похоже что нужно пробовать както set_fact определить
Konstantin
Парни всем привет! Помогите плиз понять проблему, есть inventory файл в котором зашифрованы переменные через encrypt_string, при запуске плейбука получаю Decryption failed, при включенном дебаге в логе пишет HMAC verification failed: Signature did not match digest