Случайные заметки

Облако от гугла

  1. Потребуется кредитная карточка. Деньги списываться не будут. Данная инструкция работает на linux и macos.

  2. Создаём аккаунт на cloud.google.com.

    В России придётся делать вид, что ты не частное лицо, а предприятие. Или делать вид, что ты частное лицо, но в Антарктиде :) Я сделал вид, что я — предприятие.

  3. Создаём проект кликая мышкой.

    Далее будем работать через командную строку. Мышкой, конечно, нагляднее, но протоколировать и быстро повторить действия гораздо тяжелее :)

  4. Скачиваем и устанавливаем google cloud sdk.

    • скачиваем;
    • разархивируем, скажем, в папку ~/Downloads/google-cloud-sdk;
    • запускаем терминал;
    • заходим в нужную папку cd ~/Downloads/google-cloud-sdk;
    • инсталлируем ./install.sh
    • помогать ли гуглу, решайте сами, а на вопрос про папку можно просто клинуть энтер;
    • закрываем терминал и запускаем терминал заново;
    • инициализируем gcloud init
  5. Перед созданием виртуальной машины (ВМ) посмотрим доступные образцы операционных систем, возможных зон и мощностей:

    gcloud compute images list
    gcloud compute zones list
    gcloud compute machine-types list
    
  6. Смотрим на ценник разных виртуальных машин

  7. Выбираем любую временную зону, свежую убунту и мощности по карману для нашей первой виртуальной машины

    gcloud compute instances create rstudio2 --image-family ubuntu-1710 --image-project ubuntu-os-cloud --machine-type n1-standard-4 --zone europe-west4-c
    

    Опций у этой команды много разных, можно посмотреть с помощью команды:

    gcloud compute instances create --help
    

    Для совсем новичков в командной строке: чтобы отдохнуть от чтения документации можно кликнуть q.

    Список всех наших машин:

    gcloud compute instances list
    
  8. Мне надоело указывать зону каждый раз, поэтому я установил настройки по умолчанию:

    gcloud config set compute/zone europe-west4-c
    gcloud config configurations list
    

    Теоретически, можно иметь ВМ с одинаковыми именами в разных зонах, но этот масштаб мне пока не нужен :)

  9. Создаём правило, которое разрешает Rstudio Server работать на порту 8787:

    gcloud compute firewall-rules create allow-rstudio --allow=tcp:8787
    

    Это правило по умолчанию будет применяться для всех ВМ (?)

    Список всех правил:

    gcloud compute firewall-rules list
    

    Здесь может быть потенциальная опасность: если правила разрешают слишком много, то машину смогут атаковать плохие дяденьки и тётеньки! И начать майнить криптовалюту или атаковать какой-нибудь белый и пушистый сайт :)

    Для справки:

    gcloud compute firewall-rules --help 
    
  10. Наконец заглянем на нашу ВМ! Как там она поживает?

    gcloud compute ssh rstudio2
    

    При первом логине потребуется создать ключ ssh и придумать пароль. При наборе пароль не виден, это нормально!

    Если не настраивать временную зону по умолчанию, то соединяться с машиной приходится чуть длиннее:

    gcloud compute ssh rstudio2 --zone europe-west4-c
    
  11. Ставим свежую версию R на нашу машину.

Во-первых мы добавим нашей убунте репозиторий, из которого будет ставиться R. При этом надо уточнять версию убунту. У нас поставлена убунту версии 17.10 с кодовым именем artful. Поэтому добавка репозитория делается так: Во-вторых, добавляем ключ, которым подписаны все пакеты R на CRAN:

   sudo sh 'echo "deb https://cloud.r-project.org/bin/linux/ubuntu artful/" >> /etc/apt/sources.list'
   sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
   sudo apt update
   sudo apt install r-base r-base-dev

Первая команда добавляет строку deb https::/cloud.r-project/bin/linux/ubuntu artful/ в конец файла /etc/apt/sources.list. Это можно сделать и руками запустив редактор vim: sudo vim /etc/apt/sources.list. Далее войти в режим редактирования нажав i. Добавить строку, сохранить, и выйти нажав Esc, затем :wq и энтер.

  1. Добавки для пакетов:

