## Workflow # env Оскільки у всіх учасників проекту один й той самий код має запускатись з максимально однаковим результатом, версії програмного забезпечення потрібно чітко контролювати. Версійний котроль має зберігатись й при оновленні системи, й при переїхні на нове обладання (наприклад повий ПК). Найкращий спосіб, використовувати ізоловане середовище з встановленими в нього програмами фіксованих версій. Ізольованість дозволяє оновлювати основну ОС (та всі її компоненти), притім не змінюючи версії програм в цьому середовищі В python для цього використовується virtualenv - по суті застосунок створює дерево файлової системи в обраній директорії. ### Встановленя: `dnf install virtualenv` ### Використання: Перейти в домашній каталог (~ це скорочення для /home/username/): `cd ~` Створити директорію ENV (де в майбутньому будуть зберігатись всі оточення): `mkdir ENV && cd ENV` Створити нове оточення **dNull**: `virtualenv dNull` Активувати нове оточення: `source ~/ENV/dNull/bin/activate` Якщо в інтерпритаторі встановлені необхідні розширення, в командній стрічні з'явиться назва оточення (*детальніше в гугл з запитом "bash virtualenv" чи "zsh virtualenv)" - в залежності що в кого встановлено*): `(dNull) shellshock@localhost ~/dNull %` ## Робота з env Тепер при встановленні пакета засобами [PIP](https://en.wikipedia.org/wiki/Pip_(package_manager)) він буде встановлений під ~/ENV/dNull/bin/ з необхідними бібліотеками в ~/ENV/dNull/lib/ і не буде знаходитись під котролем ОС. Щоб спростити встановлення необхідних для роботи компонент, список програм вносять в файл requirement.txt з указанням конкретних версій: `ansible==2.4.2` В такому випадку, встановлення рекомендованих програм здійснюється: `pip install -r requirements.txt` Єдиний requirements.txt знаходиться за адресою https://raw.githubusercontent.com/wiki/dnullsecops/KnowledgeBase/requirements.txt (поки тимчасово). Відповідно встановлення відубвається за допомогою: `pip install -r https://raw.githubusercontent.com/wiki/dnullsecops/KnowledgeBase/requirements.txt` ### Links: - UserGuide - https://virtualenv.pypa.io/en/stable/userguide/ - venv в python 3.3 - https://habrahabr.ru/post/157287/ - Mozilla - https://mozilla-services.readthedocs.io/en/latest/server-devguide/release.html