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
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
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]
Copier après la connexion
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
Copier après la connexion
Cependant, le module par défaut peut être modifié dans ansible.cfg. Les paramètres sous la commande ansible sont expliqués comme suit :
- Paramètres :
- -a 'Arguments', --args='Arguments' paramètres de ligne de commande
-
-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. 🎜>
- -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.
- -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
- -U --sud-user=SUDO_User À quel utilisateur sudo, la valeur par défaut est root
- -k --ask-pass mot de passe de connexion, demander le mot de passe SSH au lieu d'assumer l'authentification par clé
- -K --ask-sudo-pass demande le mot de passe, utilisez sudo
- -s --sudo sudo run
- -S --su Utiliser la commande su
- -l --list affiche tous les modules pris en charge
- -s --snippet spécifie le module pour afficher les extraits de script
- -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
- --private-key=PRIVATE_KEY_FILE chemin de la clé privée, utilisez ce fichier pour vérifier la connexion
- -v --détails verbeux
- all exécute pour tous les hôtes définis par les hôtes
- -M MODULE_PATH, --module-path=MODULE_PATH Le chemin du module à exécuter, la valeur par défaut est /usr/share/ansible/
- --list-hosts affiche uniquement les hôtes qui exécuteront ce fichier playbook, et n'exécute pas réellement le fichier playbook
- -o --sortie compressée sur une ligne, sortie résumée Essayez de tout afficher sur une seule ligne.
- -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.
- -Délai d'exécution en arrière-plan B
- -P Enquêter sur l'heure du programme en arrière-plan
- -T Secondes, --timeout=Secondes temps en secondes
- -P NUM, --poll=NUM L'arrière-plan du sondage fonctionne toutes les quelques secondes. Obligatoire - b
- -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.
- --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
- --list-hosts affiche uniquement les hôtes qui exécuteront ce fichier playbook, et n'exécute pas réellement le fichier playbook
- --list-tasks Liste toutes les tâches qui seront exécutées
- -C, --check teste simplement ce qui sera modifié et ne l'exécutera pas réellement, il essaie de prédire certains changements possibles
- --syntax-check Effectue une vérification de la syntaxe du script, mais ne l'exécute pas
- -l SUBSET, --limit=SUBSET limite davantage le mode hôte/groupe sélectionné --limit=192.168.0.15 Exécutez uniquement cette adresse IP
- --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
- -e EXTRA_VARS, --extra-vars=EXTRA_VARS Variables supplémentaires définies comme clé=valeur ou YAML/JSON
- #cat update.yml
- ---
- - hôtes : {{ hôtes }}
- utilisateur_distant : {{ utilisateur }}
- ............
- #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
- -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...]
Copier après la connexion
该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:
- //列出所有已安装的模块
- # ansible-doc -l
-
//查看具体某模块的用法,这里如查看command模块
- # ansible-doc -s command
3、ansible-galaxy
# ansible-galaxy -h
Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...
Copier après la connexion
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
Copier après la connexion
这个安装了一个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!