Sergey
привет. подскажите, таск может состоять из единственного notify?
нет, не может. https://stackoverflow.com/questions/40139757/ansible-playbook-directly-run-handler
łibfitź.r14.a
спасибо
Huan
привет всем. подскажите как заставить ансибл авторизироваться в авс. создал плейбук, указал access_key и secret_key, но выдает "AuthFailure: AWS was not able to validate the provided access credentials"? Вот пример плейбука: --- - hosts: localhost gather_facts: false vars: aws_access_key: "XXXXXXXXXXXX" aws_secret_key: "XXXXXXXXXXXXXXXXXXXXXXXXX" key_name: "keypair" instance_type: "t2.micro" image: "ami-xxxxxxxxxx" wait: yes vpc_subnet_id: vpc-xxxxxxxxxxxx assign_public_ip: no region: "eu-central-1" ec2_url: "https://ec2.amazonaws.com" tasks: - name: Create instance ec2: aws_access_key={{ aws_access_key }} aws_secret_key={{ aws_secret_key }} count={{ count | default('1') }} assign_public_ip={{ assign_public_ip }} ec2_url={{ ec2_url }} image={{ image }} key_name={{ key_name }} region={{ region }} tenancy={{ tenancy | default('default') }} instance_type={{ instance_type }} instance_tags='{ "Name":"test" }' wait=true
Huan
брал с мануала пример
Huan
он не нужен?
bebebe
он не обязателен. попробуйте в таску ec2 подставить креденшелы напрямую уберите ec2_url все должно заработать
bebebe
если пара AWS ACCESS/SECRET KEYS валидна для этого региона и этого api есть доступ через iam до ec2.compute
Huan
не помогло( ключи валидные, проверял через awscli
bebebe
попробуйте в заведомо чистом окружение тот же aws cli: alias aws='docker run --rm -t $(tty &>/dev/null && echo "-i") -e "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}" -e "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}" -e "AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}" -v "$(pwd):/project" mesosphere/aws-cli' подставьте переменные окружения и еще раз забутайте инстанс
Vasilii
Удалось разрешить вопрос?
нет (не продолжал искать причину)
Danis
нет (не продолжал искать причину)
Посмотри внимательно что пытаешься разархивировать, он все равно пишет именно такую ошибку. Даже если путь/файл косячный.
bebebe
так awscli работает. проверял на разных серваках
я вас просил проверить именно через докер и переменные окружения на разных серваках у вас может быть разный ~/.aws
Vasilii
Посмотри внимательно что пытаешься разархивировать, он все равно пишет именно такую ошибку. Даже если путь/файл косячный.
если указать заведомо неверный путь то оно говорит "msg": "Source '/home/username/a.tar.gzeeep' does not exist" Файл нормальный, руками tar его распаковывает
Huan
я вас просил проверить именно через докер и переменные окружения на разных серваках у вас может быть разный ~/.aws
выдало aws ec2 create-image --instance-id i-1234567890abcdef0 --name "My server" --description "An AMI for my server" An error occurred (AuthFailure) when calling the CreateImage operation: AWS was not able to validate the provided access credentials странно, но видеть список инстансов могу
Vasilii
Он лежит на хосте, где запускается Ansible?
да. remote_src=yes, и с локального тоже пробовал грузить
Danis
Попробуй переименовать в *.tgz
Vasilii
Попробуй переименовать в *.tgz
"Failed to find handler for \"/home/username/a.tgz\". Make sure the required command to extract the file is installed. Command \"/usr/bin/unzip\" could not handle archive. Command \"/bin/tar\" could not handle archive."
Danis
Он тут не нужен, но мало ли.
Vasilii
/bin/tar тоже присутствует
bebebe
Но сначала попробуйте самостоятельно решить проблему с policy. Ансибл тут не причем
Huan
понял, спасибо
Danis
/bin/tar тоже присутствует
Могу точно сказать одно: не привязывайтесь к выводу лога при использовании этого модуля. Он всегда пишет одно и то же. В моем случае он писал эту ошибку, когда я случайно попытался разархивировать файл *.sql.
Danis
Писал, что не может найти tar или unzip.
Mikhail
балин, а чего делать если random(seed=...) дает одинаковый результат при разных seed?
Mikhail
как вообще эта идемпотентность работает у фильтра?
Vasilii
@danis9yearsago указал абсолютный путь в dest=, работает :) во всех остальных местах относительный
Maksim
Закоментируйте эту строку в ansible.cfg
Спасибо, помогло. Получается, что стратегию free для 1 хоста не получится использовать, я правильно понимаю?
bebebe
Спасибо, помогло. Получается, что стратегию free для 1 хоста не получится использовать, я правильно понимаю?
отлично. я вам выше кидал ссылку на ишую на гитхабе https://github.com/ansible/ansible/issues/41312 один из советов - попробовать версию devel - не знаю на сколько это вам подходит. стратегия free сама по себе бажная в плане output'а в вашей версии 2.5.2, и она бессмысленна если запускать её против одного хоста
bebebe
судя по релизам, вам подойдет 2.6.2.. хотя не уверен что там все пофиксили https://github.com/ansible/ansible/pull/17355
bebebe
да, надо ставить devel и смотреть
Mikhail
как вообще эта идемпотентность работает у фильтра?
даже иначе бы спросил.. насколько вероятно, что мне просто люто повезло и больше я такого не увижу
Sergey
Привет ребят неделю колупаюсь с ролью, не получается добить. в @devops_ru тоже что то не зашел вопрос суть: есть роль для mysqldump, реализованная в ansible, она дампит базы, и забирает файл на деплой хост так вот мне требуется дополнить ее частью импорта в другую среду(хостгруппу), а у меня на входе определяется только одна хостгруппа, с ней собсна дамп и работает. Покажите пожалуйста в какую сторону копать, чтобы разграничить таски между разными хостгруппами? Раздельно я эти таски выполнить могу, а вместе в одной роли нет
Sergey
citius
так может и разделить на две роли - экспорта и импорта?
Sergey
так может и разделить на две роли - экспорта и импорта?
как самый плохой вариант да, к нему наверное и приду, интересует вообще реализация с несколькими хостгруппами
Sergey
и такая штука должна работать из любой среды(хостгруппы) в любую среду(хостгруппу)
citius
мнится мне, что для этого внутри роли нужно реализовать логику, а это как я понимаю не бест практис совсем
Victor
Доброго дня. А кто как проверяет полную работоспособность всех плейбуков? У меня лично рабочий процесс выходит, как там чуть правок, сям чуть правок. Потом еще чуть правок, потому что что-то от этих предыдущих правок не то вышло. Я вангую что у меня процесс немного не правильно поставлен.
Sergey
Внутри роли плейбука костыль разделение вызовов роли по хостгруппам. Если точнее - по переменным в них. Тогда достаточно будет для группы group_vars поставить определённую - и всё.
Sergey
Доброго дня. А кто как проверяет полную работоспособность всех плейбуков? У меня лично рабочий процесс выходит, как там чуть правок, сям чуть правок. Потом еще чуть правок, потому что что-то от этих предыдущих правок не то вышло. Я вангую что у меня процесс немного не правильно поставлен.
Можно прогонять с —check —diff. Тогда, если правильно роли написаны и инфра соответствует написанному, всё будет [OK]. Если нет - покажет все расхождения. Конечно, грязь с "command" и "shell" не сработает.
Victor
Можно прогонять с —check —diff. Тогда, если правильно роли написаны и инфра соответствует написанному, всё будет [OK]. Если нет - покажет все расхождения. Конечно, грязь с "command" и "shell" не сработает.
$ find ./playbooks/ -type f -name "*.y*ml" | wc -l 102 Причем для части из них нужно указывать в промпте параметры, потому что это автоматизация небольшого процесса.
Huan
подскажите плз как стопнуть плейбук без ошибки, если колчество хостов делится на 2?
bebebe
подскажите плз как стопнуть плейбук без ошибки, если колчество хостов делится на 2?
количество хостов делится на 2, марс в венере, и восход в 05:46, возожно вы это имели в виду?
Huan
нет. я про хосты) нужно стопать плейбук, если роль кластера разливается на 2, 4, 6 и тд хостов. а нужное количество должно быть нечетным - 1, 3, 5 и тд
bebebe
делайте pre_tasks, который проверяет что {{ ansible_play_hosts // 2 }} != 0
bebebe
иначе fail
Huan
так а если будет 4 хоста, то будет 4/2 = 2, а это больше нуля
bebebe
читайте внимательнее, там два // слеша
Huan
подскажите, что значит два слэша? 🙂
bebebe
остаток от деления http://jinja.pocoo.org/docs/2.10/templates/
Vadim
кхмм, | odd же
bebebe
ну или вообще так, да
Vladimir
Деление без остатка
bebebe
дыа, перепутал, надо % Huan
bebebe
смотрю в книгу, вижу фигу
Huan
Куда надо поставить процент? :)
bebebe
между 😉
Huan
Или я туплю жутко?))
bebebe
Huan используйте конструкцию как вам подсказал @vrutkovs fail when {{ ansible_play_hosts | odd }}
Huan
- name: Stop playbook fail: msg=“stop playbook” when: ansible_play_hosts | odd Так?
bebebe
попробуйте так, вы ведь не ракету в космос запускаете?
Huan
Нет)) хочу кластер etcd развернуть)
bebebe
ну тогда "поехали"