GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer l'outil d'automatisation Ansible dans CentOS 7

Bonjour et bienvenue dans notre article sur Ansible Automation Tool similaire à Chef ou Puppet. Tout d'abord, Ansible est facile à installer, simple à configurer et facile à comprendre. En informatique, il est très important de garder vos systèmes et processus très simples. Ansible est utilisé pour la gestion de la configuration qui aide à configurer vos serveurs Web et d'applications et facilite la version de vos fichiers. Vous pouvez également l'utiliser pour gérer différentes configurations dans vos environnements de développement, de mise en scène et de production. Il est également utilisé pour le déploiement d'applications. Il peut entièrement automatiser vos déploiements d'applications multiniveaux pouvant gérer plusieurs serveurs de groupe et bases de données.

Ansible utilise SSH pour se connecter aux serveurs et exécuter les tâches configurées en se connectant aux clients via SSH, pas besoin de configurer un agent spécial. Tout ce dont vous avez besoin est un python et un utilisateur qui peut se connecter et exécuter les scripts, puis Ansible commence à rassembler des informations sur la machine, telles que le système d'exploitation et les packages installés, les autres services en cours d'exécution, etc. Après cela, Ansible exécute les playbooks au format de fichier YAML. , les playbooks sont un ensemble de commandes qui peuvent effectuer plusieurs tâches.

Prérequis

Dans ce tutoriel, nous installerons et configurerons Ansible sur CentOS 7 et gérerons ses deux nœuds afin de comprendre ses fonctionnalités.

Dans notre environnement de test, nous utiliserons trois machines virtuelles Linux CentOS 7, une pour contrôler l'emplacement d'installation du serveur Ansible et deux nœuds qui seront gérés par cette machine de contrôle via SSH. Assurez-vous que Python 2.6 ou 2.7 est installé sur vos nœuds de contrôle et client pour une installation réussie d'Ansible.

Connectons-nous à votre serveur de contrôle en utilisant un utilisateur root ou un utilisateur non root avec des privilèges sudo pour démarrer avec Ansible.

Configurer le référentiel EPEL

Nous devons d'abord activer le référentiel 'epel' pour CentOS 7 sur le serveur de contrôle car le package Ansible n'est pas disponible dans les référentiels yum par défaut.

Pour activer le référentiel EPEL sur CentOS 7/RHEL 7, tapez :

# yum install epel-release

Installer Ansible

Nous pouvons maintenant installer Ansible sur CentOS 7 à l'aide de la commande 'yum' qui l'installera, y compris ses dépendances requises, en choisissant la touche 'y' pour continuer comme indiqué.

# yum install ansible

Une fois que vous avez installé avec succès Ansible, vous pouvez vérifier et vérifier sa version installée à l'aide de la commande ci-dessous.

# ansible --version

Authentification SSH basée sur des clés avec des nœuds

Afin d'effectuer tout déploiement/gestion de l'hôte local à l'hôte distant, nous devons d'abord générer des clés sur le serveur Ansible et copier la clé publique sur les nœuds clients. Exécutez la commande ci-dessous sur votre serveur Ansible pour générer ses clés publique et privée.

# ssh-keygen -t rsa -b 4096

Après avoir généré la clé SSH, copiez-la maintenant sur le serveur distant en utilisant la commande suivante pour placer les clés SSH sur les hôtes distants.

# ssh-copy-id root@node1_ip

Si vous utilisez un port ssh personnalisé, mentionnez-le en utilisant le paramètre '-p' dans votre commande. Il vous sera demandé le mot de passe de votre nœud client, une fois que vous avez fourni le bon mot de passe de votre nœud client, il sera autorisé avec succès.

# ssh-copy-id -p2178 root@node1_ip
The authenticity of host '[72.25.70.83]:2178 ([72.25.70.83]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:9c:D9:35:le:09:3d:5f:31:43:a1:41:94:70:53.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Authorized uses only. All activity may be \ monitored and reported.
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh -p '2178' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Vous pouvez également ajouter manuellement la clé rsa publique de votre serveur de contrôle aux nœuds clinet. Pour ce faire, connectez-vous à votre nœud client et suivez les étapes ci-dessous.

Copiez d'abord la clé du fichier '/root/.ssh/id_rsa.pub' et enregistrez-la sur le nœud client dans le répertoire personnel de votre serveur ou de tout autre utilisateur que vous souhaitez authentifier.

