Dima
ну тут кроме как через when не сделать
Dima
через when пробовал? # Obtain the stats of /etc/foo.conf, and check that the file still belongs # to 'root'. Fail otherwise. - stat: path=/etc/foo.conf register: st - fail: msg="Whoops! file ownership has changed" when: st.stat.pw_name != 'root'
Dima
http://docs.ansible.com/ansible/stat_module.html#examples вот короче примеров там
yopp
о
yopp
а вот - { include: bla.yml, when: foo == false } интересно
Dima
да, очень удобно, спасибо.
yopp
я правильно понимаю что host_vars перекроет vars из плейбука?
yopp
а чо, таска на cp -r нет? :(
Dima
да, там факаут )))
Dima
используешь copy или fetch?
Dima
короче для copy это работает без loop вот так: - name: transfer all files in directory to target host become: yes copy: src=local_dir dest=/root/directory/ tags: transfer
Dima
local_dir у тебя в папке с плейбуком лежит, в ней сколько угодно файлов
yopp
мне надо на хосте покопировать :(
Dima
интересный вопрос!
Dima
я это делал, через with_items.
Dima
пример надо?
yopp
не, мне именно аналог cp -r надо
yopp
там исходники ядра надо переложить в другое место :)
Dmitry
пацаны из фабрика отаке эгэйн? :)
Dmitry
надо "переложить", поставь симлинк бля :)
Dmitry
(ко вчерашнему разговору об отличиях программистов и админов - у программиста одна извилина обычно) :)
Dima
- name: create separate directory file: path=New.Directory state=directory tags: transfer - name: copy all files to separate directory become: yes shell: cd Old_Directory; find . -type f -exec cp {} New.Directory/ \; tags: transfer
Dmitry
^^^ вот это и называется пацаны из фабрика лезут на свет
Dima
я это делал, через with_items.
через with_items другое делал, это и через shell отработало без регистра, короче.
yopp
(ко вчерашнему разговору об отличиях программистов и админов - у программиста одна извилина обычно) :)
да, особенно когда «админы» нихуя даже в задачу не вникают и лезут со своими охуительными предложениями
Dmitry
нужно больше шелла в ансибле, больше шелла
Dmitry
идемпотентность во все поля сука
yopp
мне надо из папки а положить файлы в папку б, в которой уже лежит всякое говно
Dmitry
хоть бы creates добавили, уебашки программистские, из чего угодно сделают скрипт на баше
yopp
и всё это говно собрать
yopp
идемпотентность во все поля сука
папка а и папка б качаются из источника, подавись своей индепотентностью
yopp
pun intended
yopp
щас мне начнут overlayfs предлагать, да? :)
yopp
смонтировать одно поверх другого
Dmitry
при следующем прогоне плейбука тоже качаются? и тоже find ? :D shell: cd Old_Directory; find . -type f -exec cp {} New.Directory/ \; вот это говно каждый раз, судя по его плейбуку. да давитесь своей хуйней на баше, кто вас неволит
Dima
Дмитрий… ты нам покажи правильный путь, направь ))))))
yopp
яб с удовольствием через copy module с copy=no сделал, но оно чексумму проверять не умеет
Dmitry
не начнут предлагать. собирать на сервере что-то - это тоже очень "по-программистски", если тебе скажут, что надо собрать один раз, положить в репозиторий, и плейбуком оттуда ставить, ты скажешь, что админишка не вник в твою охуительную задачу
Dima
давай, пример ) в лучших традициях ansible-way
Dmitry
давай, пример ) в лучших традициях ansible-way
я уже все сказал вроде, нет? или вместо тебя сразу playbook написать ? :(
Dima
ну не плейбук а пример хотя бы. он билет на ansible fest же не обеспечит, поделись опытом? а то одни эмоции
Dima
а мы все спасибо скажем и будем использовать
Dmitry
ну не плейбук а пример хотя бы. он билет на ansible fest же не обеспечит, поделись опытом? а то одни эмоции
- name: create separate directory file: path=New.Directory state=directory creates: New.Directory tags: transfer - name: copy all files to separate directory become: yes shell: cd Old_Directory; find . -type f -exec cp {} New.Directory/ \; creates: New.Directory tags: transfer
Dmitry
хотя бы вот так
Dmitry
я тебе ошибку оставил, чтобы ты чуток мозгами пошевелил
Dmitry
дальше там сам :)
Dmitry
ошибка причем не синтаксическая, а в логике :)
Dima
не вижу пока ошибку, у меня это работает, может быть менял имена директорий и что-то стер
Dmitry
нет :) там ничего не стерто, там добавлено две строчки
Dmitry
расскажи мне как собрать zfs для кастомного ядра, так чтоб я потом из репозитория мог через dkms это ставить
собрать кастомное ядро, собрать zfs, все положить пакетами в репозиторий, из репозитория ставить
Dmitry
даже в генте именно так это будет правильно
я боюсь рассказать пацанам, что на нормальных серверах build-essentials (в убунтовской терминологии) вообще не ставят.
Dmitry
gcc на сервере нужен для того, чтобы руткит собрать проще было :)
Denis 災 nobody
Вот да, никаких гцц на продакшене недопустимо
Lex
gcc на сервере нужен для того, чтобы руткит собрать проще было :)
если есть возможность что-то выполнить — собрать не проблема
Denis 災 nobody
Но я сам ищу баланс между "пакет на любой чих" и прямая выкатка тем же ансиблом
Denis 災 nobody
Ядро да
Denis 災 nobody
Но у меня и юм-репо на нашу репу так же пакетом, чтобы централизованно обновлять спек
Denis 災 nobody
С 1 файлом
Dmitry
Но я сам ищу баланс между "пакет на любой чих" и прямая выкатка тем же ансиблом
вообще у тебя уверен, с этим проблем то как раз не будет. просто потому, что ты об этом как минимум задумываешься. а дальше вариантов много - например, сначала все выкатишь, а потом финальным таском в плейбуке подчистишь компиляторы и т.д.
Dmitriy
не, мне именно аналог cp -r надо
в самом питоне cp -ar как такового нет :( с еблей некоторой надо делать
Dmitriy
вашу проблему с копированием надо модулем synchronize или как он там
Dima
а кстати модуль sync же есть, он умеет синхронизировать две удаленные папки?
Dmitriy
рсинком в общем
Dima
хахахаха
Dmitriy
он правда по уебански работает, надо бы переписать
yopp
в словах @cadmi быда некоторая доля смысла, так что я собрал dkms и выяснилось что dkms умеет весело делать deb