Utilisation d'Ansible?: utilisation simple d'ansible-playbook
Sep 02, 2024 pm 02:55 PMansbile-playbook est une collection de commandes système ansible, qui est écrite en langage yaml et exécute le processus. Les commandes ansbile-playbook sont exécutées dans l'ordre descendant. Dans le même temps, Playbook a créé de nombreuses fonctionnalités. Il vous permet de transférer le statut d'une certaine commande vers une commande ultérieure. Par exemple, vous pouvez récupérer le contenu d'un fichier sur une machine et le joindre en tant que variable, puis l'utiliser. sur une autre machine. Cela vous permet d'implémenter certains mécanismes de déploiement complexes qui ne sont pas possibles avec les commandes ansible.
Playbook est utilisé via la commande ansible-playbook. Ses paramètres sont similaires à la commande ansible, tels que les paramètres -k (–ask-pass) et -K (–ask-sudo) pour demander le mot de passe ssh et sudo password et -u pour spécifier l'utilisateur, ces instructions peuvent également être écrites dans le playbook via les unités prescrites. Utilisation simple d'ansible-playbook?: ansible-playbook example-play.yml.
Un exemple simple de playbook ansible est donné ci-dessous pour comprendre sa composition.
# cat user.yml - name: create user hosts: all user: root gather_facts: false vars: - user: "test" tasks: - name: create user user: name="{{ user }}"
La fonction implémentée par le playbook ci-dessus consiste à ajouter un nouvel utilisateur?:
Le paramètre name fournit un aper?u des fonctions implémentées par le playbook Lors de l'exécution ultérieure, la valeur de la variable name sera imprimée ;
Le paramètre hosts spécifie à quels h?tes participerLe paramètre user spécifie l'utilisateur à utiliser pour se connecter à l'h?te distant
Le paramètre rassemble_facts spécifie s'il faut exécuter le module de configuration pour obtenir des informations relatives à l'h?te avant l'exécution des taches suivantes. Il sera utilisé lorsque les taches suivantes utiliseront les informations obtenues par la configuration
.
Le paramètre vars spécifie une variable. Ici, il fait référence à une variable utilisateur dont la valeur est test. Il est à noter que la valeur de la variable doit être mise entre guillemets ;task spécifie une tache, et le paramètre de nom en dessous est également une description de la tache, qui sera imprimée lors de l'exécution. L'utilisateur spécifie l'appel du module utilisateur, le nom est un paramètre dans le module utilisateur et le nom d'utilisateur ajouté appelle la valeur de la variable utilisateur ci-dessus. Les résultats spécifiques d'exécution sont les suivants?:
[root@361way playbooks]# ansible-playbook user.yml PLAY [create user] ************************************************************ TASK: [create user ] ********************************************** changed: [10.212.52.252] changed: [10.212.52.14] changed: [10.212.52.16] PLAY RECAP ******************************************************************** 10.212.52.14 : ok=1 changed=1 unreachable=0 failed=0 10.212.52.16 : ok=1 changed=1 unreachable=0 failed=0 10.212.52.252 : ok=1 changed=1 unreachable=0 failed=0
De même, si vous souhaitez supprimer cet utilisateur nouvellement ajouté, il vous suffit de remplacer la dernière ligne du fichier playbook par la ligne suivante puis d'exécuter le playbook correspondant?:
user: name="{{ user }}" state=absent remove=yes2. Exemple de shellcode bash de patch en un clic
# cat update_bash.yml - hosts: all remote_user: root gather_facts: True tasks: - name: update bash in redhat 6 version yum: name=http://mirrors.aliyun.com/centos/6.6/os/x86_64/Packages/bash-4.1.2-29.el6.x86_64.rpm.rpm state=present when: ansible_os_family == "RedHat" and ansible_distribution_version|int >=6 - name: update bash in redhat 5 version yum: name=http://mirrors.hustunique.com/centos/5/updates/x86_64/RPMS/bash-3.2-33.el5.1.x86_64.rpm state=present when: ansible_os_family == "RedHat" and ansible_distribution_version|int <p>L'instruction when est utilisée ci-dessus, et le module de configuration rassemble_facts est également activé. La variable ansible_os_family et la variable ansible_distribution_version sont ici les informations obtenues directement à partir du module de configuration. </p> <p>S'il y a un grand nombre d'h?tes, ajoutez simplement -f lors de l'exécution et sélectionnez un nombre approprié d'h?tes simultanés. Je l'ai utilisé ici et la mise à niveau de bash s'est terminée rapidement. </p> <p></p>3. La composition du playbook<div style="font-size: 14pt; color: white; background-color: black; border-left: red 10px solid; padding-left: 14px; margin-bottom: 20px; margin-top: 20px;"><strong> <p>playbook是由一個(gè)或多個(gè)“play”組成的列表。play的主要功能在于將事先歸并為一組的主機(jī)裝扮成事先通過(guò)ansible中的task定義好的角色。從根本上來(lái)講所謂task無(wú)非是調(diào)用ansible的一個(gè)module。將多個(gè)play組織在一個(gè)playbook中即可以讓它們聯(lián)同起來(lái)按事先編排的機(jī)制同唱一臺(tái)大戲。其主要有以下四部分構(gòu)成</p> <ol class="linenums"> <li class="L0"><span class="pln">playbooks組成:</span></li> <li class="L1"><span class="pln"> Target section: 定義將要執(zhí)行 playbook 的遠(yuǎn)程主機(jī)組</span></li> <li class="L2"><span class="pln"> Variable section: 定義 playbook 運(yùn)行時(shí)需要使用的變量</span></li> <li class="L3"><span class="pln"> Task section: 定義將要在遠(yuǎn)程主機(jī)上執(zhí)行的任務(wù)列表</span></li> <li class="L4"><span class="pln"> Handler section: 定義 task 執(zhí)行完成以后需要調(diào)用的任務(wù)</span></li> </ol> <p>而其對(duì)應(yīng)的目錄層為五個(gè),如下:</p> <ol class="linenums"> <li class="L0"><span class="pln">一般所需的目錄層有:(視情況可變化)</span></li> <li class="L1"><span class="pln"> vars 變量層</span></li> <li class="L2"><span class="pln"> tasks 任務(wù)層</span></li> <li class="L3"><span class="pln"> handlers 觸發(fā)條件</span></li> <li class="L4"><span class="pln"> files 文件</span></li> <li class="L5"><span class="pln"> template 模板</span></li> </ol> <p>下面介紹下構(gòu)成playbook 的四層結(jié)構(gòu)。</p> <div style="margin-top: 2em; margin-bottom: 1em;"><span style="color: #1e1e1e; letter-spacing: 2px; border-left: #FF3030 3px solid; border-right: #FF3030 3px solid; padding-left: 8px; padding-right: 8px; font-size: 12pt;"><strong>1、Hosts和Users</strong></span></div> <p>playbook中的每一個(gè)play的目的都是為了讓某個(gè)或某些主機(jī)以某個(gè)指定的用戶身份執(zhí)行任務(wù)。</p> <p>hosts 用于指定要執(zhí)行指定任務(wù)的主機(jī)其可以是一個(gè)或多個(gè)由冒號(hào)分隔主機(jī)組。</p> <p>remote_user 則用于指定遠(yuǎn)程主機(jī)上的執(zhí)行任務(wù)的用戶。<br> 不過(guò)remote_user也可用于各task中。也可以通過(guò)指定其通過(guò)sudo的方式在遠(yuǎn)程主機(jī)上執(zhí)行任務(wù)其可用于play全局或某任務(wù)。<br> 此外甚至可以在sudo時(shí)使用sudo_user指定sudo時(shí)切換的用戶。</p> <p>示例:</p> <pre class="brush:php;toolbar:false">- hosts: webnodes tasks: - name: test ping connection: remote_user: test sudo: yes
play的主體部分是task list。
task list中的各任務(wù)按次序逐個(gè)在hosts中指定的所有主機(jī)上執(zhí)行即在所有主機(jī)上完成第一個(gè)任務(wù)后再開(kāi)始第二個(gè)。在運(yùn)行自下而下某playbook時(shí)如果中途發(fā)生錯(cuò)誤所有已執(zhí)行任務(wù)都將回滾因此在更正playbook后重新執(zhí)行一次即可。
task的目的是使用指定的參數(shù)執(zhí)行模塊而在模塊參數(shù)中可以使用變量。模塊執(zhí)行是冪等的這意味著多次執(zhí)行是安全的因?yàn)槠浣Y(jié)果均一致。每個(gè)task都應(yīng)該有其name用于playbook的執(zhí)行結(jié)果輸出建議其內(nèi)容盡可能清晰地描述任務(wù)執(zhí)行步驟。如果未提供name則action的結(jié)果將用于輸出。
定義task的可以使用“action: module options”或“module: options”的格式推薦使用后者以實(shí)現(xiàn)向后兼容。如果action一行的內(nèi)容過(guò)多也中使用在行首使用幾個(gè)空白字符進(jìn)行換行。
tasks: - name: make sure apache is running service: name=httpd state=running 在眾多模塊中只有command和shell模塊僅需要給定一個(gè)列表而無(wú)需使用“key=value”格式例如 tasks: - name: disable selinux command: /sbin/setenforce 0 如果命令或腳本的退出碼不為零可以使用如下方式替代 tasks: - name: run this command and ignore the result shell: /usr/bin/somecommand || /bin/true 或者使用ignore_errors來(lái)忽略錯(cuò)誤信息 tasks: - name: run this command and ignore the result shell: /usr/bin/somecommand ignore_errors: True
用于當(dāng)關(guān)注的資源發(fā)生變化時(shí)采取一定的操作。
“notify”這個(gè)action可用于在每個(gè)play的最后被觸發(fā)這樣可以避免多次有改變發(fā)生時(shí)每次都執(zhí)行指定的操作取而代之僅在所有的變化發(fā)生完成后一次性地執(zhí)行指定操作。
在notify中列出的操作稱為handler也即notify中調(diào)用 handler中定義的操作。
注意:在 notify 中定義內(nèi)容一定要和tasks中定義的 - name 內(nèi)容一樣,這樣才能達(dá)到觸發(fā)的效果,否則會(huì)不生效。
- name: template configuration file template: src=template.j2 dest=/etc/foo.conf notify: - restart memcached - restart apache handler是task列表這些task與前述的task并沒(méi)有本質(zhì)上的不同。 handlers: - name: restart memcached service: name=memcached state=restarted - name: restart apache service: name=apache state=restarted
tags用于讓用戶選擇運(yùn)行或略過(guò)playbook中的部分代碼。ansible具有冪等性因此會(huì)自動(dòng)跳過(guò)沒(méi)有變化的部分即便如此有些代碼為測(cè)試其確實(shí)沒(méi)有發(fā)生變化的時(shí)間依然會(huì)非常地長(zhǎng)。
此時(shí)如果確信其沒(méi)有變化就可以通過(guò)tags跳過(guò)此些代碼片斷。
下面再給出一個(gè)安裝httpd web服務(wù)的示例:
# cat /etc/ansible/playbook/install_web.yml - hosts: webservers remote_user: root gather_fasks: False vars: packages: httpd tasks: - name: Install httpd yum: name={{ packages }} state=present - name: Cofiguration httpd copy: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf tags: httpd_conf notify: - restart httpd - name: Start httpd service: name=httpd state=started enabled=no tags: start - name:Add centos user user: name={{ item }} state=absent tags: adduser with_items: - centos - admin handlers: - name: restart httpd service: name=httpd state=restart
注:上面的代碼沒(méi)有考慮ubuntu平臺(tái),僅僅考慮centos/redhat平臺(tái)。
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La clé de l'installation de deux systèmes dans Linux et Windows est le partitionnement et les paramètres de démarrage. 1. La préparation comprend la sauvegarde des données et la compression des partitions existantes pour faire de la place; 2. Utilisez Ventoy ou Rufus pour créer un disque USB Linux Boot, recommandez Ubuntu; 3. Sélectionnez "coexister avec d'autres systèmes" ou partition manuellement pendant l'installation (/ au moins 20 Go, / l'espace restant à domicile, échange facultatif); 4. Vérifiez l'installation de pilotes tiers pour éviter les problèmes matériels; 5. Si vous n'entrez pas dans le menu de démarrage GRUB après l'installation, vous pouvez utiliser la réparation de démarrage pour réparer le démarrage ou ajuster la séquence de démarrage du BIOS. Tant que les étapes sont claires et que l'opération est effectuée correctement, l'ensemble du processus n'est pas compliqué.

