Maison  >  Article  >  Tutoriel système  >  Comprendre l'architecture et les principes de fonctionnement d'Ansible

Comprendre l'architecture et les principes de fonctionnement d'Ansible

PHPz
PHPzoriginal
2024-09-02 15:59:59727parcourir

Ansible est un gestionnaire de configuration basé sur un modèle qui prend en charge la publication multi-nœuds et l'exécution de tâches à distance. Par défaut, SSH est utilisé pour les connexions à distance. Il n'est pas nécessaire d'installer un logiciel supplémentaire sur les nœuds gérés et il peut être étendu à l'aide de divers langages de programmation.

1.Architecture de base d'Ansible

Comprendre larchitecture et les principes de fonctionnement dAnsible

L'image ci-dessus montre l'architecture de base d'ansible. D'après l'image ci-dessus, vous pouvez comprendre qu'elle se compose des parties suivantes :

  • Noyau : ansible
  • Modules de base : ce sont les modules fournis avec ansible
  • Modules d'extension (modules personnalisés) : si le module de base n'est pas suffisant pour remplir une certaine fonction, vous pouvez ajouter des modules d'extension
  • Plugins : Complétez le supplément des fonctions du module
  • Playbooks : fichier de configuration des tâches d'Ansible, qui définit plusieurs tâches dans le playbook et est automatiquement exécuté par ansible
  • Plugins de connexion : ansible se connecte à chaque hôte en fonction des plug-ins de connexion. Bien qu'ansible utilise ssh pour se connecter à chaque hôte, il prend également en charge d'autres méthodes de connexion, un plug-in de connexion est donc requis
  • Inventaire des hôtes : Définir les hôtes gérés par ansible
2. Principe de fonctionnement d'ansible

Comprendre larchitecture et les principes de fonctionnement dAnsible Comprendre larchitecture et les principes de fonctionnement dAnsible

Ci-dessus sont deux diagrammes de principes de fonctionnement ansibles trouvés sur Internet. Les deux diagrammes sont essentiellement des extensions basées sur le diagramme d'architecture. Vous pouvez comprendre à partir de l'image ci-dessus :

1. Le terminal de gestion prend en charge trois façons de se connecter au terminal géré : local, ssh et zeromq. La valeur par défaut est d'utiliser la connexion basée sur ssh --- cette partie correspond au module de connexion dans le schéma d'architecture de base. ;

2. L'inventaire des hôtes (groupe d'hôtes) peut être classé selon le type d'application, etc. Le nœud de gestion implémente les opérations correspondantes à travers différents modules - un seul module, exécution par lots d'une seule commande, nous pouvons l'appeler ad-hoc ;

3. Le nœud de gestion peut utiliser des playbooks pour implémenter un ensemble de tâches multiples pour implémenter un type de fonctions, telles que l'installation et le déploiement de services Web, la sauvegarde par lots de serveurs de bases de données, etc. Nous pouvons simplement comprendre les playbooks comme des fichiers de configuration que le système exploite en combinant plusieurs opérations ad hoc.

3. Sept commandes d'ansible

Après avoir installé ansible, nous avons constaté qu'ansible nous fournit sept instructions au total : ansible, ansible-doc, ansible-galaxy, ansible-lint, ansible-playbook, ansible-pull, ansible-vault. Ici, nous examinons uniquement la partie utilisation, et la partie détaillée peut être obtenue via la méthode "command -h".

1.ansible
1.[root@localhost ~]# ansible -h
2.Usage: ansible  [options]

Ansible est la partie centrale de la commande, qui est principalement utilisée pour exécuter des commandes ad hoc, c'est-à-dire une commande unique. Par défaut, les parties hôte et options doivent être suivies. Lorsque le module n'est pas spécifié par défaut, le module de commande est utilisé. Tel que :

1.[root@361way.com ~]# ansible 192.168.0.102 -a 'date'
2192.168.0.102 | success | rc=0 >>
3Tue May 12 22:57:24 CST 2015

