Closed westfood closed 8 years ago
requirements_dev neni potrebny pro produkci, vsechny ty prikazy muzes spustit kolikrat chces..
naimportoval jsem úspěšně starou db s manage legacy_sync..
ale python3 ./manage.py rebuild_index --noinput na mně vystřelilo hlášku viz. dole:
chápu to správně že se mám postarat o instalaci elastic search? rebuild_index teda funguje dokud se neobjeví něco k indexování?
(seeder) [rudolf@curator02 Seeder]$ ./manage.py rebuild_index --noinput
Removing all documents from your index because you said so.
DELETE http://elastic:9200/haystack [status:N/A request:0.034s]
Traceback (most recent call last):
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/connection.py", line 142, in _new_conn
(self.host, self.port), self.timeout, **extra_kw)
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/util/connection.py", line 67, in create_connection
for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
File "/usr/lib64/python3.4/socket.py", line 533, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/elasticsearch/connection/http_urllib3.py", line 94, in perform_request
response = self.pool.urlopen(method, url, body, retries=False, headers=self.headers, **kw)
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/connectionpool.py", line 623, in urlopen
_stacktrace=sys.exc_info()[2])
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/util/retry.py", line 232, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/packages/six.py", line 310, in reraise
raise value
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/connectionpool.py", line 578, in urlopen
chunked=chunked)
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/connectionpool.py", line 362, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib64/python3.4/http/client.py", line 1088, in request
self._send_request(method, url, body, headers)
File "/usr/lib64/python3.4/http/client.py", line 1126, in _send_request
self.endheaders(body)
File "/usr/lib64/python3.4/http/client.py", line 1084, in endheaders
self._send_output(message_body)
File "/usr/lib64/python3.4/http/client.py", line 922, in _send_output
self.send(msg)
File "/usr/lib64/python3.4/http/client.py", line 857, in send
self.connect()
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/connection.py", line 167, in connect
conn = self._new_conn()
File "/opt/virtualenv/seeder/lib/python3.4/site-packages/urllib3/connection.py", line 151, in _new_conn
self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fecba313ef0>: Failed to establish a new connection: [Errno -2] Name or service not known
nevím jesti to souvisí.. template k local_settings.py má jinej backend než testovací kontejner: haystack.backends
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'elasticstack.backends.ConfigurableElasticSearchEngine',
'URL': 'http://elastic:9200/',
'INDEX_NAME': 'haystack',
},
}
kontejner má zase:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://elastic:9200/',
'INDEX_NAME': 'haystack',
},
}
jj musis mit ten configurable backend, co se tyce toho elasticu tak jsem na nej vytvoril ten Dockerfile_elastic
. Obecne budes muset vytvorit vsechny kontejnery jak jsou popsane v docker-compose...
cajk, už to funguje.. ale jen pro info..
docker je pro testování, produkce jede bez dockeru a konfigurace jde přes ansible..
Aha ok, dik.
Jo, srry. Před pár měsíce byli pro mně ty technologie nový, tak jsem si to neuměl koncepčně srovnat. Takže jsme se domluvili na něčem, co jsem pak přehodnotil. Každopádně, díky tomu pythonu jsem naučil tunu věcí o provozu současných aplikací. Proti deploymentu apache/nginx + servletu + war - je to jinej svět. Tohle už fakt nejde stavět ad-hoc příkazama.
Současně přemýšlím takhle: Docker a docker compose je skvělej pro testování. Stejně tak i pro případnou veřejnost. Když je kontejner postavený v ubuntu tak cajk - je to defakto standard. Možná bych byl proto ty skripy rvát víc do Dockerfile, ať je to přehledný a na jednom místě, ale těm skriptům s prefixem d rozumím. S přípravou Dockerfile na něco komplikovanějšího nemám zkušenost ani neznám best practives, tak je tvůj přístup možná správnej;-) Ale každopáně, je to defakto automatizační skript. Já budu testovat ansible provizi docker prostředí - protože Domain language cílenej na popis stavu stroje je čitelenější než skripty. Budu se rozhodovat až na základě zkušenosti. Ale každopádně, i ten skript je admin dokumentace. Takže to beru. // Možná bude ve finále užitečnější programátorská dokumentace. Z admin dokumentace napsat jen základný špeky jako možnosti legacy_sync, založení user, co je idempotentní, že potřebuješ Python 3.. Tj. aby admin věděl co spravuje a jak se o tom má starat. Info o instalaci pokryje Dockerfile a můj ansible playbook.
Na produkci: Poctivá ansible automation na všechen náš SW na OS (rozhodl jsem pro CentOS), ke kterýmu je případně možné dokoupit podporu v ČR - RedHat aspol. - kdyby vedení potřebovalo něco certifikovat a byl na to požadavek. Ty YAML soubory pro ansible jsou pro mně čitelný snáz jak skripty, takže od teď beru jako ofiko dokumentaci jak něco nainstalovat.
Lesson learned: Až bude zas někdo pro nás něco prgat, měl by za úkol připravit jak Dockerfile pro testování, tak ansible+vagrant lokální prostředí jako přípravu deploymentu do naší infra - který slouží i jako defakto dokumentace. Ale chápu že vývoj teď probíhá defakto v debian/ubuntu, takže se lidi v Suse RedHat specifách neorientují a je vlastně otázka, zda-by dev vůbec měl. Kontejnery jsou spása.
Časem kontejnery na produkci přehodnotím. RancherOS zní zajímavě. A líbí se mi myšlenka, že všechny non-core/podpůrné aplikace pojedou z kontejnerů.
Ok, to dava smysl, btw kde je teda ansible file pro seedera? Ja bych rad videl jak to funguje...
Pár dotazů:
uspokojit requirements_dev.txt -- je potřebný i pro produkci?
který z těhle příkazů jsou idempotentní? tj. můžu je pustit na produkci X krát, aniž bych to rozbil;-)