ansible-container w projekcie infragame.online

Ansible containers

Ansible containers pozwala nam na budowanie obrazów dockera przy pomocy playbooków znanych nam z ansible. Cała praca polega nam na opisaniu naszej aplikacji w formacie bardzo podobnym do formatu plików znanych z docker-compose.

Proces przygotowania

ansible-containers init

Dla naszego projektu musimy zainicjować naszą strukturę ansible-containers. Do tego celu tworzymy katalog i wydajemy polecenie ansible-containers init

$ cd /srv
$ mkdir /srv/online-game-infrastructure
$ cd online-game-infrastructure
$ ansible-container init

Polecenie init wygeneruje nam poniższą strukturę.

.   # /srv/online-game-infrastructure
└── ansible
    ├── ansible.cfg        # Konfiguracja ansible
    ├── container.yml      # definicje kontenerów ( prawie jak docker-compose)
    ├── main.yml           # ansible-playbook do przygotowania obrazów
    ├── meta.yml           # Konfiguracja projektu pod ansible-galaxy
    ├── requirements.txt   # Dodatkowe paczki pythona potrzebne do zbudowania kontenerów docer-py, do-py etc.
    └── requirements.yml   # Definicje dodatkowych ról z ansible-galaxy

 

ansible-containers build

Pozostaje nam zmodyfikować kilka plików oraz odpalić proces budowania całego ekosystemu. W pliku requrements.yml dodajemy następujące linijki:

# from galaxy
- src: jdauphant.nginx

Od dłuższego czasu używam roli do obsługi nginx tego człowieka : https://github.com/jdauphant/ansible-role-nginx

Kolejne zmiany czekają nas już w plikach container.yml oraz main.yml. Po pierwsze definiujemy nasze typy kontenerów w chwili obecnej zdefiniujemy sobie 3 typy kontenerów: lbs, whp, dbs. Nasza sekcja services  w pliku container.yml powinna wyglądać mniej więcej tak:

services:
   lbs:
     image: ubuntu:trusty
     ports:
       - "8080:80"

Do pliku main.yml doklejamy następujące linie

pre_tasks:
- name: 'update apt cache'
  raw: apt-get update -y
- name: 'Fix issue when python is not installed on new server.'
  raw: apt-get -y install python-simplejson
- name: "FIX: Ubuntu 16.04 LTS doesn't come with certain modules, required by ansible"
  raw: apt-get install python-minimal aptitude -y

- hosts: lbs
  roles:
   - jdauphant.nginx

Po tych modyfikacjach i wydaniu polecenia

$ ansible-container build

nasze obrazy są przygotowane i gotowe do uruchomienia!

srebrny@jantar /srv/online-game-infrastructure $ docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
online-game-infrastructure-lbs      latest              3af7757fdcc2        32 minutes ago      188 MB
online-game-infrastructure-dbs      latest              17127a5a473b        32 minutes ago      266 MB
online-game-infrastructure-whp      latest              6841cbd75dd4        37 minutes ago      687 MB
online-game-infrastructure-web      latest              fc2afdcb4c52        About an hour ago   188 MB

ansible-containers run

Nie pozostało nam nic innego jak uruchomić swój kontener:

$ ansible-container run -d

Po takim przygotowaniu nasze ekosystem powinien być dostępny pod adresem localhost:8080

 

Podsumowanie

Link do pierwszego commita dzisiaj: https://github.com/srebrny/online-game-infrastructure/tree/aad49bc4784f4ea44addd6b7a91e2922ed82a55a

Dzisiaj jeszcze będziecie mogli zobaczyć pewnie większy kawałek kodu który udostępniony będzie na repo.

Proszę o komentarze, lajki profilu etc etc.

 

 

 

 

Comments

comments