README.md 4.25 KB
Newer Older
Thierry Fenasse's avatar
Thierry Fenasse committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Découverte de Ansible
=====================

C'est dans le cadre d'une initiation proposée par [Tharyrok](https://github.com/Tharyrok) pour préparer la nouvelle [infrastructure de Neutrinet](https://github.com/Neutrinet/infra).

Quelle claque ! :P

Ordinateur
----------

Pour cette découverte j'ai utilisé un ordinateur équipé de [GNU/Linux Trisquel 7 Belenos](https://trisquel.info/en/trisquel-70-lts-belenos) avec git et phyton.

Dossier de travail
------------------

J'ai créé un dossier Ansible dans ~/Documents pour y mettre mes futurs borls Ansibelèsque.

18 19
```
$ mkdir -p ~/Documents/Ansible && cd "$_"
Thierry Fenasse's avatar
Thierry Fenasse committed
20

21 22
```
> $_ is a special parameter that holds the last argument of the previous command. The quote around $_ make sure it works even if the folder name contains spaces. ([source](https://unix.stackexchange.com/questions/125385/combined-mkdir-and-cd) )
Thierry Fenasse's avatar
Thierry Fenasse committed
23

24
J'y ai cloné le dépot ici présent qui à l'origine était vide mais j'ai suivi ce qui est proposé sur la page d'accueil de tout nouveaux dépot Gitlab ou Github.
Thierry Fenasse's avatar
Thierry Fenasse committed
25 26

```
27
$ git clone git clone git@gitlab.domainepublic.net:tierce/decouverte-ansible.git
Thierry Fenasse's avatar
Thierry Fenasse committed
28 29
```

30 31
Ensuite je suis rentré dans le dossier de ce projet tout frais, qui pour rappel se trouve dans `~/Documents/Ansible/` sur mon ordinateur, et j'y ai édité le fichier README.md que vous êtes entrain de lire. Si si !

Thierry Fenasse's avatar
Thierry Fenasse committed
32 33 34
Cette édition du README.md peut se faire avec n'importe quel éditeur TEXTE de votre préférence.

```
35 36 37 38 39 40 41 42 43 44
$ cd decouverte-ansible
$ vi README.md
```

Et pour renvoyer le travail accomplis vers le dépôt publique, voici les quelques commandes nécessaires.

```
$ git add README.md
$ git commit -m "ajout du README"
$ git push -u origin master
Thierry Fenasse's avatar
Thierry Fenasse committed
45
```
46 47 48 49
> Il faut refaire ce genre d'opération pour « pousser » une nouvelle version du projet vers un dépôt en ligne. Si besoin, il y a quelques infos sur Git [ici](https://gitlab.domainepublic.net/tierce/tutoriel-git#autres-ressources).

Installer Ansible
-----------------
Thierry Fenasse's avatar
Thierry Fenasse committed
50

51 52
Python permet de créer un environnement de travail (un dossier) dans lequel se mettront les librairies requises par Ansible.
Ce dossier pourra être un dossier caché, commençant par un `.` pour ne pas le voir dans le projet.
Thierry Fenasse's avatar
Thierry Fenasse committed
53 54

```
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
$ virtualenv .env # .env étant le nom du dossier que vous souhaitez créer.
```

Pour ce faire il faut créer un fichier contenant la liste des modules python avec lesquels travailler.
Je me suis basé sur [cette version](https://github.com/Neutrinet/infra/blob/04e41fc50f6c2f3ac57c827e664ba9677a5f28ff/requirements.txt) du fichier `requirements.txt` de Neutrinet.

```
$ cat << EOF > req.txt
> ansible==2.3.0.0
> appdirs==1.4.3
> asn1crypto==0.22.0
> cffi==1.10.0
> cryptography==1.8.1
> enum34==1.1.6
> idna==2.5
> ipaddress==1.0.18
> Jinja2==2.9.6
> MarkupSafe==1.0
> packaging==16.8
> paramiko==2.1.2
> pyasn1==0.2.3
> pycparser==2.17
> pycrypto==2.6.1
> pyparsing==2.2.0
> PyYAML==3.12
> six==1.10.0
> EOF
```

Voici une autre méthode pour créér ce fichier `requiements.txt`.

Thierry Fenasse's avatar
Thierry Fenasse committed
86
```
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
wget https://raw.githubusercontent.com/Neutrinet/infra/04e41fc50f6c2f3ac57c827e664ba9677a5f28ff/requirements.txt
```

Pour installer ces éléments c'est `pip` qui fera le travail.  Cette étape pourrait générer des erreurs qui demanderont probablement d'installer des paquets supplémentaires dans votre ordinateur.  Il faudra alors les identifier en fonction des erreurs qui `pip` vous donneront et les installer avec votre gestionnaire de paquet favoris.  Par exemple `$ sudo apt install python-dev` ou `sudo apt install libffi-dev`.

`$ .env/bin/pip install -r requirements.txt`

À la fin de cette installation Ansible sera disponible et les quelques commandes suivantes devraient sortir quelques chose.

```
$ .env/bin/ansible --version
$ .env/bin/ansible --help
```

Parmis les binaires ansible disponibles, c'est avec `ansible` et surtout `ansible-playbook` que l'aventure commence!

```
$ ls -1 .env/bin/ansible*
.env/bin/ansible
.env/bin/ansible-connection
.env/bin/ansible-console
.env/bin/ansible-doc
.env/bin/ansible-galaxy
.env/bin/ansible-playbook
.env/bin/ansible-pull
.env/bin/ansible-vault
```

Un tutoriel en anglais
----------------------

Voici [ansible-tuto](https://github.com/leucos/ansible-tuto) qui propose une introduction intéressante à condition de disposer de [virtualbox](https://www.virtualbox.org/).

La suite bientôt…