Knowledge base
Jak skonfigurować Chefa do pracy z Oktawave?
Posted by on 02.07.2013 13:46

Chef pozwala zautomatyzowć zarządzanie OCI w Oktawave. Za jego pomocą można uruchamiać instancje, które będą zawierały przygotowane przez Ciebie zestawy (tzw. przepisy) oprogramowania i konfiguracji. Chef da Ci również możliwość uruchamiania czy usuwania instancji na Twoim koncie z poziomu konsoli.

W tym poradniku zarówno klient, jak i serwer Chef zainstalujemy na tym samy OCI w systemie ubuntu 12.04. Klient może znajdować się rownież na twoim lokalnym komputerze, na którym będziesz tworzył przepisy, wysyłając je następnie do serwera Chef, skąd będą aplikowane na instancje.

 

Knife

Na początek zaczniemy od instalacji konsolowego klienta Chef, czyli knife wraz z modułem do zarządzania instancjami w Oktawave. Upewniamy się, że posiadamy następujące pakiety w systemie.

 

sudo apt-get install git ruby1.9.3

 

Instalujemy knife wraz z modułem oktawave-knife.

 

sudo gem install knife-oktawave

 

Tworzymy katalog .chef w naszym katalogu domowym.

 

mkdir ~/.chef

 

A w nim plik knife.rb, który będzie zawierał nasze dane dostępowe do Oktawave.

 

knife[:oktawave_login] = 'USER'
knife[:oktawave_password] = 'PASSWORD'

 

W tym momencie powiniśmy mieć możliwość listowania naszych instancji, ich włączania, wyłączania itp.

 

#listowanie instancji
knife oktawave oci list
#lista dostępnych komend
knife oktawave

 

Chef server

Narzędzie knife pokazuje pełnie swoich możliwości, gdy używamy go do tworzenia instancji w Oktawave. Nie tylko pozwala zautomatyzować ten proces, ale każda powstała w ten sposób instancja może mieć przygotowany przez nas zestaw aplikacji i być w odpowiedni sposób skonfigurowana.

Przed przystępieniem do instalacji serwera chef zwróćmy uwagę jeszcze na dwie sprawy.

  • Po pierwsze, by korzystać z Chef Server, będzie nam potrzebna nazwa domenowa serwera, na którym go instalujemy. Domyślnie każda nowa instancja w Oktawave posiada taką nazwą w formacie [Identyfikator].services.oktawave.com. Możemy się o tym przekonać, wywołując polecenie hostname -f lub sprawdzić na karcie OCI w panelu administratora. Na potrzeby tego poradnika użyjemy właśnie tej domyślnej nazwy domenowej. Nic nie stoi jednak na przeszkodzie, by wykorzystać własny adres. Trzeba wtedy pamiętać o tym, by stworzyć na serwerach przechowujących dane o twojej domenie odpowiedni rekord DNS, który wskazywałby na instancje z uruchomionym Chef Server, ustawić w systemie instancji hostname odpowiadający twojej nazwie i używać jej w konfiguracji Chef Servera, jak i knife.
  • Po drugie, Chef Server instaluje własny serwer WWW i bazę danych. By nie wchodzić w konflikt z już istniejącym na OCI tego typu oprogramowaniem, najlepiej będzie zainstalować Chefa na nowej instancji.

Udajemy sie na stronę http://www.opscode.com/chef/install/ i w zakładce Chef Server wybieramy pozycje odpowiadające systemowi, w którym będziemy instalować oprogramowanie. Kopiujemy link, pobieramy Chef na serwer i instalujemy.

 

wget https://opscode-omnibus-packages.s3.amazonaws.com/
ubuntu/12.04/x86_64/chef-server_11.0.8-1.ubuntu.12.04_amd64.deb
sudo dpkg -i chef-server_11.0.8-1.ubuntu.12.04_amd64.deb

 

Uruchamiamy polecenie konfigurujące Chef Server.

 

sudo chef-server-ctl reconfigure

 

W katalogu /etc/chef-server powinny się teraz znajdować m.in. pliki admin.pem oraz chef-validator.pem, które potrzebne będą naszemu klientowi. Kopiujemy je więc do wcześniej utworzonego katalog .chef.


cp /etc/chef-server/admin.pem ~/.chef/
cp /etc/chef-server/chef-validator.pem ~/.chef/

 

W przypadku gdy klienta mamy zainstalowanego na lokalnym komputerze, musimy te pliki pobrać z serwera, np. przy użyciu polecenia scp.

Kolejnym krokiem będzie sklonowanie (np. do naszego katalogu domowego) repozytorium chef-repo, zawierającego strukturę katalogów, która będzie wykorzystywana przez knife. Jeżeli knife będzie używany na lokalnym komputerze, to repozytorium powinno być tam sklonowane.

 

git clone git://github.com/opscode/chef-repo

 

Teraz jesteśmy gotowi, by podłączyć knife do Chef server, używajac do tego polecenia knife configure -i.


