вторник, 1 сентября 2015 г.

CoreOS установка на VPS


 Я просто развернул мою первую CoreOS. Процес описанный в документах немного запутанный и немного не понятный в некоторых местах. CoreOS все еще разрабатывается, потому документацию они улучшат, я уверен в этом. В то же время, я надеюсь, этот пост немного поможет другим разобраться.
 Я взял стандартный VPS от моего хостинг-провайдера, виртуализация работает на KVM. Мой хостинг-провайдер предоставляет консоль через NoVNC и предоставляет возможность подключать загрузочный ISO образ.

Загрузка из ISO

С помощью прилагаемого ISO от CoreOS, загрузите виртуальную машину. Вы попадете в конечном итоге в командную строку под пользовалелем core . В этот момент, вы просто запустили LiveCD и еще ничего не установили на диск (в документации это нигде не упоминается!).
В моем случае сеть еще не настроена, так что нужно это сделать вручную следующим образом:
sudo ifconfig <network port> <ip address> netmask <netmask>
sudo route add default gw <default gateway IP>
Добавляем /etc/resolv.conf  IP ваших серверов имен. Я использую  гугловые. nameserver 8.8.8.8

Конфигурационный файл

После того, как сеть настроена, следующее что нужно сделать, это составить конфигурационный файл, который будет использоваться каждый раз, когда уставливается CoreOS с диска. На другом хосте, куда можно попасть через сеть, я создал следующий файл с именем cloud-config.yml:
#cloud-config

hostname: myhostname

coreos:
  etcd:    
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
    - name: static.network
      content: |
        [Match]
        Name=ens3

        [Network]
        Address=x.x.x.109/24
        Gateway=x.x.x.1
        DNS=x.x.x.10
        DNS=x.x.x.11 
        DNS=8.8.8.8
users:
  - name: core
    ssh-authorized-keys: 
      - ssh-rsa AAAA<rest of ssh key goes here>
  - groups:
      - sudo
      - docker
Укажите свои hostnamediscovery:[Network] и ssh-rsa параметры.
ВАЖНО: не забудьте запустить конфигурационный файл через YAML парсер, чтобы проверить наличие глупых ошибок. Например, я случайно забыл поставить символ - перед одним из ключей, по этому конфиг не мог запустить установку.

Установка

  1. Скопируйте конфигурационный файл к себе на VPS. wget http://externalhost/cloud-config.yml
  2. Установить CoreOS с помощью команды:
coreos-install -d /dev/vda -c cloud-config.yml
Замените /dev/vda на имя вашего диска и cloud-config.yml на имя вашего конфигурационного файла. Установка займет порядка 30 секунд. По окончанию отмонтируйте ISO образ и перезагрузите виртуальную машину
После загрузки вы увидите приглашение ввода логина. Если ваш конфигурационный был успешно загружен, вы должны увидеть IP-адрес и имя хоста (вы его указали в конфигурации), перечисленных чуть выше. Вы также  можете зайти на сервер по SSH, ssh core@x.x.x.x

Фаервол
По умолчанию CoreOS загружается с полностью открытыми политиками брандмауэра. В большинстве случаев это хорошо, поскольку интерфейс управления вашего хоста будет изолирован от сети. В моем случае нужно настроить некоторые основные правила Iptables.
Это можно сделать добавив в конфигурационный файл cloud-config.yml:
- name: iptables.service
      command: start
      content: |
        [Unit]
        Description=Packet Filtering Framework
        DefaultDependencies=no
        After=systemd-sysctl.service
        Before=sysinit.target
 
        [Service]
        Type=oneshot
        ExecStart=/usr/sbin/iptables-restore /etc/iptables.rules ; /usr/sbin/ip6tables-restore /etc/ip6tables.rules
        ExecReload=/usr/sbin/iptables-restore /etc/iptables.rules ; /usr/sbin/ip6tables-restore /etc/ip6tables.rules
        ExecStop=/usr/sbin/iptables --flush;/usr/sbin/ip6tables --flush
        RemainAfterExit=yes
 
        [Install]
        WantedBy=multi-user.target
Затем я создал файлы /etc/iptables.rules и /etc/ip6tables.rules, содержащие соответствующие наборы правил. Они применяются каждый раз, когда загрузается система.

Поиск проблем

Если по какой-то причине, ваш конфигурационный не сработал:
  1. Перезапуститесь с образа ISO.
  2. Смонтируйте раздел , например, так. sudo mount /dev/vda9 /mnt(посмотреть все диски можно так sudo parted /dev/vda print)
  3. Используйте journalctl чтобы увидеть логи загрузки, поискать ошибки связанные с устновкой journalctl -D /mnt/var/log/journal | grep cloud
  4. Отредактируйте файл /mnt/var/lib/coreos-install/user_data и сделайте какие-то изменения в системе
  5. Отмонтируйте ISO образ и перезапуститесь

Источник http://blog.mapstrata.com/post/CoreOS_install_to_a_VPS/