Skip to content

Commit

Permalink
Merge pull request #2154 from ansible/devel
Browse files Browse the repository at this point in the history
Release PR - June 25th 2024
  • Loading branch information
IPvSean authored Jun 28, 2024
2 parents 280e763 + 47ec1ce commit cb562bc
Show file tree
Hide file tree
Showing 373 changed files with 130,858 additions and 51 deletions.
5 changes: 0 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ The Red Hat Ansible Automation Workshops project is intended for effectively dem
| **[Ansible Red Hat Enterprise Linux Workshop](./exercises/ansible_rhel)** <br> focused on automating Linux platforms like Red Hat Enterprise Linux | [PDF](./decks/ansible_rhel.pdf) | [Google Source](https://docs.google.com/presentation/d/1O2Gj5r_fhjM5Pi5FizrZRInmZ37IlpeKPTP6jSZxEKs/edit?usp=sharing) | [Exercises](./exercises/ansible_rhel) | `workshop_type: rhel` |
| **[Ansible Config as Code Workshop](./exercises/ansible_config_as_code)** <br> focused on config as code for AAP | [PDF](./decks/config_as_code.pdf) | [Google Source](https://docs.google.com/presentation/d/1F6W8p0MG878AC3Q1CsNZHfhX5VkEyGKbwDHACQtoLPI) | [Exercises](./exercises/ansible_config_as_code) | `workshop_type: configascode` |
| **[Ansible Network Automation Workshop](./exercises/ansible_network)** <br> focused on router and switch platforms like Arista, Cisco, Juniper | [PDF](./decks/ansible_network.pdf) | [Google Source](https://docs.google.com/presentation/d/1PIT-kGAGMVEEK8PsuZCoyzFC5CIzLBwdnftnUsdUNWQ/edit?usp=sharing) | [Exercises](./exercises/ansible_network) | `workshop_type: network` |
| **[Ansible Security Automation](./exercises/ansible_security)** <br> focused on automation of security tools like Check Point Firewall, IBM QRadar and the IDS Snort | [PDF](./decks/ansible_security.pdf) | [Google Source](https://docs.google.com/presentation/d/19gVCBz1BmxC15tDDj-FUlUd_jUUUKay81E8F24cyUjk/edit?usp=sharing) | [Exercises](./exercises/ansible_security) | `workshop_type: security` |
| **[Ansible Windows Automation Workshop](./exercises/ansible_windows)** <br> focused on automation of Microsoft Windows | [PDF](./decks/ansible_windows.pdf) | [Google Source](https://docs.google.com/presentation/d/1RO5CQiCoqLDES1NvTI_1fQrR-oWM1NuW-uB0JRvtJzE) | [Exercises](./exercises/ansible_windows) | `workshop_type: windows` |
| **[Smart Management Automation Workshop](./exercises/ansible_smart_mgmt)** <br> focused on automation of security and lifecycle management with Red Hat Satellite Server | [PDF](./decks/ansible_smart_mgmt.pdf) | [Google Source](https://docs.google.com/presentation/d/135lid9AeSioN4bJexBbv9q0fkJwDibpUQg8aeYjxzTY) | [Exercises](./exercises/ansible_smart_mgmt) | `workshop_type: smart_mgmt`
| **[RHEL In-place Upgrade Automation Workshop](./exercises/ansible_ripu)** <br> focused on automation of RHEL in-place upgrades at enterprise scale | [PDF](./decks/ansible_ripu.pdf) | [Google Source](https://docs.google.com/presentation/d/1U6i006Th7MQNuL1_0a0KhOSY4GfF1wFsINusDvJvXvo) | [Exercises](./exercises/ansible_ripu) | `workshop_type: ripu`
Expand Down Expand Up @@ -78,9 +77,5 @@ The Red Hat Ansible Automation Workshops project is intended for effectively dem
- ![french](https://github.com/ansible/workshops/raw/devel/images/fr.png) [Automatiser votre réseau avec Red Hat](https://www.redhat.com/rhdc/managed-files/ma-network-automation-technical-e-book-f28378-202104-a4-fr.pdf)
- ![italian](https://github.com/ansible/workshops/raw/devel/images/it.png) [Automatizzare la rete con Red Hat](https://www.redhat.com/rhdc/managed-files/ma-network-automation-technical-e-book-f28378-202104-a4-it.pdf)

### E-Books for Ansible Security Automation

- [Simplify your security operations center](https://www.redhat.com/en/resources/security-automation-ebook?extIdCarryOver=true&sc_cid=7013a000002gyQ2AAI)

---
![Red Hat Ansible Automation](https://github.com/ansible/workshops/raw/devel/images/rh-ansible-automation-platform.png)
9 changes: 3 additions & 6 deletions _layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
gtag('js', new Date());

gtag('config', 'G-LJWQBHM62Z');
</script>
</script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">

Expand Down Expand Up @@ -50,15 +50,12 @@
<a class="header-link" href="{{ '/exercises/ansible_network/' | relative_url }}">
Network
</a>
<a class="header-link" href="{{ '/exercises/ansible_security/' | relative_url }}">
Security
</a>
<a class="header-link" href="{{ '/exercises/ansible_windows/' | relative_url }}">
Windows
</a>
<a class="header-link" href="{{ '/exercises/ansible_config_as_code/' | relative_url }}">
Config as Code
</a>
</a>
<a class="header-link" href="https://github.com/ansible/workshops/issues/new/choose">
Open an Issue
</a>
Expand All @@ -79,7 +76,7 @@
alt="Red Hat"
/>
</a>
<p class="footer-copyright">Copyright © 2022 Red Hat, Inc.</p>
<p class="footer-copyright">Copyright © 2024 Red Hat, Inc.</p>
<div class="footer-linkContainer">
<a href="https://www.redhat.com/en/about/privacy-policy" class="footer-link">Privacy statement</a>
<span class="footer-linkSpacer">|</span>
Expand Down
2 changes: 1 addition & 1 deletion exercises/ansible_rhel/1.4-variables/facts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
hosts: all
tasks:
- name: Prints Ansible facts
debug:
ansible.builtin.debug:
msg: The default IPv4 address of {{ ansible_fqdn }} is {{ ansible_default_ipv4.address }}
17 changes: 17 additions & 0 deletions exercises/ansible_rhel/1.5-handlers/README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ Ajoutons à notre playbook system_setup.yml la capacité d'installer le Serveur

> REMARQUE : Les exemples précédents avaient des hôtes définis sur node1 mais maintenant il est défini sur all. Cela signifie que lorsque vous exécutez ce playbook Ansible mis à jour, vous remarquerez des mises à jour pour les nouveaux systèmes automatisés, l'utilisateur Roger créé sur tous les nouveaux systèmes et le paquet du serveur web Apache httpd installé sur tous les hôtes du groupe web.
<!-- {% raw %} -->

```yaml
---
- name: Configuration Système de Base
Expand Down Expand Up @@ -64,6 +66,8 @@ Ajoutons à notre playbook system_setup.yml la capacité d'installer le Serveur
when: inventory_hostname in groups['web']
```
<!-- {% raw %} -->
Dans cet exemple, `inventory_hostname in groups['web']` est la déclaration conditionnelle. `inventory_hostname` fait référence au nom de l'hôte actuel sur lequel Ansible travaille dans le playbook. La condition vérifie si cet hôte fait partie du groupe web défini dans votre fichier d'inventaire. Si c'est vrai, la tâche s'exécutera et installera Apache sur cet hôte.

### Étape 3 - Gestionnaires
Expand All @@ -72,6 +76,7 @@ Les gestionnaires sont utilisés pour les tâches qui ne doivent s'exécuter que

Disons que nous voulons nous assurer que le pare-feu est correctement configuré sur tous les serveurs web, puis recharger le service pare-feu pour appliquer les nouveaux paramètres. Nous définirons un gestionnaire qui recharge le service pare-feu et est notifié par une tâche qui assure que les règles de pare-feu souhaitées sont en place :

<!-- {% raw %} -->

```yaml
---
Expand Down Expand Up @@ -108,6 +113,8 @@ Disons que nous voulons nous assurer que le pare-feu est correctement configuré
```

<!-- {% raw %} -->

Le gestionnaire Recharger le Pare-feu est déclenché uniquement si la tâche "Autoriser le trafic HTTPS sur les serveurs web" effectue des modifications.

> REMARQUE : Remarquez comment le nom du gestionnaire est utilisé dans la section notify de la tâche de configuration "Recharger le Pare-feu". Cela garantit que le bon gestionnaire est exécuté car il peut y avoir plusieurs gestionnaires dans un playbook Ansible.
Expand Down Expand Up @@ -175,6 +182,8 @@ node3 : ok=8 changed=4 unreachable=0 failed=0 s
Les boucles dans Ansible vous permettent d'effectuer une tâche plusieurs fois avec différentes valeurs. Cette fonctionnalité est particulièrement utile pour des tâches comme la création de plusieurs comptes utilisateurs dans notre exemple donné.
Dans le playbook system_setup.yml original de l'exercice 1.4, nous avions une tâche pour créer un seul utilisateur :
<!-- {% raw %} -->
```yaml
- name: Créer un nouvel utilisateur
ansible.builtin.user:
Expand All @@ -183,9 +192,12 @@ Dans le playbook system_setup.yml original de l'exercice 1.4, nous avions une t
create_home: true
```
<!-- {% raw %} -->

Maintenant, modifions cette tâche pour créer plusieurs utilisateurs à l'aide d'une boucle :

<!-- {% raw %} -->

```yaml
- name: Créer un nouvel utilisateur
ansible.builtin.user:
Expand All @@ -198,11 +210,16 @@ Maintenant, modifions cette tâche pour créer plusieurs utilisateurs à l'aide
- carol
```
<!-- {% raw %} -->
<!-- {% raw %} -->
Qu'est-ce qui a changé ?
1. Directive de Boucle : Le mot-clé loop est utilisé pour itérer sur une liste d'éléments. Dans ce cas, la liste contient les noms des utilisateurs que nous souhaitons créer : alice, bob et carol.
2. Création d'Utilisateurs avec Boucle : Au lieu de créer un seul utilisateur, la tâche modifiée itère maintenant sur chaque élément de la liste de boucle. Le placeholder `{{ item }}` est dynamiquement remplacé par chaque nom d'utilisateur dans la liste, de sorte que le module ansible.builtin.user crée chaque utilisateur à son tour.
<!-- {% raw %} -->

Lorsque vous exécutez le playbook mis à jour, cette tâche est exécutée trois fois, une fois pour chaque utilisateur spécifié dans la boucle. C'est une manière efficace de gérer les tâches répétitives avec des données d'entrée variables.

Expand Down
6 changes: 4 additions & 2 deletions exercises/ansible_rhel/1.5-handlers/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,14 @@ Let's say we want to ensure the firewall is configured correctly on all web serv
ansible.builtin.dnf:
name: firewalld
state: present
when: inventory_hostname in groups['web']
- name: Ensure firewalld is running
ansible.builtin.service:
name: firewalld
state: started
enabled: true
when: inventory_hostname in groups['web']
- name: Allow HTTPS traffic on web servers
ansible.posix.firewalld:
Expand Down Expand Up @@ -144,14 +146,14 @@ ok: [node1]
ok: [node3]

TASK [Install firewalld] *******************************************************
changed: [ansible-1]
skipping: [ansible-1]
changed: [node2]
changed: [node1]
changed: [node3]

TASK [Ensure firewalld is running] *********************************************
skipping: [ansible-1]
changed: [node3]
changed: [ansible-1]
changed: [node2]
changed: [node1]

Expand Down
6 changes: 6 additions & 0 deletions exercises/ansible_rhel/1.6-templates/README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ Ansible utilise Jinja2, un langage de templatisation largement utilisé pour Pyt

### Étape 2 - Création de Votre Premier Modèle

<!-- {% raw %} -->
Les modèles se terminent par une extension `.j2` et mélangent du contenu statique avec des espaces réservés dynamiques entourés de `{{ }}`.
<!-- {% raw %} -->

Dans l'exemple suivant, créons un modèle pour le Message du Jour (MOTD) qui inclut des informations dynamiques sur l'hôte.

Expand All @@ -40,12 +42,16 @@ mkdir -p ~/lab_inventory/templates

Créez un fichier nommé `motd.j2` dans le répertoire des modèles avec le contenu suivant :

<!-- {% raw %} -->

```jinja
Bienvenue sur {{ ansible_hostname }}.
OS : {{ ansible_distribution }} {{ ansible_distribution_version }}
Architecture : {{ ansible_architecture }}
```

<!-- {% raw %} -->

Ce modèle affiche dynamiquement le nom d'hôte, la distribution de l'OS, la version et l'architecture de chaque hôte géré.

### Étape 3 - Déploiement du Modèle avec un Playbook
Expand Down
75 changes: 40 additions & 35 deletions exercises/ansible_rhel/README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,63 +4,68 @@
<br>![uk](../../images/uk.png) [English](README.md), ![japan](../../images/japan.png)[日本語](README.ja.md), ![brazil](../../images/brazil.png) [Portugues do Brasil](README.pt-br.md), ![france](../../images/fr.png) [Français](README.fr.md), ![Español](../../images/es.png) [Español](README.es.md).
<br>

Ansible est un moteur d'automatisation informatique simple mais puissant pour le déploiement d'applications, la gestion de la configuration et l'orchestration que vous pouvez apprendre rapidement.
**Ceci est une documentation pour Ansible Automation Platform 2**

Dans la première section de ce laboratoire, vous apprendrez à utiliser Ansible Engine pour l'automatisation, des bases aux concepts plus avancés.
Si vous êtes nouveau dans l'automatisation Ansible, cet atelier se compose de deux parties : 1) commencer par les bases de la compréhension des activités de ligne de commande fondamentales et 2) appliquer ce que vous avez appris pour implémenter le contrôleur d'automatisation Ansible dans vos cas d'utilisation en entreprise. Vous commencerez par écrire votre premier playbook Ansible, travailler sur des modèles Jinja et implémenter des rôles Ansible de haut niveau. Ensuite, vous commencerez avec le contrôleur d'automatisation, comprendrez la gestion des inventaires et des informations d'identification, les projets, les modèles de tâches, les enquêtes, les workflows et plus encore.

La deuxième section de ce laboratoire couvre Tower et donne à l'utilisateur un aperçu de ce qu'est Tower, de son fonctionnement et de ses avantages.
Après avoir terminé ce laboratoire, vous serez prêt à commencer à utiliser Ansible pour vos besoins d'automatisation.

Après avoir terminé ce laboratoire, vous êtes prêt à commencer à utiliser Ansible pour vos besoins d'automatisation.
## Table des matières

- [Atelier Ansible - Ansible pour Red Hat Enterprise Linux](#atelier-ansible---ansible-pour-red-hat-enterprise-linux)
- [Table des matières](#table-des-matières)
- [Présentations](#présentations)
- [Planification du temps](#planification-du-temps)
- [Diagramme du laboratoire](#diagramme-du-laboratoire)
- [Section 1 - Exercices en ligne de commande Ansible](#section-1---exercices-en-ligne-de-commande-ansible)
- [Section 2 - Exercices sur la plateforme d'automatisation Ansible](#section-2---exercices-sur-la-plateforme-dautomatisation-ansible)
- [Exercices supplémentaires](#exercices-supplémentaires)

## Présentations

Les exercices sont explicites et guident les participants à travers tout le laboratoire. Tous les concepts sont expliqués lors de leur introduction.
Les exercices sont auto-explicatifs et guident les participants tout au long du laboratoire. Tous les concepts sont expliqués lorsqu'ils sont introduits.

Une présentation facultative est disponible pour soutenir les ateliers et expliquer l'automatisation, les bases d'Ansible et les sujets des exercices plus en détail:
[Ansible RHEL Automation](../../decks/ansible_rhel.pdf)
Il existe une présentation optionnelle disponible pour soutenir les ateliers et expliquer l'automatisation, les bases d'Ansible et les sujets des exercices plus en détail : [Ansible RHEL Automation](../../decks/ansible_rhel.pdf)

Jetez également un œil à notre plate-forme des meilleures pratiques Ansible:
[Ansible Best Practices](../../decks/ansible_best_practices.pdf)
Consultez également notre présentation sur les meilleures pratiques Ansible : [Ansible Best Practices](../../decks/ansible_best_practices.pdf)

## Planification du temps

Le temps nécessaire pour réaliser les ateliers dépend fortement de plusieurs facteurs : le nombre de participants, leur familiarité avec Linux en général et la quantité de discussions entre les participants.

Le temps requis pour faire les ateliers dépend fortement de plusieurs facteurs: le nombre de participants, leur familiarité avec Linux en général et le nombre de discussions qui se font entre les deux.

Cela dit, les exercices eux-mêmes devraient prendre environ 4 à 5 heures. La première section est légèrement plus longue que la seconde. La présentation qui l'accompagne ajoute une heure de plus.
Cela dit, les exercices eux-mêmes devraient prendre environ 4-5 heures. La première section est légèrement plus longue que la deuxième. La présentation accompagnante ajoute une heure supplémentaire.

Si votre expérience est différente dans la planification de ces ateliers, veuillez nous en informer et créer un ticket.
## Diagramme du laboratoire

![diagramme du laboratoire ansible rhel](../../images/rhel_lab_diagram.png)

## Section 1 - Exercices sur le moteur Ansible
## Section 1 - Exercices en ligne de commande Ansible

- [Exercise 1.1 - Vérifiez les prérequis](1.1-setup/README.fr.md)
- [Exercise 1.2 - Running Ad-hoc Commands](1.2-adhoc/README.fr.md)
- [Exercise 1.3 - Writing Your First Playbook](1.3-playbook/README.fr.md)
- [Exercise 1.4 - Using Variables](1.4-variables/README.fr.md)
- [Exercise 1.5 - Conditionals, Handlers and Loops](1.5-handlers/README.fr.md)
- [Exercise 1.6 - Templates](1.6-templates/README.fr.md)
- [Exercise 1.7 - Roles](1.7-role/README.fr.md)
* [Exercice 1.1 - Vérifier les prérequis](1.1-setup/README.fr.md)
* [Exercice 1.2 - Les bases d'Ansible](1.2-thebasics/README.fr.md)
* [Exercice 1.3 - Écrire votre premier playbook](1.3-playbook/README.fr.md)
* [Exercice 1.4 - Utilisation des variables](1.4-variables/README.fr.md)
* [Exercice 1.5 - Conditionnels, gestionnaires etboucles](1.5-handlers/README.fr.md)
* [Exercice 1.6 - Modèles](1.6-templates/README.fr.md)
* [Exercice 1.7 - Rôles](1.7-role/README.fr.md)
* [Exercice 1.8 - Débogage et gestion des erreurs](1.8-troubleshoot/README.fr.md)

## Section 2 - Exercices sur Ansible Tower
## Section 2 - Exercices sur la plateforme d'automatisation Ansible

- [Exercise 2.1 - Introduction to Tower](2.1-intro/README.fr.md)
- [Exercise 2.2 - Inventories, credentials and ad hoc commands](2.2-cred/README.fr.md)
- [Exercise 2.3 - Projects & job templates](2.3-projects/README.fr.md)
- [Exercise 2.4 - Surveys](2.4-surveys/README.fr.md)
- [Exercise 2.5 - Role based access control](2.5-rbac/README.fr.md)
- [Exercise 2.6 - Workflows](2.6-workflows/README.fr.md)
- [Exercise 2.7 - Wrap up](2.7-wrap/README.fr.md)
* [Exercice 2.1 - Introduction au contrôleur d'automatisation Ansible](2.1-intro/README.fr.md)
* [Exercice 2.2 - Inventaires et informations d'identification dans le contrôleur d'automatisation Ansible](2.2-cred/README.fr.md)
* [Exercice 2.3 - Projets et modèles de tâches](2.3-projects/README.fr.md)
* [Exercice 2.4 - Enquêtes](2.4-surveys/README.fr.md)
* [Exercice 2.5 - Contrôle d'accès basé sur les rôles](2.5-rbac/README.fr.md)
* [Exercice 2.6 - Workflows](2.6-workflows/README.fr.md)
* [Exercice 2.7 - Conclusion](2.7-wrap/README.fr.md)

## Exercices supplémentaires

Il existe également une série d'exercices qui vont au-delà de notre contenu normal de l'atelier. Veuillez consulter nos exercices supplémentaires si vous souhaitez en savoir plus sur le contenu.

- [Exercices supplémentaires](supplemental)
Il existe également une série d'exercices qui vont au-delà du contenu normal de notre atelier. Veuillez consulter nos exercices supplémentaires si vous souhaitez plus de contenu pour apprendre.

## Information additionnelle

- [Prise en main d'Ansible](http://docs.ansible.com/ansible/latest/intro_getting_started.html)
* [Exercices supplémentaires](supplemental)

---
![Red Hat Ansible Automation](../../images/rh-ansible-automation-platform.png)

2 changes: 1 addition & 1 deletion exercises/ansible_rhel/ansible-files/files/ftpserver.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
become: true
tasks:
- name: Install FTP server when host in ftpserver group
yum:
ansible.builtin.yum:
name: vsftpd
state: latest
when: inventory_hostname in groups["ftpserver"]
Loading

0 comments on commit cb562bc

Please sign in to comment.