Automatyczna instalacja supla (server,cloud,dev)

Post Reply
alv
Posts: 74
Joined: Sat Jul 09, 2016 11:36 am

Sat Dec 17, 2016 3:57 pm

Wiele osób pyta jak zainstalować własny serwer, przygotowałem coś, co z pewnością to ułatwi. Do swoich projektów wykorzystuję ansible (oprogramowanie m.i.n do auto-provisioningu), pozwala to szybko odtwarzać konfigurację serwera bez konieczności logowania się na niego. Wystarczy uruchomić zdefiniowaną rolę. (według założeń z komputera lokalnego na serwer zdalny)

https://github.com/alv91/ansible-role-supla

Nic nie szkodzi by uruchomić ansible lokalnie, skonfigurowanie serwera powinno być zatem banalnie proste. Wystarczy zalogować się na swojego użytkownika z uprawnieniami sudo i wykonać kilka poleceń. Pisałem i testowałem na Debian 8, Ubuntu 16.04 (architektura bez znaczenia). Instalacja trwa zależnie od wydajności jednostki 5-25 min.

Code: Select all

sudo apt-get update
sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev -y
sudo pip install --upgrade pip
sudo pip install ansible
mkdir -p ~/ansible/roles
cd ~/ansible
git clone https://github.com/alv91/ansible-role-supla roles/supla
Utworzyć plik playbook.yml i uzupełnić

Code: Select all

---
- hosts: all
  become: true
  vars:
    mysql_root_pass: secretpassword
    supla_database_password: secretpassword
    install_supla_server: True
    install_supla_cloud: True
    install_supla_dev: True
    supla_generate_cert: True
    supla_server: supla.example.com
  roles:
    - role: supla
Można podać więcej zmiennych (trzeba pamiętać o wyrównaniu linii)

Code: Select all

supla_mailer_transport: null
supla_mailer_host: null
supla_mailer_user: null
supla_mailer_password: null
supla_mailer_port: null
supla_mailer_encryption: null
supla_mailer_from: null
supla_admin_email: null
supla_server: supla
supla_server_list: null
supla_locale: en
supla_ewz_recaptcha_public_key: null
supla_ewz_recaptcha_private_key: null
supla_secret: generatesecrethashhere
Następnie można uruchomić instalację

Code: Select all

ansible-playbook -i "localhost," -c local playbook.yml -k -K -s -D
Poprosi o hasło do usera, potem sudo (można dać enter)

Gdyby wywalił się na "Git clone", wywołajcie polecenie powyżej jeszcze raz. (W module git oprogramowania ansible jest bug, który dostał już poprawkę, ale nie została wydana jego nowa wersja)

Kilka uwag:
Nie wykonuj z roota
Zmienne install_supla_* ustawione na True będą za każdym razem instalować najnowszą wersję oprogramowania dostępną na github.
Zmienna supla_server definuje nazwę serwera, która jest dodana do symfony, certyfikatu i apache2 jako servername.
Jeśli nie podasz kluczy recaptcha instalator wyłączy jego obsługę.
Zmienną supla_generate_cert możesz wyłączyć generowanie certyfikatu, np. gdy chcesz dodać własny lub uruchomić letsencrypt.
Po zainstalowaniu możesz się zarejestrować, dodać urządzenia, lokalizacje. Pamiętaj jednak, że do poprawnej aktywacji potrzebujesz skonfigurowanej funkcji "mail", czyli zmiennych "mailer".

Jeśli ktoś ma jakieś uwagi, proszę pisać.
moondec
Posts: 28
Joined: Sun Oct 30, 2016 7:54 pm

Sat Dec 17, 2016 10:16 pm

Pisałem i testowałem na Debian 8, Ubuntu 16.04 (architektura bez znaczenia).
Może to naiwne pytanie. Czy na innych dystybucjach też to zadziała? OpenSuSE?
User avatar
nowy1
Posts: 322
Joined: Fri Jul 01, 2016 11:51 am
Location: Warszawa

