Даня
почему не хранить конфиги где-нибудь в гитлабе?
Даня
или я чего-то не понял?
Aleksey
так же почему нельзя использовать etckeeper
Aleksey
да там много вопросов на самом деле
Dmitry
те что должны быть - храняться в гите. но есть те что _по_факту_
Roman
и нет физической возможности наблюдать за всеми diff.
но есть возможность пойти и (наверное) ручками потом вытащить конфиг из бэкапа и вернуть его на место. А учитывая пожелание к истории версий, значит это произойдет видимо даже не сразу, а когда первый бэкап будет затерт.
Даня
под конфигами имел ввиду плейбуки и прочее барахло, сори
Asten
по факту и должны быть в гите)
Dmitry
Даня
а бекапить конфиги тем же duplicity
Dmitry
Даня
у меня это реализовано duply+s3
Dmitry
нужно при обновлении через ansible
Dmitry
сделать бакап
Dmitry
не так как делает ansible, а по нормальному
Даня
а
Dmitry
по дефолту и не в туже директорию
Aleksey
Roman
Лучше возложить роль бэкапа на систему управления конфигами. Okay.
Даня
никогда не слышал об etckeerper. почитаю. спасибо за инфо
Даня
в проде можно использовать его?
Dmitry
я наверное плохо донес. надеюсь. вообщем всем спасибо.
Asten
по дефолту и не в туже директорию
у тебя есть конфиг на сервере, он должен совпадать с тем конфигом который у тебя в гите. когда ты выкатываешь изменения то коммитишь новый конфиг. нужен старый потом? - возьми из гита
Даня
а, я и думаю, почему я о нем не слышал)))
Bogdan (SirEdvin)
Мечты-мечты
Aleksey
он просто был до широкого распространения упраления конфигурациями gitops и вот это всё.
Aleksey
у меня какое то время назад еще стоял плагин для vim который делал rcs
Aleksey
https://github.com/vim-scripts/rcs.vim
Aleksey
туже задачу решают.
Aleksey
... решали
Даня
2010, я с пацанами в линейдж шпилил в это время и даже не знал, что такое гит)))))
Denis 災 nobody
Aleksei
Народ, я правильно понял, что создание local facts это ansible way. И всякие триггерные файлы по которым Ansible понимает, выполнять тот или иной таск лучшее заменить на local facts?
Пример тасков, которые я думаю заменить на local facts:
- name: Check updated state
stat:
path: /root/updated.state
register: updatedState
- name: Update all packages
yum:
name: '*'
state: latest
update_cache: yes
when: updatedState.stat.exists == false
- name: Create file /root/updated.state
file:
path: /root/updated.state
state: touch
when: updatedState.stat.exists == false
Asten
Поясни какую проблему ты решаешь?
Aleksei
Мне надо при создании машины, надо, чтобы ПО обновилось единожды. Т.е. при повторном запуске Playbook не запускал yum update *
Lev
А зачем latest? Чем present не угодил?
Aleksei
present == install, разве нет?
Asten
Напиши буку в которой будешь производить начальную конфигурацию машинок и гоняй ее отдельно от всего другого 1 раз при создании машины
Aleksei
Есть в планах разделить роли создания/удаления машинок от остальных ролей, но пока всё запускается последовательно и... И я ищу, какой костыль бы воткнуть, чтобы всё пока работало так =)
Aleksey
Asten
Aleksei
Что обычно, кстати, вы в local facts закидываете? И вообще, используете ли?
Aleksey
нет не использую. недостатоверный механизм
Aleksei
Aleksey
по тому с чем ты имеешь дело.
Aleksei
Эм... Что ты в неё поместишь - то и вернётся. Это как локальное хранилище значений. Не понимаю, в чём недостоверность... Скорее всего, я просто не шарю =)
Vadim
Aleksei
Nklya
Я думаю Алексей имеет в виду хранить там лок файлы разные.
Я тоже пришел недавно к этой идее, но пока не проверял
Aleksei
Asten
Для переменных машины есть hosrvars
Aleksey
мой посыл в том что ты локальные факты рушат архитектуру. считается что контрольных хост умный а сервер нет. создавая не проверяемый дургим способом локальный факт ты стреляешь в ногу ибо локальный факт может не соответствовать действительности.
создавая локальный факт который проверяется другим способом ты дублируешь функционал потенциально без нужды.
Aleksey
из того что я помню у тя локлаьный факт будет в том что хост обновлен. но одноразовость задачи довольно иллюзорная тема. в ойти одноразовых задач вообще чего то нету. все повторяемые если брать чуть больший горизонт планирования.
Aleksey
поэтому у тебя сейчас хост обновлен а с точки зрения ноября у тя 4 уязвимости в ядре и 2 минимум в процессоре. так что хост снести нафиг и перестаивть только
Lev
Конкретные версии пакетов + present
Lev
Ну или метапакет с явно указанными зависимостями
Aleksei
Ага, суть понял. Если я хочу, чтобы у меня виртуалки выкатывались с самыми свежими версиями пакетов, то я раз в месяц (к примеру) создаю образ с виртуалкой на которой выполняю Full Update и просто его использую. А в основной роли, как максимум использую проверку, что (к примеру), версия ядра должна быть не ниже 4.4. Правильно?
Lev
Эталонный образ виртуалки можно через packer удобно создавать. Там из коробки поддерживается провижинер ансибла
Lev
Lev
Если добавить темтирование этих виртуалок через testkitchen/molecula/testinfra/inspec то можно будет спать спокойней
Lev
Тип того
Lev
Под капотом все банально
1 пакер стартует хттп сервер
2 стартует виртуалку
3 виртуалку бутит, что бы стянула кикстарт файл
4 отрабатывает кикстарт, подымает сеть, делает что надо
5 вм в ребуте, пришла сеть - допровижинивает как надо
6 экспортим и пакуем виртуалку
Lev
Вариантов настроек километр. Это порождает опасность ошибиться. Настойчиво рекомендую задуматься о тестирование для этого счастья
Aleksei
Понял. Спасибо всем за дискуссию! ^^
Aleksei
Пошёл думать, как привести всё это в тот вид, в котором оно и должно быть =)
Lev
1 ci - jenkins/gitlab/teamcity
2 vm builds - packer ( можно nested virtualization) под каждую платформу
3 артифакторий - nexus/artifactory/s3
4 vm tests - testkitchen / molecula / testinfra
5 infrastructure provision - terraform/ nomad/ cloudfront
Ну и на каждом уровне никто не отменял своих костылей и велосипедов
Nklya
Артифакторий))
Lev
Чем слово не угодило Оо
Nklya
Я люблю собирать нелепые переводы англоязычных терминов
Lev
А как правильно перевести? Хранилище артефактов?
Nklya
Например
Tadeusz
профилакторий