Для семейства tidyverse и devtools:

   sudo apt install libcurl4-openssl-dev libssl-dev libxml2-dev
   sudo apt install libssh2-1-dev

Для работы с гео-данными: (?что-то тут не взлетает)

   # commented out: sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
   # commented out: sudo apt update && sudo apt upgrade
   sudo apt install libgeos-dev libproj-dev libgdal-dev libudunits2-dev

Разумно попробовать последнюю без первых двух (?, ибо что-то там не взлетело?)

  1. Скачиваем и устанавливаем Rstudio Server.

Весь нужный код с номером свежей версии написан на страничке Rstudio Server:

   sudo apt-get install gdebi-core
   wget https://download2.rstudio.org/rstudio-server-1.1.442-amd64.deb
   sudo gdebi rstudio-server-1.1.442-amd64.deb

На вопрос Do you want to install the software package? отвечаем yes.

  1. Гугл создаёт на машине пользователя без пароля. И поэтому этот главный пользователь не может использовать Rstudio Server. Мы создадим нового пользователя, точнее новых пользователей!

У нас будет два новых пользователя, sasha и masha, относящиеся к одной группе team. И оба они будет иметь доступ на чтение и запись к папке home/sasha/project.

Поехали:

   sudo adduser sasha
   sudo adduser masha

На вопросы про адрес и личные привычки можно не отвечать :)

   sudo groupadd team
   sudo gpasswd -a masha team
   sudo gpasswd -a sasha team

Создаём папку у пользователя sasha, указываем пользователя по умолчанию и группу владельцев и даём всем доступ на чтение и запись (770):

   sudo mkdir /home/sasha/project
   sudo chown -R sasha:team /home/sasha/project
   sudo chown -R 770 /home/sasha/project
  1. Логинимся за Сашу и ставим пакеты R и что-нибудь клонируем с гитхаба:
   su - sasha
   R

Оказавшись в R:

   install.packages(c("tidyverse", "caret", "forecast"))

Это ж линукс, клонируем с гитхаба без дополнительных программ :)

   git clone https://github.com/user/repository.git

Выходим за Сашу:

   exit

Логинимся за Машу и из её домашней папки создаём ссылку на Сашину папку /home/sasha/project

   su - masha
   ln -s /home/sasha/project /home/masha/project
   exit
  1. Теперь можно подключиться к нашей машине зайдя от лица Саши или Маши:

Смотрим внешний IP адрес:

   gcloud compute instances list

В браузере набираем внешний IP и после :8787, примерно так ‘35.xxx.xxx.xxx:8787’ и жмём энтер :)

Интересно, будут ли от лица Маши стоять пакеты?

  1. Копируем файлы на виртуальную машину и обратно
   gcloud compute scp --recurse rstudio2:/home/sasha/project ~/project_local_copy

Опция --recurse скопирует все подпапки и файлы в них.

  1. Челябинские парни обходятся без Rstudio Server:

Логинимся на машину с помощью

   gcloud compute ssh rstudio2

Запускаем tmux.

   tmux

Запускают чистый R внутри tmux

   R

Запускают внутри R свой мега-скрипт.

Жмакают ctrl-b а затем d.

Выходят с машины:

   exit

При этом процесс внутри tmux запущен и работает!!!

После некоторого времени возвращаются обратно на ВМ и подсоединяют сессию в tmux

   tmux attach
  1. Останавливаем и запускаем машину и прочее :)
   gcloud compute instances stop rstudio2
   gcloud compute instances start rstudio2

Описание машины:

   gcloud compute instances describe rstudio2

Заходим на запущенную машину и выходим из неё:

   gcloud compute ssh rstudio2
   exit

Обновляем находясь на самой машине:

   gcloud components update
   apt update
   apt ugrade

После четырёх дней работы моей первой виртуальной машины, я получил предупреждение от гугла, что она майнит криптовалюту :) После апелляции гугл сказал, что это ошибка их алгоритма :)