ansible-container w projekcie infragame.online - www.srebniak.pl
ansible-container w projekcie infragame.online
18 marca 2017
Categories: DSP2017
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
├── container.yml
├── main.yml
├── meta.yml
├── requirements.txt
└── requirements.yml
# Konfiguracja ansible
# definicje kontenerów ( prawie jak docker-compose)
# ansible-playbook do przygotowania obrazów
# Konfiguracja projektu pod ansible-galaxy
# Dodatkowe paczki pythona potrzebne do zbudowania kontenerów docer-py, do-py etc.
# 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

olejne 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
online-game-infrastructure-lbs
online-game-infrastructure-dbs
online-game-infrastructure-whp
online-game-infrastructure-web
TAG
latest
latest
latest
latest
IMAGE ID
3af7757fdcc2
17127a5a473b
6841cbd75dd4
fc2afdcb4c52
CREATED
32 minutes ago
32 minutes ago
37 minutes ago
About an hour ago
SIZE
188 MB
266 MB
687 MB
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.
© 2021 Więcej informacji
o mnie