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
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 🇺🇦
зачем тогда спрашивал?)
Anton
зачем тогда спрашивал?)
ну потому что у меня так фейлится. вот и спрашивал, что не так делаю.
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 При этом не нужны никакие зависимости кроме самого докера на машине.
Anton
- 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
TASK [Download docker-compose] *********************************************************************************************************************************************************************************************************** fatal: [testVM.stg-kh.btr]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'jfinsttest_password' is undefined\n\nThe error appears to have been in '/etc/ansible/docker-compose-install.yaml': line 70, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n - name: Download docker-compose\n ^ here\n"}
Grek 🇺🇦
определите переменную
Anton
определите переменную
она вообще нужна здесь?
Grek 🇺🇦
она определена в плее - если считаете что не нужна - удалите ее из плея
Anton
я же и спрашивал, почему так много строк
Alex
я же и спрашивал, почему так много строк
ну я же говорил - я скачиваю с приватного сервера, который требует аутентификацию
Alex
если скачиваешь с github, то ничего не надо
Grek 🇺🇦
я же и спрашивал, почему так много строк
хороший повод правильно задавать вопросы)
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
если вас это сильно беспокоит, то можно создать issue
חנה
Добрый день, подскажите пожалуйста, можно ансиблом быстро залить содержимое директрии в azure storage account (в контейнер)? С with_fileglob/azure_rm_storageblob очень медленно
חנה
Опции для рекурсивно не нашла в доке
Anonymous
Добрый день. В большей степени зависит от IOPS storage. Если в директории много мелких файлов, то как вариант можно попробовать запаковать(zip архив?) перед тем, как заливать.
חנה
В архив не получится, если только на лету не умеет разархивировать?
Anonymous
попробуйте запаковать
Anonymous
загрузка мелких файлов очень дорого по времени
Anonymous
запаковать -> залить -> распаковать. как-то так
חנה
Тоже можно при желании
не понимаю как 🙁 я пока только нагуглила, что Azure storage не умеет разархивировать. Качаешь себе, разархивируешь, пофайлово заливаешь
חנה
Нужна автоматика
חנה
Пойду az cli обмазывать
Anonymous
Нужна автоматика
Ну, заходишь на ноду и распаковываешь. Через тот же ансибл.
חנה
Эээм, какую ноду? Azure storage account
Anonymous
Ну, нода же есть к которой этот storage подключен?
Anonymous
storage не сам по себе "живет"
חנה
Не, это облачное хранилище
חנה
Ладно, спасибо, я сама разберусь
Отделение Bereke Bank
חנה
Да, типа, только ажурское
Anonymous
Наверное это типа S3
Не пойму, что это меняет
חנה
Практически -- ничего наверно
חנה
я не уверена, но blob storage не подключаемый никуда
חנה
CRUD эндпойнт
חנה
просто долго как сволочь
Anonymous
я не уверена, но blob storage не подключаемый никуда
Уф, это меняет все. Лучше проверить. Я понял в чем проблема. Сочувствую.
חנה
Что забавно, azure cli умеет batch upload и это с 6 минут в прям секунды укладывается. Потрясу их, че не сделали для ансибла-то.
Anonymous
Так мало кому надо было. Видимо :))
חנה
Блин, ну логично) Хотя оно даже вебсайты умеет хостить с себя, казалось бы
חנה
Императивщина же. Ей не место в ансибле
то есть? copy умеет рекурсивно копировать
חנה
и много чего в ансибле много что умеет делать рекурсивно
Anonymous
то есть? copy умеет рекурсивно копировать
У меня прям симпатия появилась к Вам :)))
חנה
🤗
Anonymous
может copy заменить на synchronize?
Alex
и много чего в ансибле много что умеет делать рекурсивно
а shell вообще умеет делать все, что захочешь )))
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 🇺🇦
а что если файла нет? сгенерировать его? не проще ли закидывать серт сразу?