marvel-nccr.aiida
Rôle Ansible : marvel-nccr.aiida
Un rôle Ansible qui installe et configure AiiDA sur Ubuntu, RHEL, CentOS et Fedora.
Le rôle :
- Installe et démarre les services PostgreSQL et RabbitMQ
- Installe une version Python désignée
- Crée un environnement virtuel Python 'aiida' et y installe aiida-core et les plugins
- Crée un environnement virtuel Python 'jupyter' et y installe Jupyter et Jupyter Lab, puis lie l'environnement virtuel comme noyau.
- Ajoute virtualenwrapper pour gérer les environnements virtuels.
- Crée un profil AiiDA et démarre le démon
- Démarre l'API REST d'AiiDA
- Configure les codes localhost pour les plugins AiiDA (où les chemins de code sont définis)
- Configure des familles de pseudopotentiels dans le profil AiiDA
Installation
ansible-galaxy install marvel-nccr.aiida
Variables de rôle
Voir defaults/main.yml
Exemple de Playbook
- hosts: servers
roles:
- role: marvel-nccr.aiida
Pour utiliser pleinement JupyterLab, installez nodejs, par exemple en utilisant geerlingguy.nodejs :
- hosts: servers
tasks:
- include_role:
name: geerlingguy.nodejs
vars:
nodejs_version: 12.x
nodejs_install_npm_user: root
- include_role:
name: marvel-nccr.aiida
Remarque : Lors de la création d'un conteneur Docker, la variable jupyter_ip: "0.0.0.0"
doit être définie, afin que aiida-jupyterlab
expose correctement le port.
Utilisation
Une fois exécuté, l'utilisateur peut "activer" l'environnement aiida dans le terminal en utilisant :
$ workon aiida
(aiida) $ verdi status
verdi status
✔ répertoire de configuration : /root/.aiida
✔ profil : Sur le nom de profil avec des tirets
✔ dépôt : /root/.aiida/repository/name-with-dashes
✔ postgres : Connecté en tant qu'aiida@localhost:5432
✔ rabbitmq : Connecté en tant qu'amqp://guest:[email protected]:5672?heartbeat=600
✔ daemon : Le démon fonctionne avec le PID 9484 depuis le 30-11-2020 21:51:30
Pour démarrer un serveur jupyter lab :
$ aiida-jupyterlab
...
Pour accéder au notebook, ouvrez ce fichier dans un navigateur :
file:///root/.local/share/jupyter/runtime/nbserver-14617-open.html
Ou copiez et collez l'une de ces URL :
http://localhost:8890/?token=a7086764cda7aba8488a767386d57121429958771a8bccb2
ou http://127.0.0.1:8890/?token=a7086764cda7aba8488a767386d57121429958771a8bccb2
Développement et test
Ce rôle utilise Molecule et Docker pour les tests.
Après avoir installé Docker :
Clonez le dépôt dans un paquet nommé marvel-nccr.aiida
(le dossier doit avoir le même nom que celui d'Ansible Galaxy)
git clone https://github.com/marvel-nccr/ansible-role-aiida marvel-nccr.aiida
cd marvel-nccr.aiida
Ensuite, exécutez :
pip install -r requirements.txt # Installe Molecule
molecule test # exécute les tests
ou utilisez tox (voir tox.ini
) :
pip install tox
tox
Pour tester manuellement le conteneur Docker créé, exécutez d'abord :
tox converge
Cela exécutera le rôle Ansible, laissant le conteneur en cours d'exécution. La méthode recommandée pour interagir avec le conteneur est ensuite d'utiliser l'extension Docker de VS Code. Avec cela, vous pouvez ensuite attacher une instance de Visual Studio Code :
À l'intérieur du conteneur, exécutez aiida-jupyterlab
, et vous pourrez accéder à l'URL fournie depuis votre navigateur local.
Lorsque vous avez fini avec le conteneur, détruisez le conteneur avec :
tox destroy
Style de code
Le style de code est formaté et vérifié avec pre-commit.
pip install pre-commit
pre-commit run --all
Déploiement
Le déploiement sur Ansible Galaxy est automatisé via GitHub Actions.
Il suffit de taguer une version vX.Y.Z
pour initier le CI et le flux de travail de publication.
Notez que la publication ne sera complète que si les tests CI réussissent.
Licence
MIT
Contact
Veuillez diriger les demandes de renseignements concernant Quantum Mobile et les rôles ansible associés vers la liste de diffusion AiiDA.
An ansible role that installs and configures [AiiDA](http://www.aiida.net/) on Ubuntu, RHEL, CentOS and Fedora.
ansible-galaxy install marvel-nccr.aiida