Lisez ceci dans d’autres langues:
English, 日本語, Français
Le but de cet exercice est de comprendre et utiliser du contenu déjà existant sous la forme de rôles et de collections en provenance du Automation Hub et de Ansible Galaxy.
Les Rôles Sytème Linux créent une interface utilisateur cohérente pour fournir les paramètres à un sous-système qui n’est pas dépendant d’une implémentation particulière. Par exemple, assigner une adresse IP a une interface réseau devrait être un concept générique séparé des implementations particulières telles que les scripts init pour le réseau, NetworkManager, ou bien systemd-networkd.
Cet exercice utilise deux Rôles Sytème Linux, les rôles timesync
et firewall
.
Dans l’interface utilisateur du Contrôleur Ansible Automation, naviguez vers Projets et cliquez sur Ansible official demo project:
Notez le référentiel Github qui a été pré-chargé dans l’environnement de votre Contrôleur Ansible Automation:
https://github.com/ansible/product-demos
Ouvrez le référentiel fourni en lien ci-dessus dans votre navigateur. Cliquez sur linux/hardening.yml
L’URL complète est: https://github.com/ansible/product-demos/blob/main/linux/hardening.yml
Notez ces deux tâches:
- name: Configure Firewall
when: harden_firewall | bool
ansible.builtin.include_role:
name: linux-system-roles.firewall
- name: Configure Timesync
when: harden_time | bool
ansible.builtin.include_role:
name: redhat.rhel_system_roles.timesync
Il y a deux tâches qui incluent un rôle et un rôle de collection respectivement. Si vous avez du mal à distinguer un rôle en provenance directe de Ansible Galaxy, par rapport à un rôle en provenance d’une collection, cette nomenclature devrait vous aider:
Ansible Collection | namespace.collection.role |
Ansible Role | namespace.role
|
Les Playbooks Ansible sont simples. Ils utilisent juste les Playbooks Ansible pré-construits fournis par Ansible Galaxy et le Automation Hub. Ils ont été préinstallés pour l’atelier.
vars:
firewall:
service: 'tftp'
state: 'disabled'
vars:
timesync_ntp_servers:
- hostname: foo.example.com
iburst: yes
- hostname: bar.example.com
iburst: yes
- hostname: baz.example.com
iburst: yes
Dans l’UI du Contrôleur Ansible Automation, naviguez vers Modèles.
Cliquez sur la Fusée pour lancer le Modèle de Job SERVER / Hardening:
Un Questionnaire va apparaître avant le démarrage du Job. Renseignez le Questionnaire:
firewall
.timesync
.Cliquez sur le bouton Suivant
Vérifiez les Variables Supplémentaires pour comprendre ce que le Questionnaire a changé. Cliquez sur le bouton Lancer:
Observez le Job se lancer!
Depuis le noeud de contrôle Ansible, connectez vous en SSH au noeud que vous avez configuré:
$ ssh node1
Pour Red Hat Enterprise Linux 8 le rôle système timesync utilise chronyd. Vérifiez qu’il est installé, activé et démarré avec la commande systemctl status
:
$ sudo systemctl status chronyd.service
Voici le résultat complet:
[student@ansible ~]$ sudo systemctl status chronyd.service
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 14:37:14 UTC; 13h ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Main PID: 934 (chronyd)
Tasks: 1 (limit: 23902)
Memory: 1.8M
CGroup: /system.slice/chronyd.service
└─934 /usr/sbin/chronyd
Apr 21 14:37:14 localhost.localdomain systemd[1]: Starting NTP client/server...
Apr 21 14:37:14 localhost.localdomain chronyd[934]: chronyd version 3.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 +DEBUG)
Apr 21 14:37:14 localhost.localdomain chronyd[934]: Using right/UTC timezone to obtain leap second data
Apr 21 14:37:14 localhost.localdomain systemd[1]: Started NTP client/server.
Apr 21 14:38:12 ip-172-16-47-87.us-east-2.compute.internal chronyd[934]: Selected source 129.250.35.250
Apr 21 14:38:12 ip-172-16-47-87.us-east-2.compute.internal chronyd[934]: System clock TAI offset set to 37 seconds
Voci d’autres commandes qui peuvent être utilisées pour vérifier que le temps fonctionne correctement:
# chronyc tracking
# chronyc sources
# chronyc sourcestats
# systemctl status chronyd
# chronyc activity
# timedatectl
Par exemple:
$ timedatectl
Local time: Wed 2020-04-22 03:52:15 UTC
Universal time: Wed 2020-04-22 03:52:15 UTC
RTC time: Wed 2020-04-22 03:52:15
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
Navigation
Exercice précédent