Sat Dec 17, 2016 10:35 pm

alv wrote:Wiele osób pyta jak zainstalować własny serwer, przygotowałem coś, co z pewnością to ułatwi. Do swoich projektów wykorzystuję ansible (oprogramowanie m.i.n do auto-provisioningu), pozwala to szybko odtwarzać konfigurację serwera bez konieczności logowania się na niego. Wystarczy uruchomić zdefiniowaną rolę. (według założeń z komputera lokalnego na serwer zdalny)

https://github.com/alv91/ansible-role-supla

Nic nie szkodzi by uruchomić ansible lokalnie, skonfigurowanie serwera powinno być zatem banalnie proste. Wystarczy zalogować się na swojego użytkownika z uprawnieniami sudo i wykonać kilka poleceń. Pisałem i testowałem na Debian 8, Ubuntu 16.04 (architektura bez znaczenia). Instalacja trwa zależnie od wydajności jednostki 5-25 min.

Code: Select all

sudo apt-get update
sudo apt-get install python-pip python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev -y
sudo pip install --upgrade pip
sudo pip install ansible
mkdir -p ~/ansible/roles
cd ~/ansible
git clone https://github.com/alv91/ansible-role-supla roles/supla
Utworzyć plik playbook.yml i uzupełnić

Code: Select all

---
- hosts: all
  become: true
  vars:
    mysql_root_pass: secretpassword
    supla_database_password: secretpassword
    install_supla_server: True
    install_supla_cloud: True
    install_supla_dev: True
    supla_generate_cert: True
    supla_server: supla.example.com
  roles:
    - role: supla
Można podać więcej zmiennych (trzeba pamiętać o wyrównaniu linii)

Code: Select all

supla_mailer_transport: null
supla_mailer_host: null
supla_mailer_user: null
supla_mailer_password: null
supla_mailer_port: null
supla_mailer_encryption: null
supla_mailer_from: null
supla_admin_email: null
supla_server: supla
supla_server_list: null
supla_locale: en
supla_ewz_recaptcha_public_key: null
supla_ewz_recaptcha_private_key: null
supla_secret: generatesecrethashhere
Następnie można uruchomić instalację

Code: Select all

ansible-playbook -i "localhost," -c local playbook.yml -k -K -s -D
Poprosi o hasło do usera, potem sudo (można dać enter)

Gdyby wywalił się na "Git clone", wywołajcie polecenie powyżej jeszcze raz. (W module git oprogramowania ansible jest bug, który dostał już poprawkę, ale nie została wydana jego nowa wersja)

Kilka uwag:
Nie wykonuj z roota
Zmienne install_supla_* ustawione na True będą za każdym razem instalować najnowszą wersję oprogramowania dostępną na github.
Zmienna supla_server definuje nazwę serwera, która jest dodana do symfony, certyfikatu i apache2 jako servername.
Jeśli nie podasz kluczy recaptcha instalator wyłączy jego obsługę.
Zmienną supla_generate_cert możesz wyłączyć generowanie certyfikatu, np. gdy chcesz dodać własny lub uruchomić letsencrypt.
Po zainstalowaniu możesz się zarejestrować, dodać urządzenia, lokalizacje. Pamiętaj jednak, że do poprawnej aktywacji potrzebujesz skonfigurowanej funkcji "mail", czyli zmiennych "mailer".

Jeśli ktoś ma jakieś uwagi, proszę pisać.
Jutro sprawdzę :)

mam :
nanopi fire2
orange pi
hummingboard
byngleboard
alv
Posts: 74
Joined: Sat Jul 09, 2016 11:36 am

Sat Dec 17, 2016 10:57 pm

moondec wrote: Może to naiwne pytanie. Czy na innych dystybucjach też to zadziała? OpenSuSE?
Niestety nie
michu9010
Posts: 8
Joined: Mon Nov 07, 2016 12:48 pm

Mon Dec 19, 2016 1:47 pm

