Alex
Lamobot
Alex
- name: Download docker-compose
become: yes
get_url:
url: “{{ base_url }}/dev-resource/docker-compose/{{ docker_compose_version }}/docker-compose”
dest: /usr/bin/docker-compose
checksum: sha256:{{ docker_compose_sha256 }}
url_username: "{{ jfinsttest_username }}"
url_password: "{{ jfinsttest_password }}"
mode: 0755
register: docker_compose_download_result
until: docker_compose_download_result is succeeded
retries: 3
delay: 20
Anton
Alex
один таск
Alex
куда уж меньше )))
Alex
можно и с гитхаба скачивать, у нас тут просто свои приколы - минимизируем сторонние сервисы и ресурсы
Anton
я думал в две строки будет
Anton
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Anton
sudo chmod +x /usr/local/bin/docker-compose
Anton
и все
Grek 🇺🇦
зачем тогда спрашивал?)
Alex
Grek 🇺🇦
+
Anton
TASK [Install docker-compose] **********************************************
fatal: [172.16.205.9]: FAILED! => {"changed": true, "cmd": ["pip", "install", "docker-compose"], "delta": "0:00:25.191138", "end": "2020-06-15 10:45:27.626954", "msg": "non-zero return code", "rc": 1, "start": "2020-06-15 10:45:02.435816", "stderr": " Running setup.py (path:/tmp/pip-build-yB7MV5/zipp/setup.py) egg_info for package zipp produced metadata for project name unknown. Fix your #egg=zipp fragments.\n Running setup.py (path:/tmp/pip-build-yB7MV5/configparser/setup.py) egg_info for package configparser produced metadata for project name unknown. Fix your #egg=configparser fragments.\nCommand \"/usr/bin/python2 -u -c \"import setuptools, tokenize;__file__='/tmp/pip-build-yB7MV5/subprocess32/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\\r\\n', '\\n'), file, 'exec'))\" install --record /tmp/pip-CP9mpo-record/install-record.txt --single-version-externally-managed --compile\" failed with error code 1 in /tmp/pip-build-yB7MV5/subprocess32/\nYou are using pip version 8.1.2, however version 20.1.1 is available.\nYou should consider upgrading via the 'pip install --upgrade pip' command.", "stderr_lines": [" Running setup.py (path:/tmp/pip-build-yB7MV5/zipp/setup.py) egg_info for package zipp produced metadata for project name unknown. Fix your #egg=zipp fragments.", " Running setup.py (path:/tmp/pip-build-yB7MV5/configparser/setup.py) egg_info for package configparser produced metadata for project name unknown. Fix your #egg=configparser fragments.", "Command \"/usr/bin/python2 -u -c \"import setuptools, tokenize;__file__='/tmp/pip-build-yB7MV5/subprocess32/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\\r\\n', '\\n'), file, 'exec'))\" install --record /tmp/pip-CP9mpo-record/install-record.txt --single-version-externally-managed --compile\" failed with error cod
Grek 🇺🇦
Grek 🇺🇦
и плейбук тогда уж
Lamobot
TASK [Install docker-compose] **********************************************
fatal: [172.16.205.9]: FAILED! => {"changed": true, "cmd": ["pip", "install", "docker-compose"], "delta": "0:00:25.191138", "end": "2020-06-15 10:45:27.626954", "msg": "non-zero return code", "rc": 1, "start": "2020-06-15 10:45:02.435816", "stderr": " Running setup.py (path:/tmp/pip-build-yB7MV5/zipp/setup.py) egg_info for package zipp produced metadata for project name unknown. Fix your #egg=zipp fragments.\n Running setup.py (path:/tmp/pip-build-yB7MV5/configparser/setup.py) egg_info for package configparser produced metadata for project name unknown. Fix your #egg=configparser fragments.\nCommand \"/usr/bin/python2 -u -c \"import setuptools, tokenize;__file__='/tmp/pip-build-yB7MV5/subprocess32/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\\r\\n', '\\n'), file, 'exec'))\" install --record /tmp/pip-CP9mpo-record/install-record.txt --single-version-externally-managed --compile\" failed with error code 1 in /tmp/pip-build-yB7MV5/subprocess32/\nYou are using pip version 8.1.2, however version 20.1.1 is available.\nYou should consider upgrading via the 'pip install --upgrade pip' command.", "stderr_lines": [" Running setup.py (path:/tmp/pip-build-yB7MV5/zipp/setup.py) egg_info for package zipp produced metadata for project name unknown. Fix your #egg=zipp fragments.", " Running setup.py (path:/tmp/pip-build-yB7MV5/configparser/setup.py) egg_info for package configparser produced metadata for project name unknown. Fix your #egg=configparser fragments.", "Command \"/usr/bin/python2 -u -c \"import setuptools, tokenize;__file__='/tmp/pip-build-yB7MV5/subprocess32/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\\r\\n', '\\n'), file, 'exec'))\" install --record /tmp/pip-CP9mpo-record/install-record.txt --single-version-externally-managed --compile\" failed with error cod
Сделайте проще - в доке посмотрите:
Alternative Install Options -> Install as a container
При этом не нужны никакие зависимости кроме самого докера на машине.
Grek 🇺🇦
определите переменную
Grek 🇺🇦
она определена в плее - если считаете что не нужна - удалите ее из плея
Anton
я же и спрашивал, почему так много строк
Alex
если скачиваешь с github, то ничего не надо
Kane
Коллеги, столкнулся с такой фигней, в одном из шаблонов используется конструкция {{ secret_variable | password_hash('bcrypt') }}.
При выполнении, эта конструкция вернула мне значение *0. При этом 1) bcrypt установлен; 2)проверил через debug - вернулся нормальный хэш.
Интуитивно поставил passlib и конструкция в шаблоне стала работать и возвращать нормальный хэш вместо *0.
Можете кто-нибудь объяснить почему эта конструкция работала нормально с debug модулем и не работала с template модулем?
Kane
Ну типа я понимаю что у template'а видимо реализация хэширования сделана через passlib, но почему бы не использовать встроенные в ансибл возможности (которые позволяют работать debug-модулю) ?
Anonymous
угу. мне будет сильно интересно с 2.10 про встроенные воpможности ansible :))
Anonymous
Anonymous
есть сторонняя "библиотека". делает что-то полезное и уже хорошо. как-то так.
Anonymous
если вас это сильно беспокоит, то можно создать issue
חנה
Добрый день, подскажите пожалуйста, можно ансиблом быстро залить содержимое директрии в azure storage account (в контейнер)? С with_fileglob/azure_rm_storageblob очень медленно
חנה
Опции для рекурсивно не нашла в доке
Anonymous
Добрый день. В большей степени зависит от IOPS storage. Если в директории много мелких файлов, то как вариант можно попробовать запаковать(zip архив?) перед тем, как заливать.
חנה
חנה
В архив не получится, если только на лету не умеет разархивировать?
Anonymous
попробуйте запаковать
Anonymous
загрузка мелких файлов очень дорого по времени
Anonymous
запаковать -> залить -> распаковать. как-то так
Anonymous
חנה
Тоже можно при желании
не понимаю как 🙁 я пока только нагуглила, что Azure storage не умеет разархивировать. Качаешь себе, разархивируешь, пофайлово заливаешь
Андрей
Anonymous
חנה
Нужна автоматика
חנה
Пойду az cli обмазывать
Anonymous
Нужна автоматика
Ну, заходишь на ноду и распаковываешь. Через тот же ансибл.
חנה
Эээм, какую ноду? Azure storage account
Anonymous
Ну, нода же есть к которой этот storage подключен?
Anonymous
storage не сам по себе "живет"
חנה
Не, это облачное хранилище
חנה
Ладно, спасибо, я сама разберусь
Отделение Bereke Bank
חנה
Да, типа, только ажурское
חנה
Практически -- ничего наверно
חנה
я не уверена, но blob storage не подключаемый никуда
חנה
CRUD эндпойнт
חנה
просто долго как сволочь
חנה
Что забавно, azure cli умеет batch upload и это с 6 минут в прям секунды укладывается. Потрясу их, че не сделали для ансибла-то.
Anonymous
Так мало кому надо было. Видимо :))
חנה
Блин, ну логично) Хотя оно даже вебсайты умеет хостить с себя, казалось бы
Отделение Bereke Bank
חנה
и много чего в ансибле много что умеет делать рекурсивно
חנה
🤗
Anonymous
может copy заменить на synchronize?
Alex
Anonymous
rsync пободрее будет, чем простое copy
חנה
я пока просто az cli дернула из cоmmand. сойдет для начала
Evgenii
Я тут прохожусь with_items: hostvars[inventory_hostname].ansible_devices и в item у меня первый диск - sda... далее я хотел бы дотянуться до вложенного ключа, но падаю в ошибку, что такого нет - item.host
но такой есть...
"hostvars[inventory_hostname].ansible_devices": {
"sda": {
"holders": [],
"host": "SATAblablabla"
Evgenii
e.g это не работает((
- name: Loop
debug:
msg: "{{ item.host }}"
with_items: " {{ hostvars[inventory_hostname].ansible_devices }} "
подскажете что не так я делаю?
Evgenii
msg: "{{ hostvars[inventory_hostname].ansible_devices[item].host }}" - решение
Mista
rsync пободрее будет, чем простое copy
rsync на over9k боли подобен, в силу того что большую часть времени будет составлять карту (конечно все зависит от режима l -> l : l - > r и алгоритма, но лучше этого избежать)
Anonymous
И не отрицаю. Да, это так.
Dees7
Уважаемые, можно ли Ansible как то проверить что файл существует на третем сервере? те я насттраивают (например) openvpn client и надо проверить что для него сгенерирован сертификат на сервере?
Grek 🇺🇦
а что если файла нет? сгенерировать его?
не проще ли закидывать серт сразу?