Aleksey
хм, а облако-хостер кто ?
V.
ДО
Aleksey
по идее надо скрипт динамик инвентори брать или свой писать, а не генерить статик по терраформ конфигу
Aleksey
ну для до есть прям готовый встроенный
V.
в терраформ?
Aleksey
https://github.com/ansible/ansible/blob/devel/contrib/inventory/digital_ocean.py https://github.com/ansible/ansible/blob/devel/contrib/inventory/digital_ocean.ini
Aleksey
вот, пишешь ини конфиг чтобы ансибл подключался к апи ДО, и всё, будет оттуда брать хосты развернутые
V.
ок, спасибо, посмотрю
Aleksey
по сути только апи токен нужен
Aleksey
а проверить выдачу вот так, что ДО отдает - ansible-inventory -i <inventory-dir> --graph где в inventory-dir лежит digital_ocean.ini с токеном апи
V.
👍
inqfen
Там и все переменные
Ruslan
Лучше loop
Stefan
парни, подскажите, пожалуйста не нахожу в доке инфу нужную, можно на этапе запуска плейбука делать лимит на список переменных? вычитал только о extra-vars, но это не подходит, так как переменная не динамичная vars: kubectl: foo stefan_work: bar
Alex
в каком смысле лимит?
Stefan
в каком смысле лимит?
ну например я запускаю плейбук и хочу чтоб содержимое только kubectl было применено на удаленном хосте типо вот как можно лимитировать хосты на которых нужно прогнать плейбук, также можно сделать и с переменными?
Timur
Откуда у вас берутся переменные?
Stefan
Не очень понимаю - что значит "применено"?
ну в этих переменных у меня допустим ssh ключи
Stefan
в плейбуке объявлены
Stefan
и я хочу добавить на хост только один ключ юзера из списка
Stefan
а не всех
Stefan
и вот интересует можно на этапе запуска лимитировать переменные?
Dmitriy
а сделать роли "добавление пользователя Вася" "добавление пользователя Петя" а потом в плейбуке комментировать лишнее ?
Dmitriy
тогда думаю можно попробовать тэгами(вот например описание https://stackoverflow.com/questions/23945201/how-to-run-only-one-task-in-ansible-playbook)
Alexander
Подскажите, как в плейбуке обратиться к переменной, содержащей имя юзера, если юзер передается через --user? {{user}} прокатит?
Alexander
Нужно этого же юзера добавить в группу
fs
Привет всем, кто подскажет, есть два контейнера, база и аппликейшин, при старте базы к ней линкуется app, все работает до тех пор пока контейнер с базой не пересоздается, тогда я вижу что то в этом роде: fatal: [testSrv]: FAILED! => {"changed": false, "msg": "Error starting container 8f0477806f25b70b7229a8a0b9b4d768399c1415b8022f3c2e197491d15afb27: 500 Server Error: Internal Server Error (\"{\"message\":\"Cannot link to a non running container: /cont-db AS /cont/db\"}\")"} у меня подозрение что дело в том, что после пересозданя контейнера с базой меняется его id, а так как контейнер с app просто перезапускается, он ищет базу по старому id (но это не точно) есть какое то решение этой ситуации (например закрепить как то id если дело в этом) Кст, если кому то интересно я линукую по имени Cannot link to a non running container - обманывает, контейнер запущен просто скорее всего он ищет его не по имени а по id, других вариантов не вижу
Stefan
тогда думаю можно попробовать тэгами(вот например описание https://stackoverflow.com/questions/23945201/how-to-run-only-one-task-in-ansible-playbook)
да оно подобным образом и реализовано( не оч удобно tasks: - name: Add ssh keys on servers lineinfile: path: "/home/{{ ansible_user }}/.ssh/authorized_keys" line: "{{ item }}" with_items: - "{{ kubectl }}" - name: Delete ssh keys on servers lineinfile: state: absent path: "/home/{{ ansible_user }}/.ssh/authorized_keys" line: "{{ item }}" with_items: - "{{ stefan_home }}" - "{{ stefan_work }}" - "{{ markel_work }}" tags: - delete
Stefan
по мне tags удобнее, хотя я могу ошибаться. Ну, я подумаю еще, может еще кто посоветует...я старался :D
да я так или иначе заморочусь чтоб написать роль, просто сейчас по шурику сделать, на коленке так сказать) ладно, спасибо)
Artem
Всем привет! Сталкивался кто-нибудь с таким [WARNING]: sftp transfer mechanism failed on [10.70.252.3]. Use ANSIBLE_DEBUG=1 to see detailed information <10.70.252.3> SSH: EXEC scp -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/3cda94a3ea /root/.ansible/tmp/ansible-local-3534IYCdeb/tmpHRSt3V '[10.70.252.3]:/.ansible/tmp/ansible-tmp-1568965920.0-66734504888053/AnsiballZ_setup.py' [WARNING]: scp transfer mechanism failed on [10.70.252.3]. Use ANSIBLE_DEBUG=1 to see detailed information <10.70.252.3> ESTABLISH SSH CONNECTION FOR USER: None <10.70.252.3> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/3cda94a3ea 10.70.252.3 'dd of=/.ansible/tmp/ansible-tmp-1568965920.0-66734504888053/AnsiballZ_setup.py bs=65536' fatal: [10.70.252.3]: UNREACHABLE! => { "changed": false, "msg": "SSH Error: data could not be sent to remote host \"10.70.252.3\". Make sure this host can be reached over ssh", "unreachable": true Пытаюсь залить файл на ESXi хост в сторедж, из под самого ансибл сервера через scp все работает, через модуль отказывается
Timur
в плейбуке объявлены
Ну, так, уберите лишнее из плейбуки и все
Stefan
Ну, так, уберите лишнее из плейбуки и все
та вот потому и не удобно))) что нужно то удалять, то добавлять
Stefan
хотел чуть динамичней(
Timur
Какая разница, куда добавлять переменную - в плейбуку или в командную строку?
Timur
Объём работы одинаковый
Stefan
Что значит «динамичней»?
запустить плейбук с переменной в заданном списке на этапе ansible-playbook
Stefan
Какая разница, куда добавлять переменную - в плейбуку или в командную строку?
есть разница) у меня есть список, из этого списка я применю весь плейбук и прогоняю только для одного юзера и не нужно было бы постоянно удалять/добавлять в самом плейбуке
Timur
запустить плейбук с переменной в заданном списке на этапе ansible-playbook
И откуда вы предлагаете брать переменные тогда?
Stefan
И откуда вы предлагаете брать переменные тогда?
ну из самого плейбука, где она и объявленна)
Timur
ну из самого плейбука, где она и объявленна)
Вы хотите, чтобы она была объявлена, но ансибл чтоб ее не видел?
Stefan
Вы хотите, чтобы она была объявлена, но ансибл чтоб ее не видел?
так увидит же) я ж ведь запускаю конкретный плейбук, в котором она есть и на которую бы ссылался в cli)
Stefan
Так что же вы хотите? Чтобы переменная была или чтобы ее не было?
смотрите она у меня обяъвлена в плейбуке, как key=value думал что можно было бы сделать что-то подобное ansible-playbook play.yml -var kubectl -l node1
Stefan
похоже что такой возможности нет у ансибла
Aleksey
Мне кажется можно сделать файлик с переменными например kubectl.yml, рядом пустой файл empty.yml, написать в тасках include_vars: "{{ condition }}.yml", при этом по дефолту сделать condition: empty. А когда нужно вызвать таск с подключением переменных из файлика kubectl.yml, запускать плейбук с опцией -e 'condition=jkubectl'.
Stefan
Timur
Если вам нужен разный набор переменных при запусках - просто давайте ансиблу разный набор переменных
Timur
Через vars_files, extra_vars и т.п. Куча способов есть
Alexander
ansible_ssh_user
Подошло, спасибо. Только в поле name, где описание таска, не подставляет
Alexander
Не могу составить таск для приватного реестра докера - name: pull docker_image: name: some_image repository: private.registry.ru:1050/dir/ tag: v1.0 source: pull
Alexander
Должно быть docker pull private.registry.ru:1050/dir/some_image:v1.0 Подскажите что не так сделал
George
эм
George
name: dir/some_image repository: private.registry.ru:1050
George
а почему не так?
Alexander
Я впервые с докером в ансибле работаю)
George
а доку почитать?
George
https://docs.ansible.com/ansible/latest/modules/docker_image_module.html
Alexander
Вот по ней и составлял
Alexander
Перечитаю еще раз
George
- name: pull docker_image: name: dir/some_image repository: private.registry.ru:1050/dir/ tag: v1.0 source: pull
George
попробуй еще такой варик
George
а еще лучше - расскажи что хочешь
George
т.к. When building an image downloads any updates to the FROM image in Dockerfile. Please use build.pull instead. This option will be removed in Ansible 2.12. The default is currently yes. This will change to no in Ansible 2.12.
George
это к pull
George
или вообще
George
- name: pull docker_image: name: private.registry.ru:1050/dir/some_image:v1.0 source: pull
George
такое ощущение, что ты какой-то оверинжиниринг сделал
George
просто с пушем там история такая, что он умеет перетегировать и запушить
George
https://t.me/pro_ansible/112276👆 @a_aversus
Alexander
- name: pull docker_image: name: private.registry.ru:1050/dir/some_image:v1.0 source: pull
Он все равно пытается тянуть с docker.io
Alexander
Вот поэтому спросил. Я по всякому переписывал репы