Cependant, le module par défaut peut être modifié dans ansible.cfg. Les paramètres sous la commande ansible sont expliqués comme suit :

  1. Paramètres :
  2. -a 'Arguments', --args='Arguments' paramètres de ligne de commande
  3. -m NAME, --module-name=NAME Le nom du module d'exécution est utilisé par défaut, donc si vous n'exécutez qu'une seule commande, vous n'avez pas besoin du paramètre -m. 🎜>
  4. -i PATH, --inventory=PATH spécifie le chemin d'accès au fichier hôte d'inventaire, la valeur par défaut est /etc/ansible/hosts.
  5. -u Nom d'utilisateur, --user=Utilisateur d'exécution du nom d'utilisateur, utilise ce nom d'utilisateur distant au lieu de l'utilisateur actuel
  6. -U --sud-user=SUDO_User À quel utilisateur sudo, la valeur par défaut est root
  7. -k --ask-pass mot de passe de connexion, demander le mot de passe SSH au lieu d'assumer l'authentification par clé
  8. -K --ask-sudo-pass demande le mot de passe, utilisez sudo
  9. -s --sudo sudo run
  10. -S --su Utiliser la commande su
  11. -l --list affiche tous les modules pris en charge
  12. -s --snippet spécifie le module pour afficher les extraits de script
  13. -f --forks=NUM Nombre de tâches parallèles. NUM est spécifié sous forme d'entier, la valeur par défaut est 5. #ansible testhosts -a "/sbin/reboot" -f 10 Redémarrez toutes les machines du groupe testhosts, 10 machines à la fois
  14. --private-key=PRIVATE_KEY_FILE chemin de la clé privée, utilisez ce fichier pour vérifier la connexion
  15. -v --détails verbeux
  16. all exécute pour tous les hôtes définis par les hôtes
  17. -M MODULE_PATH, --module-path=MODULE_PATH Le chemin du module à exécuter, la valeur par défaut est /usr/share/ansible/
  18. --list-hosts affiche uniquement les hôtes qui exécuteront ce fichier playbook, et n'exécute pas réellement le fichier playbook
  19. -o --sortie compressée sur une ligne, sortie résumée Essayez de tout afficher sur une seule ligne.
  20. -t Directory, --tree=Directory Enregistrez le contenu dans ce répertoire de sortie, en enregistrant les résultats dans un fichier sur chaque hôte.
  21. -Délai d'exécution en arrière-plan B
  22. -P Enquêter sur l'heure du programme en arrière-plan
  23. -T Secondes, --timeout=Secondes temps en secondes
  24. -P NUM, --poll=NUM L'arrière-plan du sondage fonctionne toutes les quelques secondes. Obligatoire - b
  25. -c Connection, --connection=Type de connexion de connexion à utiliser. Les options possibles sont paramiko(SSH), SSH et local. Local est principalement utilisé pour crontab ou le démarrage.
  26. --tags=TAGS Exécuter uniquement la tâche avec les balises spécifiées Exemple : ansible-playbook test.yml --tags=copy Exécuter uniquement la tâche avec la balise copy
  27. --list-hosts affiche uniquement les hôtes qui exécuteront ce fichier playbook, et n'exécute pas réellement le fichier playbook
  28. --list-tasks Liste toutes les tâches qui seront exécutées
  29. -C, --check teste simplement ce qui sera modifié et ne l'exécutera pas réellement, il essaie de prédire certains changements possibles
  30. --syntax-check Effectue une vérification de la syntaxe du script, mais ne l'exécute pas
  31. -l SUBSET, --limit=SUBSET limite davantage le mode hôte/groupe sélectionné --limit=192.168.0.15 Exécutez uniquement cette adresse IP
  32. --skip-tags=SKIP_TAGS Exécutez uniquement les jeux et les tâches avec des balises qui ne correspondent pas à ces valeurs --skip-tags=copy_start
  33. -e EXTRA_VARS, --extra-vars=EXTRA_VARS Variables supplémentaires définies comme clé=valeur ou YAML/JSON
  34. #cat update.yml
  35. ---
  36. - hôtes : {{ hôtes }}
  37. utilisateur_distant : {{ utilisateur }}
  38. ............
  39. #ansible-playbook update.yml --extra-vars "hosts=vipers user=admin" Passez {{hosts}}, {{user}} variables, les hôtes peuvent être une adresse IP ou un nom de groupe
  40. -l,--limit Exécuter des tâches sur l'hôte/groupe spécifié--limit=192.168.0.10, 192.168.0.11 ou -l 192.168.0.10, 192.168.0.11 Exécuter des tâches uniquement sur ces 2 IP
2.ansible-doc
# ansible-doc -h
Usage: ansible-doc [options] [module...]

该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:

  1. //列出所有已安装的模块
  2. # ansible-doc -l
  3. //查看具体某模块的用法,这里如查看command模块
  4. # ansible-doc -s command
3、ansible-galaxy
# ansible-galaxy -h
Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...

ansible-galaxy 指令用于方便的从https://galaxy.ansible.com/ 站点下载第三方扩展模块,我们可以形象的理解其类似于centos下的yum、python下的pip或easy_install 。如下示例:

[root@localhost ~]# ansible-galaxy install aeriscloud.docker
- downloading role 'docker', owned by aeriscloud
- downloading role from https://github.com/AerisCloud/ansible-docker/archive/v1.0.0.tar.gz
- extracting aeriscloud.docker to /etc/ansible/roles/aeriscloud.docker
- aeriscloud.docker was installed successfully

这个安装了一个aeriscloud.docker组件,前面aeriscloud是galaxy上创建该模块的用户名,后面对应的是其模块。在实际应用中也可以指定txt或yml 文件进行多个组件的下载安装。这部分可以参看官方文档。

4、ansible-lint

ansible-lint是对playbook的语法进行检查的一个工具。用法是ansible-lint playbook.yml 。

5、ansible-playbook

该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。

6、ansible-pull

该指令使用需要谈到ansible的另一种模式---pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;你要在一个没有网络连接的机器上运行Anisble,比如在启动之后安装。这部分也会单独做一节来讲。

7、ansible-vault

ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上 --ask-vault-pass参数,同样需要输入密码后才能正常执行。具体该部分可以参查官方博客。

注:上面七个指令,用的最多的只有两个ansible 和ansible-playbook ,这两个一定要掌握,其他五个属于拓展或高级部分。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn