Installer DemocracyOS avec OnPremises

De Wiki Amis SH
Aller à la navigation Aller à la recherche



Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack


Installer DemocracyOS avec OnPremises

Question pour installer DemocracyOS comme une machine virtuelle : https://github.com/DemocracyOS/democracyos/issues/1468#issuecomment-344602204
Réponse, utiliser DemocracyOS onpremises. Git de DemocracyOS onpremises : https://github.com/DemocracyOS/onpremises
- Quel est l'intérêt d'installer la version onpremises ?
L'équipe de DemocracyOS France n'a pas encore pu tester la version OnPremises / Ansible de DemocracyOS.
Leur déploiement est généralement fait manuellement sur serveur Linux ou automatiquement via des services cloud type Heroku.
- Voir à trouver un guide complet pour déployer DemocracyOS avec Heroku.

La Machine Virtuelle utilisée est Debian 9 Stretch

Noter que cette installation n'a pas été aboutie pour le moment

Cette page ne permet donc pas l'installation de DemocracyOS avec OnPremises pour le moment.
Consulter plutôt cette page pour une installation de DemocracyOS "presque" fonctionnelle, avec Docker : Installer DemocracyOS.

Installer Ansible

Ansible est une application permettant de déployer et gérer des applications dans le Cloud et/ou sur un ensemble d'ordinateurs interconnectés.
Architecture de Ansible sous Debian Stretch : https://packages.debian.org/fr/stretch/all/ansible/filelist
Installer Ansible 2.1.0.0 ou supérieur.
La source PPA pour Debian 9 Stretch est la même que pour Ubuntu.
Dans /etc/apt/sources.list, ajouter la ligne suivante :
deb http://ppa.launchpad.net/ansible/ansible/ubuntu xenial main

Ajouter la clé du dépôt Ansible

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
Le message d'erreur suivant est affiché :
Executing: /tmp/apt-key-gpghome.cEEKTiql4h/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: failed to start the dirmngr '/usr/bin/dirmngr': Aucun fichier ou dossier de ce type
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.cEEKTiql4h/S.dirmngr' failed: Aucun fichier ou dossier de ce type
gpg: keyserver receive failed: Pas de dirmngr
Le paquet dirmngr n'est pas installé par défaut.
Installer dirmngr avec la commande apt install dirmngr
Relancer l'ajout de la clé avec la commande sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
Mettre à jour les dépôts.
$ sudo apt-get update
Installer Ansible
$ sudo apt-get install ansible

Cloner le repo avec Ansible et indiquer les rôles nécessaires

Explication de la commande : ansible-galaxy install -p ./roles -r ./requirements.yml

Consulter les tutoriels suivants pour comprendre les rôles

# https://galaxy.ansible.com
# Les rôles disponibles : https://galaxy.ansible.com/list#/roles
man ansible pour plus d'informations sur le paramètre -p ./roles

Lancer le clonage

Créer le fichier requirements.yml dans le dossier user
requirements.yml
# requirements.yml

# Depuis le serveur galaxy (???)
# Définir le timezone : https://github.com/yatesr/ansible-timezone
- src: yatesr.timezone

# Faut t'il vraiment doubler avec les dépôts de github ?
# from github
#- src: https://github.com/bennojoy/nginx

# from github, overriding the name and specifying a specific tag
- src: https://github.com/bennojoy/nginx
  version: master
  name: nginx_role

## Je part du principe que les dépôts présentés ci-dessous sont des exemples obsolètes.
## from a webserver, where the role is packaged in a tar.gz
##- src: https://some.webserver.example.com/files/master.tar.gz
## name: http-role

## from bitbucket, if bitbucket happens to be operational right now :)
## - src: git+http://bitbucket.org/willthames/git-ansible-galaxy
##  version: v1.4

## from bitbucket, alternative syntax and caveats
##- src: http://bitbucket.org/willthames/hg-ansible-galaxy
##  scm: hg
Source officielle du fichier de requirements.yml : https://galaxy.ansible.com/intro#download-advanced
# Voir aussi :
Source proposée sur le Github de Democracyos Onpremises : https://github.com/DemocracyOS/onpremises/blob/master/requirements.yml
# Lequel utiliser ?
Cloner
Installer ansible-galaxy ou bien installer les paquets choisis comme le serveur Nginx ?
su
apt install git
su
ansible-galaxy install -p ./roles -r ./requirements.yml
Warning
Pour éviter le warning avec le fichier de test, installer git avant de lancer l'installation de ansible-galaxy.
[WARNING]: - nginx was NOT installed successfully: error executing: git clone
https://github.com/bennojoy/nginx nginx
Installer git
Pour éviter le warning avec le fichier de test, commenter les lignes comme dans l'exemple.
[WARNING]: - http-role was NOT installed successfully.
Préciser l'adresse du fichier tar.gz contenant les rôles, ou, commenter la ligne comme dans l'exemple du fichier requirements.yml ci-dessus.

Installer le client SSH sur la Machine Virtuelle

apt install openssh-client

Configurer SSH pour Ansible

