{"id":14965307,"url":"https://github.com/jyrinsan/hh_saltproject","last_synced_at":"2026-01-21T19:36:21.642Z","repository":{"id":40314347,"uuid":"489667376","full_name":"jyrinsan/hh_saltproject","owner":"jyrinsan","description":"Haaga-helian palvelinohjelmointi kurssin miniprojekti","archived":false,"fork":false,"pushed_at":"2022-05-16T18:58:46.000Z","size":422,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T03:30:10.813Z","etag":null,"topics":["django","saltstack","saltstack-formula"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jyrinsan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-07T12:27:55.000Z","updated_at":"2022-05-15T18:09:33.000Z","dependencies_parsed_at":"2022-08-09T17:02:23.337Z","dependency_job_id":null,"html_url":"https://github.com/jyrinsan/hh_saltproject","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jyrinsan/hh_saltproject","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyrinsan%2Fhh_saltproject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyrinsan%2Fhh_saltproject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyrinsan%2Fhh_saltproject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyrinsan%2Fhh_saltproject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jyrinsan","download_url":"https://codeload.github.com/jyrinsan/hh_saltproject/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jyrinsan%2Fhh_saltproject/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28641276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T18:04:35.752Z","status":"ssl_error","status_checked_at":"2026-01-21T18:03:55.054Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","saltstack","saltstack-formula"],"created_at":"2024-09-24T13:34:33.319Z","updated_at":"2026-01-21T19:36:21.618Z","avatar_url":"https://github.com/jyrinsan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Django tuotantoympäristö SaltStackilla\n\nModuulin tarkoitus on asentaa Django-tuotantoympäristö webbipalvelun julkaisuun Linux-palvelimille. Moduuli asentaa djangon, apachen, tulimuurin, postgresql tietokannan sekä hyödyllisiä pikkusovelluksia, joita sovelluksen tekoon tarvitaan. Moduuli asentaa myös yksinkertaisen crm-esimerkkisovelluksen, jolla ympäristön toimintaa voi demota. Tämän hetkinen versio käyttää vielä sqlite3 kantaa, jatkokehityksessä kanta aiotaan vaihtaa postgresql-kantaan, jonka vuoksi sen asennus on jo otettu mukaan tähän.\n\nModuulin lisenssi: [GNU General Public License v2.0](https://opensource.org/licenses/gpl-2.0.php)\n\n```\nNimi              Sanna Jyrinki\nOppilaitos        Haaga-Helian ammattikorkeakoulu\nKurssi            Palvelinten hallinta ICT4TN022-3015\nOpettaja          Tero Karvinen\nTietokoneena      AMD Ryzen 5 PRO 4650U with Radeon Graphics 2.10 GHz\nKäyttöjärjestelmä Windows 11 Pro, Versio 21H2\nLinux             Oracle Virtual Box 6.1, Debian 11.3\n```\n\n### Toteutussuunnitelma\n- moduuli sisältää seuraavat tilat:\n  - appikset: hyödyllisiä pikkuohjelmia micro, bash-completion, pwgen, tree, curl\n  - palomuuri: ufw palomuurin, asennus, enablointi ja avaus ssh ja apache portille\n  - postgresql: tietokanta jatkokehitystä varten (django sisältää oletuksena kevyen sqlite3 tietokannan)\n  - apache asennus, testisivu ja käyttäjän kotisivu\n  - django asennus, tuotanto-projektin luonti\n  - testisovellus crm, jolla toiminta voidaan demota\n\n- jatkokehitysehdotuksia, joita ei keretty toteuttaa tähän versioon\n  - kehitysserveri, jossa django asennetaan kehitysserverinä\n  - postgressql ja sen käyttöönotto djangossa vakiona olevan sqlite3:n sijaan\n  - jinjalla voisi siistiä usein toistuvat esim tunnukset/hakemistopolut yhdessä paikassa oleviksi vakioiksi\n  - ssh ja sftp mahdollisesti olisi myös hyödyllistä asentaa, jos on tarpeen toimia myös ulkoisen virtuaalipalvelimen kanssa\n\n### Toteutus\n\nModuuli sisältää seuraavat tilat ja top.sls tiedoston, jonka avulla koko moduulin saa ajettua \n```\nsudo salt '*' state.apply\n```\n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ ls\n\u003cfont color=\"#5555FF\"\u003e\u003cb\u003eapache\u003c/b\u003e\u003c/font\u003e  \u003cfont color=\"#5555FF\"\u003e\u003cb\u003eappsit\u003c/b\u003e\u003c/font\u003e  \u003cfont color=\"#5555FF\"\u003e\u003cb\u003ecrmapp\u003c/b\u003e\u003c/font\u003e  \u003cfont color=\"#5555FF\"\u003e\u003cb\u003edjango\u003c/b\u003e\u003c/font\u003e  \u003cfont color=\"#5555FF\"\u003e\u003cb\u003edjangoproject\u003c/b\u003e\u003c/font\u003e  \u003cfont color=\"#5555FF\"\u003e\u003cb\u003efirewall\u003c/b\u003e\u003c/font\u003e  \u003cfont color=\"#5555FF\"\u003e\u003cb\u003epostgresql\u003c/b\u003e\u003c/font\u003e  top.sls\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat top.sls \nbase:\n  \u0026apos;*\u0026apos;:\n    - appsit\n    - firewall\n    - postgresql\n    - apache\n    - django\n    - djangoproject\n    - crmapp\n\u003c/pre\u003e\n\n#### Moduulin tilat\n\n##### appsit\n\nTila **appsit** asentaa yksinkertaisia pikkusovelluksia, jotka osoittautuivat hyödyllisiksi djangon asennuksessa ja djangosovelluksen teossa.\n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ ls appsit\ninit.sls\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat appsit/init.sls \nappsit:\n  pkg.installed:\n    - pkgs:\n      - micro\n      - bash-completion\n      - pwgen\n      - tree\n      - curl\n\u003c/pre\u003e\n\n##### firewall\n\nTila **firewall** asentaa ja konfiguroi ufw tulimuurin. Se enabloi sen serverin käynnistyessä, ja avaa reiät ssh:n ja apache:n portteihin.\n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ ls firewall\ninit.sls\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat firewall/init.sls \nufw:\n  pkg.installed\n\n\u0026apos;ufw enable\u0026apos;:\n  cmd.run:\n    - unless: \u0026quot;ufw status verbose |grep \u0026apos;Status: active\u0026apos;\u0026quot;\n\n\u0026apos;ufw allow 22/tcp\u0026apos;:\n  cmd.run:\n    - unless: \u0026quot;ufw status verbose |grep \u0026apos;^22/tcp\u0026apos; \u0026quot;\n\n\u0026apos;ufw allow 80/tcp\u0026apos;:\n  cmd.run:\n    - unless: \u0026quot;ufw status verbose |grep \u0026apos;^80/tcp\u0026apos; \u0026quot;\n\nufw.service:\n  service.running\n\u003c/pre\u003e\n\n##### postgresql\n\nTila **postgresql** asentaa postgresql tietokantademonin ja käynnistää sen. Ko. tietokantaa ei kuitenkaan vielä tässä versiossa hyödynnetä djangon kanssa.\n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ ls postgresql\ninit.sls\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat postgresql/init.sls \npostgresql:\n  pkg.installed\n\npostgresql.service:\n  service.running\n\u003c/pre\u003e\n\n##### apache\n\nTila **apache** asentaa apachen, muodostaa oletustestisivun ja aktivoi käyttäjien kotisivun, jos käyttäjä tekee kotisivun oman kotihakemiston public_html hakemistoon. Tila myös käynnistää apachen.\n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ ls apache\ndefault-index.html  init.sls\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat apache/init.sls \napache2:\n  pkg.installed\n\n/var/www/html/index.html:\n  file.managed:\n    - source: salt://apache/default-index.html\n\n/etc/apache2/mods-enabled/userdir.conf:\n  file.symlink:\n    - target: ../mods-available/userdir.conf\n\n/etc/apache2/mods-enabled/userdir.load:\n  file.symlink:\n    - target: ../mods-available/userdir.load\n\napache2.service:\n  service.running:\n    - watch:\n      - file: /etc/apache2/mods-enabled/userdir.conf\n      - file: /etc/apache2/mods-enabled/userdir.load\n\u003c/pre\u003e\n\n##### django\n\nTila **django** luo django nimisen käyttäjän (salasana on django, joka asetetaa ssh tiedostoon hashattuna linux-komennolla `openssl passwd -1` [SaltStack Contributors, 2022](https://docs.saltproject.io/en/3000/ref/states/all/salt.states.user.html). Tila luo käyttäjän kotihakemiston alle publicwsgi-hakemiston ja asentaa djangon. Tilassa on myös asennettu virtualenv-ympäristö. Sitä ei salt-asennuksen yhteydessä hyödynnetä, mutta ylläpitäjä voi kaivata sitä sovelluksen manuaaliseen kehittämiseen.\n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ ls django\ninit.sls  requirements.txt\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat django/init.sls \nasennukset:\n  pkg.installed:\n    - pkgs:\n      - virtualenv\n      - libapache2-mod-wsgi-py3\n\nadduser:\n  user.present:\n    - name: django\n    - password: $1$JeVTvOSq$lbPDz6CkLxA.dmo8CWml20\n    \n/home/django/publicwsgi:\n  file.directory:\n    - user: django\n    - group: django\n    - mode: 0755\n\n\u0026apos;virtualenv -p python3 --system-site-packages env\u0026apos;:\n  cmd.run:\n    - cwd: /home/django/publicwsgi\n    - runas: django\n    - unless: ls |grep env\n\n/home/django/publicwsgi/requirements.txt:\n  file.managed:\n    - source: salt://django/requirements.txt\n    - user: django\n    - group: django\n    - mode: 0644\n\n\u0026apos;pip install -r requirements.txt\u0026apos;:\n  cmd.run:\n    - cwd: /home/django/publicwsgi\n    - unless: django-admin --version\n\u003c/pre\u003e\n\n##### djangoproject\n\nTila **djangoproject** luon djangoprojektin nimeltään **myapp**, joka tekee publicwsgi:n alle myapp hakemiston alihakemistoineen. Tila tekee myös apachelle konfiguraation myapp.conf, joka säätelee apachelle enabloidut sivut. Djangon automaattisesti tarjoaman /admin sivun lisäksi asetetaan siinä staattiset sivut päälle polussa /static. Tila myös kopioi saltin alta settings.xml tiedoston, johon on tehty muutamia muutoksia, mm. asetettu debug tila pois päältä ja sallittu osoite localhost. Lähteinä olevista Djangon materiaaleista voit katsoa tarkemmin asennuksen yksityiskohdat. Jotta /admin polusta löytyvä sisäänkirjautumissivu näyttää tyylikkäämmältä, tila myös kerää static hakemiston alle djangon staattiset tyylisivut.\n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ tree djangoproject/\n\u003cfont color=\"#5555FF\"\u003e\u003cb\u003edjangoproject/\u003c/b\u003e\u003c/font\u003e\n├── init.sls\n├── myapp.conf\n├── settings.py\n└── \u003cfont color=\"#5555FF\"\u003e\u003cb\u003estatic\u003c/b\u003e\u003c/font\u003e\n    └── staticpage.html\n\n1 directory, 4 files\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat djangoproject/myapp.conf \nDefine TDIR /home/django/publicwsgi/myapp\nDefine TWSGI /home/django/publicwsgi/myapp/myapp/wsgi.py\nDefine TUSER django\nDefine TVENV /home/django/publicwsgi/env/lib/python3.9/site-packages\n\n\u0026lt;VirtualHost *:80\u0026gt;\n        Alias /static/ ${TDIR}/static/\n        \u0026lt;Directory ${TDIR}/static/\u0026gt;\n                Require all granted\n        \u0026lt;/Directory\u0026gt;\n\n        WSGIDaemonProcess ${TUSER} user=${TUSER} group=${TUSER} threads=5 python-path=\u0026quot;${TDIR}:${TVENV}\u0026quot;\n        WSGIScriptAlias / ${TWSGI}\n        \u0026lt;Directory ${TDIR}\u0026gt;\n             WSGIProcessGroup ${TUSER}\n             WSGIApplicationGroup %{GLOBAL}\n             WSGIScriptReloading On\n             \u0026lt;Files wsgi.py\u0026gt;\n                Require all granted\n             \u0026lt;/Files\u0026gt;\n        \u0026lt;/Directory\u0026gt;\n\n\u0026lt;/VirtualHost\u0026gt;\n\nUndefine TDIR\nUndefine TWSGI\nUndefine TUSER\nUndefine TVENV\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat djangoproject/init.sls \n\u0026apos;django-admin startproject myapp\u0026apos;:\n  cmd.run:\n    - cwd: /home/django/publicwsgi\n    - runas: django\n    - unless: ls | grep myapp\n\n/etc/apache2/sites-available/myapp.conf:\n  file.managed:\n    - source: salt://djangoproject/myapp.conf\n\n/etc/apache2/sites-enabled/myapp.conf:\n  file.symlink:\n    - target: ../sites-available/myapp.conf\n\n/etc/apache2/sites-enabled/000-default.conf:\n  file.absent\n\n/home/django/publicwsgi/myapp/myapp/settings.py:\n  file.managed:\n    - source: salt://djangoproject/settings.py\n    - user: django\n    - group: django\n    - mode: 0644\n\n\u0026apos;echo yes | python3 ./manage.py collectstatic\u0026apos;:\n  cmd.run:\n    - cwd: /home/django/publicwsgi/myapp\n    - runas: django\n    - unless: ls | grep static\n\n/home/django/publicwsgi/myapp/static:\n  file.recurse:\n    - source: salt://djangoproject/static\n    - user: django\n    - group: django\n    - dir_mode: 0755\n    - file_mode: 0755\n    - makedirs: True\n    - recurse:\n      - user\n      - group\n      - mode\n\u003c/pre\u003e\n\n##### crmapp\n\nTila **crmapp** muodostaa esimerkkisovelluksen, jonka alulla voi demota sovelluksen toiminta. Sovellus on aluksi muodostettu käsin, ja tila vain kopioi sekä crm-hakemiston sisällön paikoilleen sekä myös sqlite3 tietokannan. Myöhemmässä moduulin vaiheessa tietokanta voidaan muuttaa postgressql tietokannaksi. \n\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ tree crmapp\n\u003cfont color=\"#5555FF\"\u003e\u003cb\u003ecrmapp\u003c/b\u003e\u003c/font\u003e\n├── \u003cspan style=\"background-color:#00AA00\"\u003e\u003cfont color=\"#0000AA\"\u003ecrm\u003c/font\u003e\u003c/span\u003e\n│   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003eadmin.py\u003c/b\u003e\u003c/font\u003e\n│   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003eapps.py\u003c/b\u003e\u003c/font\u003e\n│   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e__init__.py\u003c/b\u003e\u003c/font\u003e\n│   ├── \u003cfont color=\"#5555FF\"\u003e\u003cb\u003emigrations\u003c/b\u003e\u003c/font\u003e\n│   │   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e0001_initial.py\u003c/b\u003e\u003c/font\u003e\n│   │   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e0002_alter_customer_name.py\u003c/b\u003e\u003c/font\u003e\n│   │   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e__init__.py\u003c/b\u003e\u003c/font\u003e\n│   │   └── \u003cfont color=\"#5555FF\"\u003e\u003cb\u003e__pycache__\u003c/b\u003e\u003c/font\u003e\n│   │       ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e0001_initial.cpython-39.pyc\u003c/b\u003e\u003c/font\u003e\n│   │       ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e0002_alter_customer_name.cpython-39.pyc\u003c/b\u003e\u003c/font\u003e\n│   │       └── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e__init__.cpython-39.pyc\u003c/b\u003e\u003c/font\u003e\n│   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003emodels.py\u003c/b\u003e\u003c/font\u003e\n│   ├── \u003cfont color=\"#5555FF\"\u003e\u003cb\u003e__pycache__\u003c/b\u003e\u003c/font\u003e\n│   │   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003eadmin.cpython-39.pyc\u003c/b\u003e\u003c/font\u003e\n│   │   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003eapps.cpython-39.pyc\u003c/b\u003e\u003c/font\u003e\n│   │   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003e__init__.cpython-39.pyc\u003c/b\u003e\u003c/font\u003e\n│   │   └── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003emodels.cpython-39.pyc\u003c/b\u003e\u003c/font\u003e\n│   ├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003etests.py\u003c/b\u003e\u003c/font\u003e\n│   └── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003eviews.py\u003c/b\u003e\u003c/font\u003e\n├── \u003cfont color=\"#55FF55\"\u003e\u003cb\u003edb.sqlite3\u003c/b\u003e\u003c/font\u003e\n└── init.sls\n\n4 directories, 18 files\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003emaster@master-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e/srv/salt\u003c/b\u003e\u003c/font\u003e$ cat crmapp/init.sls \n/home/django/publicwsgi/myapp/db.sqlite3:\n  file.managed:\n    - source: salt://crmapp/db.sqlite3\n    - user: django\n    - group: django\n    - mode: 0755\n\n/home/django/publicwsgi/myapp/crm:\n  file.recurse:\n    - source: salt://crmapp/crm\n    - user: django\n    - group: django\n    - dir_mode: 0755\n    - file_mode: 0755\n    - makedirs: True\n    - replace: True\n\u003c/pre\u003e\n\n#### Testaus\n\nModuulin toteutus ja testaus suoritettiin Windows-tietokoneella, jossa oli asennettuna VirtualBoxiin 2 eri Debian 11-konetta, joista toisesta tehtiin salt-master ja toisesta salt-minion. Tämän raportin yläosasta löytyy tarkemmat versiotiedot ajoympäristöstä. Koneet olivat yhteydessä toisiinsa VirtualBoxiin asennetun \"Host Only Adapter\":n kautta, joka määriteltiin koneiden asetuksissa NAT adapterin lisäksi. Salt masterilla moduuli on /srv/salt hakemistossa, jonka sisältö vietiin versionhallintaan. Kehitystä tehtiin askel kerrallaan asentaen ensin orja-koneelle asia manuaalisesti ja sen jälkeen automatisoimalla saltila masterin kautta. Useita kertoja (tai kymmeniä jopa) tehtiin uusi orja-debian kone, ja testattiin puhtaalla debianilla toimiiko moduulin sen hetkinen vaihe.\n\nEnnen moduulin ajoa testataan orjakoneella mitä curl tavoiteosoitteisiin palauttaa. Curl ei saa yhteyttä oletusporttiin 80:\n\n\u003cpre\u003e\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003esanna@sanna-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e~\u003c/b\u003e\u003c/font\u003e$ curl http://localhost/admin\ncurl: (7) Failed to connect to localhost port 80: Connection refused\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003esanna@sanna-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e~\u003c/b\u003e\u003c/font\u003e$ curl http://localhost/static\ncurl: (7) Failed to connect to localhost port 80: Connection refused\n\u003c/pre\u003e\n\n[Täältä](files/RUN1.MD) löytyy salt loki, kun koko valmistunut moduuli ajetaan puhtaalle Debianille, jonne ei vielä ole asennettu muutakuin salt-minion. \n\n[Täältä](files/RUN2.MD) löytyy salt loki, kun koko valmistunut moduuli ajetaan toisen kerran peräkkäin, josta näkyy, että koko moduuli on idempotentti, eli mitään uutta ei asennu, koska mitään ei ole muutettu.\n\nAjojen jälkeen testataan taas curlilla:\n\u003cpre\u003e\u003cfont color=\"#55FF55\"\u003e\u003cb\u003esanna@sanna-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e~\u003c/b\u003e\u003c/font\u003e$ curl http://localhost/admin\n\u003cfont color=\"#55FF55\"\u003e\u003cb\u003esanna@sanna-virtualbox\u003c/b\u003e\u003c/font\u003e:\u003cfont color=\"#5555FF\"\u003e\u003cb\u003e~\u003c/b\u003e\u003c/font\u003e$ curl http://localhost/static/staticpage.html\nTässä jokin staattinen sivu\n\u003c/pre\u003e\n\nNyt kun orjakoneella avataan selain osoitteessa `http://localhost/admin`, päästään sovelluksen login näkymän avulla sisälle sovellukseen admin tunnuksella (tunnus admin, salasana ftqjbp5ayj4XraBGOR4s)\n\n![Images](files/django_login.PNG)\n![Images](files/django_screen1.PNG)\n![Images](files/django_screen2.PNG)\n\n### Asennusohje\n\nModuulia voit testata kopioimalla sen salt-masterisi /srv/salt hakemistoon ja ajamalla ´sudo salt '*' state.apply`, joka ajaa moduulin kaikille masterille rekisteröidyille orjillesi. Jos haluat jonkun muun käyttäjän kuin django, pitää tiloja muokata. Oma sovellus pitää tehdä manuaalisesti, ohjeita löytyy alla olevista Tero Karvisen loistavista Django materiaaleista.\n\n### Lähteet\n\n- Djangocentral. n.a. Luettavissa [Using PostgreSQL with Django](https://djangocentral.com/using-postgresql-with-django/). Luettu 15.5.2022.\n- Karvinen, T. 2022a. Luettavissa [Configuration management systems 2022](https://terokarvinen.com/2021/configuration-management-systems-2022-spring/#arviointi). Luettu 03-05/22.\n- Karvinen, T. 2022b. [Django 4 Instant Customer Database Tutorial](https://terokarvinen.com/2022/django-instant-crm-tutorial/). Luettu 14-15.5.2022.\n- Karvinen, T. 2022c. [Deploy Django 4 - Production Install](https://terokarvinen.com/2022/deploy-django/?fromSearch=django). Luettu 14-15.5.2022.\n- SaltStack Contributors. 2022. [SALT.STATES.USER\n, MANAGEMENT OF USER ACCOUNTS](https://docs.saltproject.io/en/3000/ref/states/all/salt.states.user.html)\n- Shellhacks Contributors. 2020. Luettavissa [Auto Answer “Yes/No” to Prompt – PowerShell \u0026 CMD](https://www.shellhacks.com/auto-answer-yes-no-prompt-powershell-cmd/). Luettu 15.5.2022.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjyrinsan%2Fhh_saltproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjyrinsan%2Fhh_saltproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjyrinsan%2Fhh_saltproject/lists"}