bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


ansible

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
ansible [2022/07/03 21:54]
clara_cabrera_meseguer
ansible [2024/05/30 08:56] (actual)
enric_mieza_sanchez [Vagrant amb Ansible]
Línia 1: Línia 1:
  ===== Ansible: eina d'orquestració  =====  ===== Ansible: eina d'orquestració  =====
  
-Sóc Clara Cabrera i faré documentació d'Ansible. +**Ansible** és un sistema d'orquestració **lliure**, escrit en ''Python'', que ens permet automatitzar la configuració d’una màquina d’una forma senzilla.
- +
- +
-Ansible és un sistema d'orquestració lliure, escrit en Python, que ens permet automatitzar la configuració d’una màquina d’una forma senzilla.+
  
 Ansible automatitza la gestió de sistemes remots i controla el seu estat desitjat.  Ansible automatitza la gestió de sistemes remots i controla el seu estat desitjat. 
 +{{:arquitectura_ansible.jpg?400|}}
  
 {{:red-hat-ansible-vector-logo.png?400|}} {{:red-hat-ansible-vector-logo.png?400|}}
Línia 14: Línia 11:
  
  
-{{tag> #FPInfor #Ceti #CetiMp03 #Ciber #CiberMp03 #Smx #SmxMp04 ansible vagrant DevOps}}+{{tag> #FPInfor #Ceti #CetiMp03 #Ciber #CiberMp03 #Smx #SmxMp04 #Asix #AsixMp06 ansible vagrant DevOps}}
  
 \\ \\
Línia 26: Línia 23:
   * No té agents.   * No té agents.
    
-Un entorn ansible conté els següents components principals:+Un entorn ansible conté els següents **components principals**:
  
   * **Node de control**: un sistema en el que s'instal·la Ansible. És el que controla tota l’execució del Playbook. És qui realitza la connexió per SSH, executa els mòduls en les màquines i realitza la instal·lació.    * **Node de control**: un sistema en el que s'instal·la Ansible. És el que controla tota l’execució del Playbook. És qui realitza la connexió per SSH, executa els mòduls en les màquines i realitza la instal·lació. 
Línia 73: Línia 70:
  
 També es poden utilitzar variables. Es pot consultar la [[https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html|llista de variables]]. També es poden utilitzar variables. Es pot consultar la [[https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html|llista de variables]].
- 
 \\ \\
 +
 ===  Modificadors del comando Ansible  === ===  Modificadors del comando Ansible  ===
  
-El comando Ansible té diversos arguments (modificadors) que li podem posar. Es pot consultar la [[https://docs.ansible.com/ansible/latest/cli/ansible.html|llista de modificadors]] per Ansible.+El comando ''Ansible'' té diversos **arguments** (modificadors) que li podem posar. Es pot consultar la [[https://docs.ansible.com/ansible/latest/cli/ansible.html|llista de modificadors]] per Ansible.
  
-L’estructura és:+**L’estructura** és:
  
 <code> $ansible <nomservidor> <argument> <valorargument> </code> <code> $ansible <nomservidor> <argument> <valorargument> </code>
 <code>$ansible ansible1 --> el comando s’executaria en el servidor ansible1.  <code>$ansible ansible1 --> el comando s’executaria en el servidor ansible1. 
 $ansible all --> per executar el comando en tots els servidors del fitxer "hosts" </code> $ansible all --> per executar el comando en tots els servidors del fitxer "hosts" </code>
- 
  
 Aquí us deixo una llista d’alguns **arguments** per Ansible. Aquí us deixo una llista d’alguns **arguments** per Ansible.
Línia 97: Línia 93:
       <code> $ ansible ansible1 -m shell -a "echo $HOME & date"</code>       <code> $ ansible ansible1 -m shell -a "echo $HOME & date"</code>
     * Per comprovar la connexió amb el servidor, utilitzar el mòdul PING:     * Per comprovar la connexió amb el servidor, utilitzar el mòdul PING:
-      <code> $ ansible ansible1 –m PING </code>+      <code> $ ansible ansible1 –m ping</code>
     * Per comprovar el nom del host dels servidors:      * Per comprovar el nom del host dels servidors: 
       <code> $ ansible ansible1 -a hostname </code>       <code> $ ansible ansible1 -a hostname </code>
Línia 103: Línia 99:
       <code> $ ansible ansible1 -a “free -m” --> es posa entre cometes perquè porta més d’un argument. </code>       <code> $ ansible ansible1 -a “free -m” --> es posa entre cometes perquè porta més d’un argument. </code>
  
-Alguns dels mòduls per utilitzar són:+Alguns dels **mòduls** per utilitzar són:
  
   * **apt**: per la gestió de paquets ''.deb'' des de la línia de comandos.   * **apt**: per la gestió de paquets ''.deb'' des de la línia de comandos.
Línia 128: Línia 124:
  
 \\ \\
 +
 +----
 +
 ==== Instal·lació d’Ansible  ==== ==== Instal·lació d’Ansible  ====
  
Línia 177: Línia 176:
 <code>$ ansible-playbook playbook1.yaml </code> <code>$ ansible-playbook playbook1.yaml </code>
  
 +<WRAP center round info 100%>
 Dintre dels //**Playbooks**// es poden **definir**: Dintre dels //**Playbooks**// es poden **definir**:
  
Línia 184: Línia 184:
   * **Pre_tasks**: tasques que s’executen abans que la resta.   * **Pre_tasks**: tasques que s’executen abans que la resta.
   * **Template**: aquest mòdul és semblant al COPY dels comandos AD-HOC, però el ''template'' va a buscar l'arxiu que se li indica en la ruta ''template''.   * **Template**: aquest mòdul és semblant al COPY dels comandos AD-HOC, però el ''template'' va a buscar l'arxiu que se li indica en la ruta ''template''.
-<code> - name: template file to remote host +      <code> - name: template file to remote host 
-  template: +       template: 
-   src: archivo-config.j2 +         src: archivo-config.j2 
-   dest: /tmp/archivo-config+         dest: /tmp/archivo-config
 </code> </code>
 +</WRAP>
  
 \\ \\
-Et proposo fer les activitat següents:+
  
 <WRAP center round todo 100%> <WRAP center round todo 100%>
 +Et proposo realitzar les **activitats** següents:
  
 **Activitat 1**: Instal·la Ansible en el teu node controlador i crea un Playbook per realitzar tasques de manteniment i control dels teus servidors. **Activitat 1**: Instal·la Ansible en el teu node controlador i crea un Playbook per realitzar tasques de manteniment i control dels teus servidors.
Línia 202: Línia 204:
 </WRAP> </WRAP>
  
 +\\
  
 +----
  
  
 +==== Vagrant amb Ansible ====
 +
 +Molts projectes necessiten d'un **entorn d'integració** contínua en el qual es pot veure i detectar les fallades de manera ràpida, sense arribar a l'entorn de producció. Doncs, gràcies a la combinació de [[vagrant|Vagrant]] i **Ansible** pots desplegar de manera senzilla un entorn d'integració contínua.
 +{{:ansible-vagrant.png?400|}}
 +
 +Si et preguntes què pots fer amb ''Vagrant'' i ''Ansible'', aquí et deixo una pinzellada:
 +
 +<WRAP center round tip 100%>
 +  * Aixecar les màquines virtuals
 +  * Configurar la xarxa
 +  * Realitzar les actualitzacions de programari
 +  * Instal·lar els paquets del programari que s'utilitzarà
 +  * Copiar els fitxers de configuració de plantilles prèviament creades
 +  * Aixecar o parar els serveis que es determinin
 +  * Executar qualsevol tasca en cadascuna de les màquines virtuals
 +  * Deixar l'entorn completament operatiu
 +
 +</WRAP>
 +  
 +Per a **executar** ''Ansible'' contra ''Vagrant'', la configuració bàsica de ''Vagrantfile'' seria:
 +
 +<code>Vagrant.configure("2") do |config|
 +
 +  #
 +  # Executa Ansible des de Vagrant Host
 +  #
 +  config.vm.provision "ansible" do |ansible|
 +    ansible.playbook = "playbook1.yml"
 +  end
 +
 +end
 +
 +</code>
 +
 +Només que hi hagi 1 màquina amb el //provisioner// vagrant es crearà l'arxiu ''.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory''. Així sabrem les màquines que disposem i les podrem modificar totes alhora, per exemple, per fer un //ping// Ansible, des de la màquina amfitriona:
 +
 +  $ ansible all --inventory-file=.vagrant/provisioners/ansible/inventory/ -m ping
 +
 +Ull, perquè funcioni bé:
 +  * Hem de tenir Ansible instal·lat a la màquina amfitriona.
 +  * Probablement el primer cop ens demani confirmació dels certificats SSH (caldrà respondre "yes" a cada màquina).
 +  * Potser xoca amb la configuració d'altres SSH. Si aquest fos el cas, caldria eliminar les claus antigues de ''~/.ssh/known_hosts''
 +
 +
 +
 +<WRAP center round todo 100%>
 +
 +Et proposo fer la següent **activitat**:
 +
 +**Activitat 3**: Crear un entorn d’integració amb Vagrant i Ansible, per realitzar el manteniment i control dels teus servidors.
 +
 +</WRAP>
 +
 +\\
 + --- //[[[email protected]|CLARA CABRERA MESEGUER]] 2022/07/03 22:25//
ansible.1656885264.txt.gz · Darrera modificació: 2022/07/03 21:54 per clara_cabrera_meseguer