Ansible remplace toute action manuelle sur une machine, l'action peut être faite à distance, pour cela Ansible utilise SSH.
Il est donc recommandé de mettre une clef RSA publique dans le compte "root" à l’intérieur du fichier "/root/.ssh/authorized_keys" pour éviter que la demande de mot de passe lors de la connexion à la machine distante.
Il est également possible d'utiliser un compte utilisateur sudoers plutôt que d'utiliser directement l'utilisateur root.
Le ssh/config (La documentation : https://linux.die.net/man/5/ssh_config) doit contenir :
Host nom arbitraire que tu veux donner à ton serveur
HostName ip publique du serveur
User j’ai mis root mais le user dont tu te sers pour te connecter
Ensuite, dans le hosts d’ansible, lister les noms des hosts et à éventuellement les regrouper dans les [logicalGroups]
lb1 faisait référence à un éventuel lord balancer mais tous ces noms sont totalement arbitraire. Le principal est qu’il correspondent aux noms listés dans la config de ssh.
Exemple :
Configurer le ssh config ~/.ssh/config qui doit ressembler à ça :
Host db1
HostName 192.168.0.1
User root

Host fr1
HostName 192.168.0.2
User root

Host fr2
HostName 192.168.0.3
User root

Host lb1
HostName 192.168.0.4
User root

Host autre_server
HostName 192.168.0.45
User root

Puis ton hosts :

Autre_server
[serveurs web]
fr1
fr2

[dbservers]
db1

[loadbalancers]
lb1
Demander un retour d'informations complémentaires pour configurer SSH et Ansible à Quentin Busuttil de Buzut - https://buzut.fr

Toute action pouvant être faite sur une machine en fonctionnement peut être fait via Ansible.
Ansible sait gérer différentes distribution. Si le paquet "vim" doit être installé, il sait qu'il doit utiliser "apt-get" pour "Debian" et "yum" pour "RedHat".
Ansible n'est pas nécessaire sur les machines distantes. Python suffit et est en principe pré-installé.
De nombreux contrôles sont faits de tels sorte qu'une commande ou un script ne soit utilisé qu'une et une seule fois.
Exemple pour un ensemble de machines concernées qui ne sont pas toutes accessibles simultanément. L'objectif serait de faire des opérations de maintenance dessus.
Le "playbook" sera lancé de  manière répétitive sur l'ensemble du parc ciblé sans jamais altérer les machines conformes à ce qui est attendu et cela quelque soit l'OS utilisé.

Créer son Droplet, par exemple, chez Digital Océan

Configurer un droplet chez Digital Ocean.

Vérifier la connexion avec la clé SSH

Un Droplet a été créé sur DigitalOcéan pour suivre le tutoriel proposé par DemocracyOS pour son installation.
La Machine Virtuelle où DemocracyOS va s'exécuter avec un accès rootdoit pouvoir se connecter au Droplet avec une clé SSH.
Les configurations précédentes ont du nous permettre d'en arriver a une connexion réussie vers le serveur SSH distant avec l'utilisateur sudoers distant toto.
ssh toto@46.101.255.59 -i /home/user/.ssh/dossier/id_rsa
L'accès SSH depuis la machine virtuelle Debian Stretch et son utilisateur root vers le Droplet et son utilisateur sudoers est fonctionnel.

Reprendre sur la Machine Virtuelle

Situation actuelle

ansible all -m ping
[WARNING]: Could not match supplied host pattern, ignoring: all
[WARNING]: provided hosts list is empty, only localhost is available
[WARNING]: No hosts matched, nothing to do
How to : Comment configurer les fichiers de Ansible pour lancer la commande.
How to : Comment configurer les fichiers hosts, inventory, playbook.yml ...
 Apprendre à utiliser Ansible : automatiser l'installation, le déploiement et la gestion de vos serveurs : https://www.developpez.net/forums/d1758024/systemes/linux/apprendre-utiliser-ansible-automatiser-l-installation-deploiement-gestion-vos-serveurs/
 En revenir au Github : https://github.com/DemocracyOS/onpremises

Personnaliser la façon dont l'environnement va fonctionner


How to : https://github.com/matiasdecarli/democracyos_onpremises/issues/1 (?)

Créer un fichier d'inventaire et un fichier de configuration avec vos variables personnalisées

Source : http://docs.ansible.com/ansible/latest/intro_inventory.html

/etc/ansible/hosts

Le format de /etc/ansible/hosts est de type INI, l'une des valeurs par défaut d'Ansible, et ressemble à ceci :
mail.example.com

[serveurs web]
foo.example.com
bar.example.com

[dbservers]
one.example.com
two.example.com
three.example.com
Comment configurer ce fichier et les fichiers suivant pour une première utilisation de ansible ?

inventories

Les noms de fichiers doivent être les mêmes que votre environnement : inventories/staging and inventories/staging.yml // Voir inventories/example et inventories/example.yml
https://github.com/DemocracyOS/onpremises/blob/master/inventories/example
More info: http://docs.ansible.com/ansible/intro_inventory.html
[host]
# Here you have to put all the necessary data to connect to your server. 
localhost

[host:vars]
ENV=example

# (required) is the location of the configuration file
inventory_env=example
## inventories/example
---
-
 # Here you can override all the variables that are used on playbook.yml
 hostDest: /usr/src

 # Here you can put all the configuration variables for DemocracyOS
 # You can set any of the values listed here:
 #   http://docs.democracyos.org/configuration.html
 democracyos:
ORGANIZATION_NAME: 'DemocracyOS Example'
## inventories/example.yml
## Source : https://github.com/DemocracyOS/onpremises/blob/master/inventories/example.yml

Le fichier playbook.yml

Situation minimaliste possible

Installation de l'OS et d'Ansible.
Installation des "playbook" à exécuter sur la machine avec Ansible.
Lancer alors la commande qui va exécuter toutes les tâches définies sur playbook.yml
ansible-playbook playbook.yml -i inventories/<path to your inventory file>

This command is going to execute all the tasks defined at playbook.yml
https://github.com/DemocracyOS/onpremises/blob/master/playbook.yml
http://docs.ansible.com/ansible/latest/playbooks.html
https://docs.ansible.com/ansible/latest/playbooks_intro.html
Les trois fichiers inventory, playbook.yml, requirements.yml sont en exemple depuis le Github de DemocracyOS : https://github.com/matiasdecarli/democracyos_onpremises/tree/master/ansible
Github de DemocracyOS : https://github.com/DemocracyOS/onpremises
Voir aussi l'exemple de matiasdecarli : https://github.com/matiasdecarli/democracyos_onpremises/tree/master/ansible

Utiliser DemocracyOS avec Docker

Installer Docker sur la machine virtuelle

Installer Docker avant de lancer les commandes suivantes depuis la machine virtuelle.

Installer MongoDB sur la machine virtuelle

Installer MongoDB.

Installation officielle de DemocracyOS sur Unix and OS/X

Fork ou télécharger depuis un dépôt : https://help.github.com/articles/fork-a-repo/
Aller à l’emplacement du projet avec la commande cd.
Assurez-vous que MongoDB est en cours d'exécution et peut être atteint comme configuré dans config/development.json.
(Les valeurs par défaut devraient fonctionner)
Exécuter make
DemocracyOS devrait s'exécuter sur le port 3000.
 Installation officielle : http://docs.democracyos.org/install.html
  Installation officielle : http://democracyos.eu/docs-fr/doc/2016/09/22/installation.html

Importer l'image de DemocracyOS

Image de production fonctionnelle pour lancer DemocracyOS avec Docker : democracyos/democracyos : https://hub.docker.com/r/democracyos/democracyos/ et https://github.com/DemocracyOS/democracyos
# Deploy a new Docker image
docker pull democracyos/democracyos:latest && docker-compose -f /usr/src/docker-compose.yml restart -d
# J'ai une erreur à cause du fichier docker-compose.yml inexistant.
# docker-compose.yml introuvable.
Comment créer et utiliser docker-compose.
Installer le paquet docker-compose
Orienter mes recherches pour utiliser deux images de Docker en même temps, MongoDB et Democracyos.
Regarder alors docker-compose.yml et son utilisation avec docker-compose.
Un modèle ? : https://github.com/DemocracyOS/onpremises/blob/master/templates/docker-compose.j2

# Par défaut, je tente d'utiliser la commande suivante mais qui va me renvoyer une erreur MongoDB n'est pas démarré. (Voir l'erreur sur la page Docker.)
docker pull democracyos/democracyos
# See the logs
docker-compose -f /usr/src/docker-compose.yml logs --follow
# View all the services running
docker-compose -f /usr/src/docker-compose.yml ps
# Connect to the running MongoDb console
docker exec -it src_mongo_1 mongo democracyos-staging
# Connect to the image running DemocracyOS
docker exec -it src_app_1 bash
# Scale the number of DemocracyOS instances running
docker-compose -f /usr/src/docker-compose.yml scale app=3

Bibliographie

Ansible

 Ansible : https://fr.wikipedia.org/wiki/Ansible
 Linux Tutorial install Ansible configuration management and it automation tool : https://www.cyberciti.biz/python-tutorials/linux-tutorial-install-ansible-configuration-management-and-it-automation-tool/
 Installer et tester Ansible sur Debian : https://infranoobs.blogspot.fr/2016/08/installer-ansible-20-sous-debian-8-how.html
 Configuration et déploiement avec Ansible : https://utux.fr/index.php?article100/configuration-et-deploiement-avec-ansible
 Paresseux mais pragmatique : http://sametmax.com/introduction-a-ansible-loutil-du-sysadmin-paresseux-mais-pragmatique/
 https://coderwall.com/p/juc_mw/how-to-setup-a-digital-ocean-droplet-with-ansible
 https://utux.fr/index.php?article100/configuration-et-deploiement-avec-ansible
 Lire : http://docs.ansible.com/ansible/latest/galaxy.html#the-website

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Amis SH.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Amis SH vous permet de poser vos questions.
Consulter le site amis-sh.fr pour installer votre propre serveur web.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Miner de la cryptomonnaie.