[root@centos-7 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7
[root@node2 ~]# vi .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7

Enregistrez et quittez le fichier et vous pourrez accéder à vos deux nœuds clients depuis le serveur de contrôle sans demander le mot de passe root.

[root@centos-7 ~]# ssh -p 2178 root@node1_ip
[root@centos-7 ~]# ssh -p 2178 root@node2_ip
[root@centos-7 .ssh]# ssh -p 2178 [email protected]
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 21:42:09 2016 from 12.1.0.90

[root@node1 ~]# exit
logout
Connection to 72.25.10.83 closed.

[root@centos-7 .ssh]# ssh -p 2178 [email protected]
The authenticity of host '[72.25.10.84]:2178 ([72.25.10.84]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:3c:85:55:61:79:1d:1f:21:33:s1:s1:fd:g0:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[72.25.10.84]:2178' (ECDSA) to the list of known hosts.
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 22:03:56 2016 from 12.1.0.90
[root@node2 ~]#
[root@node2 ~]# exit
logout
Connection to 72.25.10.84 closed.

Création d'un inventaire d'hôtes distants

Après avoir configuré l'authentification des clés SSH entre le serveur Ansible et ses nœuds clients, vous allez maintenant configurer ces hôtes distants sur le serveur de contrôle Ansible en modifiant le fichier '/etc/ansible/hosts'. Ce fichier contient l'inventaire des hôtes distants auxquels Ansible doit se connecter via SSH pour gérer les systèmes.

Ouvrez le fichier à l'aide de l'un de vos éditeurs pour le configurer.

[root@centos-7 ~]# vim /etc/ansible/hosts

Ici, dans le fichier de configuration, nous avons configuré les deux nœuds clients pour utiliser le port '2178', si vous utilisez le port ssh par défaut, vous mettrez simplement votre adresse IP hôte.

Après avoir enregistré le fichier, exécutons la commande ansible suivante avec les options '-m' pour que le module vérifie la connectivité du serveur Ansible aux serveurs distants.

# ansible -m ping 72.25.10.83
# ansible -m ping 72.25.10.73

Vous pouvez également utiliser la commande belo pour envoyer un ping à tous vos hôtes configurés.

[root@centos-7 ~]# ansible all -m ping
72.25.10.83 | success >> {
"changed": false,
"ping": "pong"
}

72.25.10.73 | success >> {
"changed": false,
"ping": "pong"
}

Exécuter des commandes à distance

Dans les exemples ci-dessus, nous venons d'utiliser le module ping pour envoyer un ping aux hôtes distants. Il existe différents modules disponibles pour exécuter des commandes sur des hôtes distants. Nous allons maintenant utiliser le module 'command' avec la commande 'ansible' pour obtenir des informations sur la machine distante telles que les informations sur le nom d'hôte du système, l'espace disque libre et la disponibilité, comme indiqué.

# ansible -m command -a 'hostnamectl' 72.25.10.83
# ansible -m command -a 'df -h' 72.25.10.83
# ansible -m command -a 'uptime' 72.25.10.83

De même, vous pouvez exécuter de nombreuses commandes shell à l'aide d'ansible sur l'hôte client unique ainsi que sur le groupe de vos hôtes similaires, comme si vous avez configuré un groupe "serveurs Web" dans votre fichier d'inventaire d'hôte ansible, vous exécuterez la commande comme ça.

# ansible -m command -a "uptime" web-servers

Créer des playbooks dans Ansible

Les playbooks sont des scripts de gestion de configuration d'Ansible utilisés pour gérer les configurations et les déploiements sur des machines distantes. Les playbooks contiennent un ensemble de politiques que vous souhaitez que vos systèmes distants soient mis en œuvre.

Créons votre premier playbook avec le nom de fichier 'httpd.yml', puis nous configurerons un hôte pour exécuter un serveur Web apache. Ici, vous choisirez les configurations vers quelles machines de votre infrastructure cibler et quel utilisateur distant effectuer les tâches, comme indiqué dans le fichier de configuration.

[root@centos-7 ~]# vi httpd.yml
---
- hosts: 72.25.10.83
  remote_user: root
  tasks:
  - name: Installing Latest version of Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: (Enable it on System Boot)
    service: name=httpd enabled=yes
    notify:
      - start apache
  handlers:
    - name: start apache
      service: name=httpd state=started

Enregistrez et fermez le fichier, puis créez un fichier html de démonstration qui sera placé dans la racine de document par défaut des hôtes distants.

[root@centos-7 ~]# vi /etc/ansible/index.html
Installing Apache by Ansible

Apache Web Server is installed by Ansible

Congratulations, Apache is managed through Ansible

Comprendre les configurations de Playbook

Comme nous avons créé notre premier playbook, il est maintenant important de comprendre comment cela fonctionne. Tous les fichiers YAML doivent commencer par (trois tirets) '---', qui indique le début d'un document. Ensuite, la ligne des hôtes est une liste d'un ou plusieurs groupes ou modèles d'hôtes séparés par des deux-points. Vous pouvez mentionner le compte d'utilisateur distant avec l'hôte.

---
- hosts: 72.25.10.83
  remote_user: root

Ensuite, nous avons un ensemble de tâches, où chaque jeu contient une liste de tâches, celles-ci sont exécutées dans l'ordre, une à la fois, contre toutes les machines correspondant au modèle hôte, avant de passer à la tâche suivante.

tasks:
- name: Installing Latest version of Apache
  yum: pkg=httpd state=latest
- name: Copying the demo file
  template: src=/etc/ansible/index.html dest=/var/www/html
            owner=apache group=apache mode=0644
- name: (Enable it on System Boot)
  service: name=httpd enabled=yes

Chaque tâche doit avoir un nom, qui est inclus dans la sortie. Ceci est une sortie pour nous, il est donc agréable d'avoir des descriptions raisonnablement bonnes de chaque étape de la tâche. Ainsi, notre première tâche installera la dernière version d'apache, la deuxième copiera le html de démonstration (/etc/ansible/index.html) dans le répertoire /var/www/html des hôtes distants et la troisième activera le démarrage automatique du service apache. pendant le démarrage du système.

Après cela, les actions "notifier" sont déclenchées à la fin de chaque bloc de tâches dans un playbook, et ne seront déclenchées qu'une seule fois, même si elles sont notifiées par plusieurs tâches différentes.

notify:
  - start apache

L'élément 'notify' contient un élément appelé « start apache ». Il s'agit d'une référence à un gestionnaire, qui peut exécuter certaines fonctions lorsqu'il est appelé depuis une tâche. Nous allons définir le gestionnaire "start apache" ci-dessous.

handlers:
  - name: start apache
    service: name=httpd state=started

Les gestionnaires sont des listes de tâches qui ne s'exécutent que lorsqu'elles ont été informées par une tâche que des modifications se sont produites sur le système client. Comme nous avons un gestionnaire qui démarre le service apache après l'installation du paquet.

Exécuter Playbook dans Ansible

Après avoir configuré la configuration de votre playbook, vous pouvez exécuter votre playbook à l'aide de la commande ci-dessous.

# ansible-playbook -l 72.25.10.83 httpd.yml

Après cela, ouvrez votre navigateur et accédez à l'adresse IP de votre hôte distant mentionnée dans l'inventaire ansible.

http://your_client_node_ip/

Donc, si vous obtenez la page ci-dessus, cela signifie que vous avez installé avec succès Apache avec Ansible Playbook. De la même manière, vous pouvez créer de nombreux playbooks pour installer vos applications complexes sur plusieurs hôtes.

Conclusion

Ansible est assez intéressant et très facile, léger. Peut facilement être opérationnel en 5 minutes. Ainsi, vous avez installé avec succès Ansible sur CentOS 7 et appris son utilisation de base pour créer un playbook simple pour l'automatisation de l'installation d'Apache. J'espère que vous avez trouvé cela utile dans l'automatisation de vos tâches.


Cent OS
  1. Comment configurer des clés SSH sur CentOS 8

  2. Comment installer Ansible sur CentOS 8 Linux

  3. Comment installer Ansible sur CentOS 7

  4. Comment installer Ansible sur CentOS 8

  5. Comment configurer les clés SSH sur CentOS 8

Comment configurer Openshift Origin sur CentOS 7

Comment configurer la connexion sans mot de passe SSH sur CentOS 7 / RHEL 7

Comment configurer la connexion sans mot de passe SSH sur CentOS 8 / RHEL 8

Comment installer Wireshark sur CentOS 8

Comment générer une clé SSH dans CentOS 8

Comment installer l'outil d'automatisation de construction Gradle sur CentOS 8