La clé pour activer le référentiel EPEL est de sélectionner la méthode d'installation correcte en fonction de la version système. Tout d'abord, confirmez le type et la version du système et utilisez la commande Cat / etc / OS-Release pour obtenir des informations; Deuxièmement, activez l'EPEL via DNFinstallepel-libération sur CentOS / Rockylinux, et les commandes de la version 8 et 9 sont les mêmes; Troisièmement, vous devez télécharger manuellement la version correspondante du fichier .repo et l'installer sur RHEL; Quatrièmement, vous pouvez réimplémenter la clé GPG lorsque vous rencontrez des problèmes. Notez que l'ancienne version peut ne pas être prise en charge et vous pouvez également envisager d'activer EPEL-NEXT pour obtenir le package de test. Après avoir terminé les étapes ci-dessus, utilisez DNFRepolist pour vérifier que le référentiel EPEL est ajouté avec succès.

Les utilisateurs des débutants doivent d'abord clarifier leurs exigences d'utilisation lors du choix d'une distribution Linux. 1. Choisissez Ubuntu ou Linuxmint pour une utilisation quotidienne; La programmation et le développement conviennent à Manjaro ou Fedora; Utilisez Lubuntu et d'autres systèmes légers pour les anciens appareils; Recommander CentosStream ou Debian pour apprendre les principes sous-jacents. 2. La stabilité est préférée pour Ubuntults ou Debian; Vous pouvez choisir Arch ou Manjaro pour poursuivre de nouvelles fonctionnalités. 3. En termes de soutien communautaire, Ubuntu et Linuxmint sont riches en ressources et les documents d'arc sont orientés techniquement. 4. En termes de difficulté d'installation, Ubuntu et Linuxmint sont relativement simples et Arch convient à ceux qui ont des besoins de base. Il est recommandé de l'essayer d'abord, puis de décider.

