Плейбук для инициализации разработческого сервера Директа (ppcdev)

=== TODO

недавно добавилось, для ppcdev3 внести в playbook'и
#sudo mkdir /var/spool/direct-ui-deps-cache 
#sudo chmod a+w /var/spool/direct-ui-deps-cache
#yandex-du-zlo_0.0.2-1_all.deb yandex-du-zlo-0-0-2_0.0.2-1_all.deb

# переложить в consul
ssh ppcdev2.yandex.ru tar -czf - /etc/group-grants |sudo tar -xzf - 

ppcdev3: почему-то
sudo apt-get install yandex-yt-python=0.6.98-1
sudo apt-get install libsocket-perl=2.013-1

sudo -u ppc svn upgrade /var/www/svn-trunk-cache
sudo /usr/sbin/add-group-users

consul


Много секций про "установить пакеты". 
Объединить бы в общий блок, притом так, чтобы можно было время от времени перезапускать на уже работающих ppcdev'ах 
(для установки того, чтобы устанавливать то, что не ставится через ppcdev-dependencies)

+ см. метки TODO ниже по тексту

=== /TODO

Примерный порядок запуска нового ppcdev:

NB: запятая после хостнейма в аргументах ansible-playbook нужна, без нее аргумент -i используется как файл

1. Если ppcdev новый или IP отличается от старого: учесть ppcdev в:

 * ts-updater, ts-updater-keys
   новые пакеты собрать, дальше ansible их поставит автоматически

 * грантах на тестовых базах (понадобятся IP-адреса машины):
   добавить хост здесь: direct-utils/releaser/trunk/releaser/flagman/docs/direct/direct-test-mysql-grants.yaml
   собрать и раскатить пакеты Табулы
   на всех базах (devtest dev7 test test2 testload) запустить:
     /usr/local/bin/sync-db-prepare-direct-grants.pl ppcdata{1..6} ppcdict ppcfiles ppclog ppcmonitor ppcpricelog ppcstat rbac2 sandbox

 * beta-nginx
   нужно учесть порты нового сервера в yandex-du-beta-nginx-conf/etc/nginx/conf.d/beta-port-redirect.conf
   пакет с изменениями раскатить на все ppcdev, сделать на всех ppcdev beta-nginx-restart через beta-update

 * beta-ports
   новый пакет собрать, дальше ansible его поставит автоматически

 * project_specific
   новый пакет собрать, дальше ansible его поставит автоматически

 * ACL для Intapi: поменять переменную @PPCDEVS в Intapi.pm в коде Директа
XXX: а как скоро это выедет? как проверить?

2. Поставить пакеты и создать файлы/каталоги

полная форма: 
ansible-playbook direct-ppcdev.1.init.playbook.yml -i ppcdevN.yandex.ru, -v --extra-vars "conf=dev version=1.90209-1 nginx_version=1.6.2-1.yandex.11"

версия Директа по умолчанию возьмется самая свежая, а nignx -- захардкожена в плейбуке, так что в первый раз можно так:
ansible-playbook direct-ppcdev.1.init.playbook.yml -i ppcdevN.yandex.ru, -v --extra-vars "conf=dev"

когда какой-нибудь пакет yandex-direct-conf-* уже поставлен, по умолчанию будет продолжать обновляться он, так что можно просто: 
ansible-playbook direct-ppcdev.1.init.playbook.yml -i ppcdevN.yandex.ru, -v

CHECK:
пользователи входят в группу ppc
id `whoami`|grep ppc

Перелогиниться! Иначе группа не будет применяться корректо в "старых" сессиях.

3. Ручная настройка:

 * direct-access-check -- проверить дырки/ACL, заказать, каких не хватает

 * привезти сертификаты в /etc/direct-ssl
-- ppcdev2: отсутствует
 * привезти ssh-ключ пользователя ppc, можно скопировать /home/ppc/.ssh откуда-нибудь
ssh ppcdev1.yandex.ru sudo tar -czf - /home/ppc/.ssh |sudo tar -xzf -
ssh ppcdev1 sudo tar -czf - /etc/direct-ssl/cachain.pem-direct |sudo tar -xzf -
ssh ppcdev1 sudo tar -czf - /etc/direct-ssl/cachain.pem-all |sudo tar -xzf - 
ssh ppcdev1 sudo tar -czf - /etc/direct-ssl/allCAs.pem |sudo tar -xzf -
ssh ppcdev1.yandex.ru sudo tar -czf - /etc/robot-direct-dmover-keys |sudo tar -xzf -
-- все это уже делается или будет делаться админской плейбукой, на следующем ppcdev проверить и удалить из инструкции
ppcdev2: отсутствует 
ssh ppcdev1 sudo tar -czf - /etc/direct-ssl/ |sudo tar -xzf -

 * привезти /home/ppc/.startrek_client_token, можно скопировать с другого ppcdev
 cd / ; ssh ppcdev1 sudo -u ppc tar -czf - /home/ppc/.startrek_client_token |sudo -u ppc tar -xzf -
-- а еще yt? -- собрать список токенов и написать тикет админам про "раскладывать по всем ppcdev"
ppcdev2: отсутствует
???
ssh ppcdev1 sudo tar -czf - /etc/robot-direct-dmover-keys/id_rsa |sudo tar -xzf -

 * если новый ppcdev: зарегистрировать в Табуле, что на этом сервере можно создавать автобеты; и что он входит в группу ppcdev в смысле версионики
   автобеты: releaser/trunk/releaser/settings/direct.py, переменная называется AUTOBETA_URL
   группа ppcdev: releaser/trunk/releaser/versionica/groups.direct.yaml
   собрать и раскатить пакеты Табулы
   чтобы содержимое группы попало в базу, нужно ещё сходить на /versionica/hostgroup и нажать на кнопку
(XXX Табула не сможет взять и создать автобету, не хватит .ssh/known_hosts)

 * если новый ppcdev: создать для сервера juggler-проверки (dev-juggler-checks)
   в direct-utils/dev-juggler-checks/dev.yml записать сервер дважды: в общий список и в список серверов с автобетами


4. Запустить все нужные демоны, воркеры, веб-серверы:
ansible-playbook direct-ppcdev.2.start.playbook.yml -i ppcdevN.yandex.ru, -v 

CHECK: работает главная бета https://betaN.direct.yandex.ru/registered/main.pl


5. Если новый ppcdev: сделать так, чтобы beta-update --ppcdev-all выполнял действия и на нём тоже

6. Отдельно проверить: скрипт /usr/local/bin/update-trunk-cache.pl (запускается от пользователя ppc) работает, кэш создаётся
в каталоге /var/www/svn-trunk-cache
TODO: проверить при наливке следующего ppcdev

7. Поставить серверную часть direct-test-update:
ansible-playbook -i ppcdevN.yandex.ru, -v direct-ppcdev.3.ts-updater.playbook.yml

8. В /etc/sysctl.d/90-inotify-watches.conf положить строчку «fs.inotify.max_user_watches=20000», перечитать конфиг sysctl (sudo sysctl -p)
sudo echo fs.inotify.max_user_watches=20000 | sudo tee -a /etc/sysctl.d/90-inotify-watches.conf && sudo sysctl -p


CHECK: 
работает dmove
echo aaaaa=222 | sudo /usr/local/bin/direct-dist.py dmove_testing_from_file:direct-precise,-

CHECK: 
создается бета
direct-create-beta

CHECK: 
апдейтится бета
direct-mk up

CHECK: 
собирается и выкладывается Директ
cd packages && make && dupload
beta-update <version>

=================

python-fabric=1.10-2
сменился путь к fab на /usr/local/bin/fab