przy instalacji pokazuje się błąd

Code: Select all

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "file (/home/michal/.my.cnf) is absent, cannot continue", "path": "/home/michal/.my.cnf", "state": "absent"}
mam zainstalowane:
Apache2
MySQL
PhpMyAdmin
PHP 7

nie wiem co zrobić z tym faktem trzeba coś doinstalować jeszcze?

Może po prostu spróbować na czystym ubuntu 16.04?
Last edited by michu9010 on Mon Dec 19, 2016 3:20 pm, edited 1 time in total.
User avatar
pzygmunt
Posts: 6683
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Mon Dec 19, 2016 2:35 pm

Apropos automatycznej instalacji to myślę o

apt-get install supla-server
michu9010
Posts: 8
Joined: Mon Nov 07, 2016 12:48 pm

Mon Dec 19, 2016 2:49 pm

pzygmunt wrote:Apropos automatycznej instalacji to myślę o

apt-get install supla-server
w sumie to był by dobry pomysł
alv
Posts: 74
Joined: Sat Jul 09, 2016 11:36 am

Tue Dec 20, 2016 9:34 am

michu9010 wrote:przy instalacji pokazuje się błąd

Code: Select all

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "file (/home/michal/.my.cnf) is absent, cannot continue", "path": "/home/michal/.my.cnf", "state": "absent"}
To dlatego, że masz już zainstalowanego MySQL. Instalator tworzy nową bazę i konfiguruje sam serwer. Możesz dodać tagi, np. "-t supla-server" czy "-t www", wtedy nie wykona wszystkich zadań, a tylko część.
michu9010
Posts: 8
Joined: Mon Nov 07, 2016 12:48 pm

Tue Dec 20, 2016 1:39 pm

supla zainstalowana ale nie mogę się zalogować na admina. Więc chciałem zainstalowac jeszcze wraz tymi ustawieniami ale mam błąd na koncu.

Code: Select all

---
- hosts: all
  become: true
  vars:
    mysql_root_pass: zaq1234rfv
    supla_database_password: suplapass
    install_supla_server: True
    install_supla_cloud: True
    install_supla_dev: True
    supla_generate_cert: True
    supla_server: supla.mjastrzebski.eu
    supla_mailer_transport: supla@mjastrzebski.eu
    supla_mailer_host: mjastrzebski.eu
    supla_mailer_user: supla@mjastrzebski.eu
    supla_mailer_password: ************
    supla_mailer_port: 587
    supla_mailer_encryption: null
    supla_mailer_from: michal.jastrzebski@hotmail.com
    supla_admin_email: michal.jastrzebski@hotmail.com
    supla_server: supla
    supla_server_list: null
    supla_locale: pl
    supla_ewz_recaptcha_public_key: null
    supla_ewz_recaptcha_private_key: null
    supla_secret: generatesecrethashhere
  roles:
    - role: supla
błąd

Code: Select all

An exception occurred during task execution. To see the full traceback, use -vvv                                                                                                                                                             . The error was: UnboundLocalError: local variable 'remote_head' referenced befo                                                                                                                                                             re assignment
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "module_stderr                                                                                                                                                             ": "Traceback (most recent call last):\n  File \"/tmp/ansible_JFPHGc/ansible_mod                                                                                                                                                             ule_git.py\", line 1040, in <module>\n    main()\n  File \"/tmp/ansible_JFPHGc/a                                                                                                                                                             nsible_module_git.py\", line 994, in main\n    result.update(changed=True, after                                                                                                                                                             =remote_head, msg='Local modifications exist')\nUnboundLocalError: local variabl                                                                                                                                                             e 'remote_head' referenced before assignment\n", "module_stdout": "", "msg": "MO                                                                                                                                                             DULE FAILURE"}
alv
Posts: 74
Joined: Sat Jul 09, 2016 11:36 am

Tue Dec 20, 2016 8:28 pm

O tym błędzie mówiłem, puść jeszcze raz.
Post Reply