Andrey
вангую дело в ~
а как домашнюю директорию пользователя взять, под которым sudo запускается?
Igor
сделать sudo pwd от него и посмотреть что там написано
🐷
либо lookup env home
Павел
з
Nik
Привет, есть вопрос по AWX(или пните, где его стоит задавать). Если я настраиваю доступ к хостам по ключу, то могу ли я повыщать привелегии без пароля. То есть у меня есть N машин, на которые я буду логиниться не под рутом с AWX машины. На ней я сгенерировал ключ, раскидал по этим машинам, но мне нужны повышенные привелегии. Простити за нубский вопрос
Nik
ну то есть это уже не awx область, а вопрос "sudo без пароля при доступе по ключу" в целом
Nik
понял, спасибо
Nik
я понял, спасибо, прост не очень хотелось это почему-то делать, но видимо третьего не дано
Grek 🇺🇦
ansible_become_pass Пропиши в инвентори к тем хостам
Nik
ansible_become_pass Пропиши в инвентори к тем хостам
тогда нужно на каждом целевом хосте иметь пользователя с одинаковым паролем
Grek 🇺🇦
Не с одинаковым, а с тем, который ты знаешь. Инвентори для каждого такого хоста пропиши доп опцию
Gunnery
жаль только, что такое невозможно ( у меня не получилось) сделать на этапе установки ОСи (в preseed файле debian-installer'а )
元帥
Привет, подскажите в какую сторону смотреть. Есть задача написать сценарий ansible для расширения дисков на стороне vmware и внутри linux (с lvm). На стороне vmware все сделал, а вот как правильно найти соответствующие диски (которые были расширены) внутри линукса, не знаю, пытался найти что-то общее между ansible_facts и vmware_guest_disk_facts. Ansible версии 2.8.5.
Grek 🇺🇦
не мучаться с ансиблом и заюзать cloud-init. который расширит тебе партишн и фс на старте системы
元帥
Ты как расширял?
Через модуль vmware_guest_disk
Dmitry
Через модуль vmware_guest_disk
А посмотри, у него нет returnов?
Dmitry
Обычно модуль после отработки что-то возвращает, скорее всего он тебе может вернуть список дисков, которые менял
Dmitry
Через модуль vmware_guest_disk
https://docs.ansible.com/ansible/latest/modules/vmware_guest_disk_module.html#return-values
元帥
не мучаться с ансиблом и заюзать cloud-init. который расширит тебе партишн и фс на старте системы
Тоже думал в этом направлении, насчёт авторасширения на старте или по cron'у. Спасибо посмотрю в этом направлении.
元帥
https://docs.ansible.com/ansible/latest/modules/vmware_guest_disk_module.html#return-values
Все правильно, только вот проблема, номер scsi контроллера нормально не транслируются в scsi adapter number на уровне OS: host bus target lun Где таргет имеет такой же номер как и unit_number на стороне vmware. А вот значение host на одних машинах совпадает с номером scsi_controller'а, а на других вм нет.
Stefan
привет, юзаю модуль synchronize - name: Sync nginx_configs dir on the server synchronize: src: "$CI_PROJECT_DIR/nginx_configs/" dest: "/home/{{ ansible_user }}/nginx_configs" delete: yes recursive: yes links: yes подскажите, почему он добавляет перед переменной $CI_PROJECT_DIR - /etc/ansible? из-за этого не могу синкнуть файлы: change_dir \"/etc/ansible/builds/bar_site/nighty_avenue/nginx_configs\" failed: No such file or directory
Grek 🇺🇦
наверное потому что это такая переменная, используй относительные пути от playbook_dir, к примеру
Stefan
наверное потому что это такая переменная, используй относительные пути от playbook_dir, к примеру
я от этого вернулся( юзал inventory_dir хрень в том, что я хочу, чтоб ansible.cfg мой подхватывало, переместил всё в /etc/ansible и при таком подходе будет тоже конфликт несуществующих директорий, так как находятся в разных местах проект и ансибл единственное что может ansible.cfg скормить эту переменную.. не пробовал еще
Aleksey
А пробовал симлинк на ansible.cfg?
Grek 🇺🇦
зачем хранить cfg отдельно? на каждый проект свой, храни его в корне с плейбуком, и организуй все правильно. даже если проект и плейбуки отдельно хранятся - перед выполнением сложи все в одно место
Vitalii
Кто-то пробовал держать роли в гите и юзать их в плейбуке без отдельного запуска команды ansible-galaxy install -r ....
Grek 🇺🇦
хм, не
ну. тут надо с 2 сторон смотреть - если запускать не из CI - работает? и на сколько я понимаю использовтаь CI переменные в плее - не очень. переопредели их через vars, это даст гибкости
Grek 🇺🇦
можно ж даже просто копирнуть его в /etc/ansible да и всё по сути
да не надо этого. положи его рядом с плейбуком, конфиг будет приоритетней того что в /etc
Grek 🇺🇦
и твой плейбук станет самодостаточным
Aleksey
А нет переменной окружения, которая указывает на конфиг разве?
Sergey
Sergey
в таску, да
Эм, а кто её подставляет?
Grek 🇺🇦
так, то есть не так?
ну, выглядит так... убери гитлаб переменную из плейбука, пропиши ручками, проверь что работает, потом сложи все что надо копировать тут же в папу files и ходи к ней через files/ или через {{playbook_dir}}/files
Grek 🇺🇦
Sergey
та гитлаб же)
Гитлаб сам не исполняет плейбуки. Или я что-то пропустил?
Grek 🇺🇦
Гитлаб сам не исполняет плейбуки. Или я что-то пропустил?
а вот кстати - да, в файле он не воспринимает это как свою переменную по-ходу, когда-то мучался с таким в тимсити. но потом ушел от CI-йных переменных и все переписал на относительные пути. и ее надо передать через экстра варсы. о чем я и писал выше
Sergey
ну через gitlab-ci ansible-playbook role.yml и всё
Здесь исполняемый файл - это ansible-playbook. Он не знает ничего про переменные, это не баш. Если тебе нужно значение переменной - ты его получаешь как я написал выше.
Grek 🇺🇦
а что если нужно чтоб эта папка лежала в корне проекта? например мне тоже самое нужно сделать для папки content
передать CI переменные через extra-vars, а в плейбуке все переписываешь на внутренние переменные ансибла
Grek 🇺🇦
у каждого свой путь)
Stefan
у каждого свой путь)
- name: Generate nginx config connection: local template: src: sites.conf.j2 dest: "{{ inventory_dir }}/../nginx_configs/{{ item.domain_name }}.conf" with_items: "{{ bar_sites }}" - name: Sync nginx_configs dir on the server synchronize: src: "{{ inventory_dir }}/../nginx_configs/" dest: "/home/{{ ansible_user }}/nginx_configs" delete: yes recursive: yes links: yes при том что просто копирнул конфиг да и всё всем спасибо
Vladislav 👻
Подскажите, кто как делает закидывание архива и распаковку на сервер идемпотентно и чтобы по времени это было минимально, ибо архив большой?
🐷
хранить архив отдельно в хранилище, веб-сервере и т.д. и оттуда скачивать
Vladislav 👻
это логично, но unarchive делает следующее, он сначало качает архив, потом распаковывает во времянку и потом сравнивает файлы
Vladislav 👻
если архив приличного размера, то проверка будет занимать овер времени
🐷
можно проверять when: downloaded.changed
Vladislav 👻
это в рамках одного модуля
Sergey
это логично, но unarchive делает следующее, он сначало качает архив, потом распаковывает во времянку и потом сравнивает файлы
Ну логично. Твои файлы на сервере - это некое состояние, стейт. Раз ты его больше нигде не хранишь - он вычисляется. Либо переходи на хранение md5 этого архива в /etc/facts.d (оттуда автоматом факты подтягиваются).
Vladislav 👻
или предлагается отдельно качать и отдельно распаковывать?
Vladislav 👻
а можно чуть подробнее, как это можно организовать?
Vladislav 👻
не до конца понял, где хранить md5, когда его вычислять и прочее?
Vladislav 👻
можно примером тасок 😬
Sergey
1. качаешь архив 2. считаешь его md5 3. сравниваешь полученный хэш с тем, что лежит в /etc/facts.d 4. если одинаковые - ничего не надо делать 5. если разные - разворачиваешь куда нужно, обновляешь хэш
Sergey
Примеров тасок не будет - я такие штуки не делаю.
Vladislav 👻
ок, спасибо, пойду погуглю про /etc/facts.d
Sergey
вот для md5 https://docs.ansible.com/ansible/latest/modules/stat_module.html
Vladislav 👻
👍🏻
Sergey
ок, спасибо, пойду погуглю про /etc/facts.d
Да тут всё, в принципе, гуглится. Только добавлю ещё, что некоторые репозитории (в коммерческой версии точно) md5 прям рядом хранят, то есть качать отдельно и считать ничего не надо.
🐷
как архив скачивается то? в get_url делаем register result, в unarchive добавляем when: downloaded.changed
🐷
если в get_url добавить checksum, то changed будет реагировать на изменение checksum, а не атрибутов
zhag
Как просто в консоли проверить функцию?
zhag
Транкейт не транкейтит
zhag
У терраформа есть консоль
zhag
А у ансибла?