Les étapes pour ajouter un nouveau disque dur au système Linux sont les suivantes: 1. Confirmez que le disque dur est reconnu et utilisez LSBLK ou FDISK-L pour vérifier; 2. Utilisez des partitions FDISK ou séparées, telles que FDISK / DEV / SDB et créer et enregistrer; 3. Format la partition sur un système de fichiers, tel que mkfs.ext4 / dev / sdb1; 4. Utilisez la commande Mount pour des supports temporaires, tels que le mont / dev / sdb1 / mnt / data; 5. Modifier / etc / fstab pour atteindre un montage automatique sur l'ordinateur et tester d'abord le support pour assurer l'exactitude. Assurez-vous de confirmer la sécurité des données avant le fonctionnement pour éviter les problèmes de connexion matérielle.

Vous avez des problèmes de téléchargement de fichiers dans Google Chrome? Cela peut être ennuyeux, non? Que vous joigniez des documents aux e-mails, partagez des images sur les réseaux sociaux ou soumettez des fichiers importants pour le travail ou l'école, un processus de téléchargement de fichiers en douceur est crucial. Ainsi, il peut être frustrant que vos téléchargements de fichiers continuent d'échouer dans Chrome sur PC Windows. Si vous n'êtes pas prêt à abandonner votre navigateur préféré, voici quelques conseils pour les correctifs qui ne peuvent pas télécharger de fichiers sur Windows Google Chrome 1. Commencez par une réparation universelle avant de découvrir les conseils de dépannage avancés, il est préférable d'essayer certaines des solutions de base mentionnées ci-dessous. Dépannage des problèmes de connexion Internet: connexion Internet