knife configure -i
Overwrite /root/.chef/knife.rb? (Y/N) Y
Please enter the chef server URL: [http://10316-1-405d24-01.services.oktawave.com:4000] 
https://10316-1-405d24-01.services.oktawave.com
Please enter a name for the new user: [root] user
Please enter the existing admin name: [admin]
Please enter the location of the existing admin's private key: 
[/etc/chef/admin.pem] ~/.chef/admin.pem
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: 
[/etc/chef/validation.pem] ~/.chef/chef-validator.pem
Please enter the path to a chef repository (or leave blank): ~/chef-repo
Creating initial API user...
Please enter a password for the new user:
Created user[user]
Configuration file written to /root/.chef/knife.

 

Przykładowe odpowiedzi na pytania widać powyżej. Zwróć uwagę na podany URL Chef Servera, który jest nazwą domenową twojego OCI z zaznaczeniem korzystania z protokołu https. Ścieżki do kluczy wskazują na miejsce, gdzie wcześniej kopiowałeś pliki admin.pem oraz chef-validator.pem, a path to a chef repository to położenie katalogu utworzonego po sklonowaniu repozytorium chef-repo.

Powyższa operacja nadpisuje plik knife.rb, dlatego ponownie musisz dodać do niego swoje dane uwierzytelniające do konta w Oktawave.

Możesz teraz również odwiedzić webowy panel Chef Servera, który znajduje się pod adresem https://[nazwa_domenowa_instancji] (ten sam URL, który podałeś w pierwszym pytaniu), logując się do niego danymi nowo utworzonego użytkownika (odpowiedzi na pytania: name for the new user i password for the new user). W tym momencie większość sekcji będzie pusta, ale zaraz sie to zmieni.

 

Boostrap

Pod pojęciem bootstrapu kryje się operacja stworzenia, uruchomienia i nałożenia zestawu gotowych konfiguracji dla instacji OCI. Opis, jakie oprogramowanie ma zawierać maszyna i w jaki sposób ma zostać skonfigurowane, nazywamy przepisem. Przepisy możemy łączyć i gromadzić w ramach roli, którą możemy następnie przypisać do tworzonej instancji (w Chef będzie ona widoczna jako node).

Przepisy możemy tworzyć sami, w czym pomocna może być dokumentacja Chef: http://docs.opscode.com/essentials_cookbooks.html. Możemy również skorzystać z przygotowanych przez innych użytkowników przepisów publikowanych na stronie http://community.opscode.com/, z której zasobów właśnie skorzystamy.

Załóżmy, że jesteśmy fanami powłoki zsh oraz systemu kontroli wersji git. Chcielibyśmy, by na każdej naszej instacji to oprogramowanie było już zainstalowane. Możemy poszukać, czy istnieje juz jakiś gotowy przepis.

 

knife cookbook site search zsh

 

Znajdujemy przepis o nazwie zsh, który odpowiada naszym potrzebom, więc co go instalujemy.

 

knife cookbook site install zsh

 

Podobnie czynimy dla git (knife cookbook site install git). Warto również użyć przepisu o nazwie apt (knife cookbook site install apt), który zapewni aktualność instalowanych pakietów.

Pobrane przepisy są narazie tylko w naszym lokalnym repozytorium (~/chef-repo/cookbooks/), możemy je teraz przesłać do serwera Chef.

 

knife upload cookbooks

 

Listę przepisów zarejestrowanych na serwerze Chef możemy obejrzeć, wywołując komendę.

 

knife cookbook list

 

Lub przeglądając sekcję Cookbooks w webpanelu.

Stworzymy teraz rolę zawierającą zainstalowane przed chwilą przepisy. W pierwszym kroku określamy, z jakiego edytora tektsu będziemy korzystali.

 

export EDITOR=vim

 

A następnie tworzymy rolę o nazwie mylinuxserver.


knife role create mylinuxserver

 

Edytujemy teraz otwarty plik i w sekcji run_list umieszczamy przepisy, które chcemy, by zostały zaaplikowane na OCI uruchamiane z rolą mylinuxserver.

 

{
  "name": "mylinuxserver",
  "description": "",
  "json_class": "Chef::Role",
  "default_attributes": {
  },
  "override_attributes": {
  },
  "chef_type": "role",
  "run_list": [
    "recipe[apt]",
    "recipe[zsh]",
    "recipe[git]"
  ],
  "env_run_lists": {
  }
}

 

Możemy w końcu przystąpić do uruchomienia instancji w Oktawave. Wylistujmy dostępne rodzaje maszyn.

 

knife oktawave template list

 

Wybierzmy na przykład debiana w wersji 6.0.7, którego Category ID wynosi 6 i stwórzmy instancję o nazwie mydebian z przypisaną rolą mylinuxserver.


knife oktawave oci create -T 6 -N mydebian -r 'role[mylinuxserver]'

 

Możemy teraz obserować proces inicjalizacji OCI i aplikacji naszych przepisów. Jeżeli proces zostanie z jakiś względów przerwany, możemy go wznowić, używając podanego przez program polecenia.

 

knife oktawave oci create --bootstrap-oci [ID_INSTNCJI] -r 'role[mylinuxserver]'

 

Po zakończeniu operacji otrzymamy OCI z zainstalowaną powłoką zsh oraz programem git. Instancja staje się też nodem Chefa, na którym możemy aplikować kolejne przepisy.

 

knife node list

 

Jest to tylko przykład tego, jak Chef wraz z modułem knife-oktawave mogą usprawnić pracę z instancjami. Więcej przykładów i informacji można znaleźć w dokumentacji oprogramowania Chef pod adresem: http://docs.opscode.com/ oraz repozytorium knife-oktawave: https://github.com/marek-siemdaj/knife-oktawave.

(5 vote(s))
This article was helpful
This article was not helpful

Comments (0)
Post a new comment
 
 
Full Name:
Email:
Comments:
CAPTCHA Verification 
 
Please enter the text you see in the image into the textbox below. This is required to prevent automated registrations and form submissions.