Les journaux dans les systèmes Linux sont généralement stockés dans le répertoire / var / journal, qui contient une variété de fichiers journaux clés, tels que Syslog ou Messages (enregistrements des journaux système), Auth.log (enregistrements d'événements d'authentification), Kern.log (Messages d'enregistrement du noyau), DPKG.Log ou Yum.log (Record Package Operations), boot.log (enregistrer les informations de démarrage); Le contenu du journal peut être visualisé via des commandes CAT, Tail-F ou JournalCTL; Les journaux d'applications sont souvent situés dans des sous-répertoires sous / var / log, tels que le répertoire Apache2 ou HTTPD d'Apache, les fichiers journaux MySQL, etc.; En même temps, il est nécessaire de noter que les autorisations de journal nécessitent généralement S

Sudo signifie "SubstituteUserdo" ou "SuperUserDo", permettant aux utilisateurs d'exécuter des commandes avec des autorisations d'autres utilisateurs (généralement root). Ses utilisations de base incluent: 1. Effectuer des opérations au niveau du système telles que l'installation de logiciels ou l'édition de fichiers système; 2. Accès aux répertoires ou journaux protégés; 3. Gérer des services tels que le redémarrage de Nginx; 4. Modifier les paramètres globaux tels que / etc / h?tes. Lorsque vous l'utilisez, le système vérifiera la configuration / etc / sudoers et vérifiera le mot de passe utilisateur, fournira des autorisations temporaires au lieu de se connecter en continu en tant que racine, garantissant la sécurité. Les meilleures pratiques incluent: uniquement lorsque cela est nécessaire, évitez d'exécuter aveuglément des commandes de réseau, éditer des fichiers sudoers avec Visudo et considérer les opérations continues.

Pour gérer les groupes d'utilisateurs Linux, vous devez ma?triser le fonctionnement de la visualisation, de la création, de la suppression, de la modification et du réglage des attributs de l'utilisateur. Pour afficher les informations du groupe d'utilisateurs, vous pouvez utiliser CAT / etc / groupe ou GetEntGroup, utilisez des groupes [nom d'utilisateur] ou ID [nom d'utilisateur] pour afficher le groupe auquel l'utilisateur appartient; Utilisez GroupADD pour créer un groupe et utilisez GroupDel pour spécifier le GID; Utilisez GroupDel pour supprimer des groupes vides; Utilisez UserMod-AG pour ajouter des utilisateurs au groupe et utilisez UserMod-G pour modifier le groupe principal; Utilisez UserMod-G pour supprimer les utilisateurs du groupe en modifiant / etc / groupe ou en utilisant la commande VIGR; Utilisez GroupMod-N (Nom de modification) ou GroupMod-G (modifier GID) pour modifier les propriétés du groupe et n'oubliez pas de mettre à jour les autorisations des fichiers pertinents.
