Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 50ad0d8619 | |||
| 5512391dc0 | |||
| 35ce01a585 | |||
| ee15d0139c | |||
| 173344760e | |||
| a7ae76750c | |||
| 1a47f063d6 | |||
| b8f0eb56ad | |||
| 047f78c910 | |||
| 2b73e89789 | |||
| e2a5247b5d | |||
| 111c2fd47d | |||
| 639840098b | |||
| e4332b511e | |||
| 2e84b7c592 |
@@ -32,18 +32,10 @@ Assurez-vous que le paquet *vim-enhanced* soit bien installé sur la machine *ce
|
|||||||
|
|
||||||
Assurez-vous que le paquet *nano* ne soit pas présent.
|
Assurez-vous que le paquet *nano* ne soit pas présent.
|
||||||
|
|
||||||
### Gérer les utilisateurs et les groupes
|
|
||||||
|
|
||||||
Sur la machine *centos*:
|
|
||||||
|
|
||||||
Créez un groupe sib
|
|
||||||
|
|
||||||
Créez un utilisateur *formation1* membre de ce groupe ,avec le mot de passe 123Soleil2021!
|
|
||||||
|
|
||||||
|
|
||||||
### s'assurer de la présence d'un répertoire
|
### s'assurer de la présence d'un répertoire
|
||||||
|
|
||||||
Créez si besoin le répertoire */srv/sib* appartenant à *formation1* et au groupe *sib*
|
Créez si besoin le répertoire */srv/sib* appartenant à *formation*.
|
||||||
|
|
||||||
### Modifier des fichiers
|
### Modifier des fichiers
|
||||||
|
|
||||||
@@ -61,6 +53,6 @@ Ce fichier doit être en lecture-écriture pour tout le monde.
|
|||||||
|
|
||||||
### Gestion des services
|
### Gestion des services
|
||||||
|
|
||||||
Relancez inconditionnellement le service ssh
|
Relancez inconditionnellement le service crond
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
66
Readme.md
66
Readme.md
@@ -1,27 +1,59 @@
|
|||||||
## Commandes Adhoc
|
## Atelier d'introduction
|
||||||
|
|
||||||
*Tâche*: utiliser les commandes Adhoc
|
ansible cibles -m command -a uptime -o
|
||||||
|
|
||||||
*Condition*: très souvent ;)
|
ansible cibles -m copy -a 'src=/etc/profile.d/z_my_profile.sh dest=/etc/profile.d mode=0644 owner=root group=root'
|
||||||
|
|
||||||
*Norme*: éditeur de texte, modules, commande ansible
|
ansible centos -m yum -a 'name=vim-enhanced state=present'
|
||||||
|
|
||||||
_Prérequis_:
|
ansible centos -m yum -a 'name=nano state=absent'
|
||||||
|
|
||||||
* créer une paire de clé publique / clé privée sur le pilote
|
|
||||||
Remarque; cette étape peut être réalisée avec ansible (openssh_keypair)
|
|
||||||
|
|
||||||
*Objectif*: Mettre au point 3 commandes adhoc permettant sur les cibles, de:
|
ansible cibles -m file -a 'path=/srv/sib owner=formation state=directory'
|
||||||
|
|
||||||
- créer un compte ansible, mot de passe 123Soleil!, répertoire personnel /home/ansible
|
|
||||||
- déployer la clé publique ssh
|
|
||||||
- configurer sudo ( créer un fichier /etc/sudoers.d/ansible contenant 'ansible ALL=(ALL) NOPASSWD: ALL'
|
|
||||||
|
|
||||||
*Validation*: À l'issue des 3 commandes on peut se connecter sans mot de passe sur une cible, et exécuter la commande sudo -l sans erreur et toujours sans mot de passe.
|
ansible cibles -m lineinfile -a 'path=/etc/profile.d/editor.sh create=true line="export EDITOR=vim" state=present'
|
||||||
|
|
||||||
_PS: en production, on évitera d'utiliser une clé ssh non protégée par une passphrase_
|
ansible cibles -m get_url -a 'url=https://cours.opendoor.fr/Fichiers/vimrc dest=/etc/vimrc mode=0644'
|
||||||
|
|
||||||
|
|
||||||
|
ansible centos -m service -a 'name=crond state=restarted'
|
||||||
|
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible localhost -m community.crypto.openssh_keypair -a 'path=/home/formation/.ssh/id_rsa owner=formation group=formation' -u formation
|
||||||
|
```
|
||||||
|
⚠️ si vous générez une clé dans un répertoire non standard, pensez à utiliser l'option -i lors des prochaines commandes ssh, et le paramètre de configuration "private_key_file" pour indiquer à ansible la clé qu'il doit utiliser pour les connexions
|
||||||
|
|
||||||
|
#l'inversion des quotes permet l'utilisation du ! dans le mot de passe
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible cibles -m ansible.builtin.user -a 'user=ansible password={{ "123Soleil!"| password_hash( "sha512", 65534 | random(seed=inventory_hostname) | string) }} create_home=yes home=/home/ansible'
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible cibles -m ansible.builtin.lineinfile -a 'path=/etc/sudoers.d/ansible state=present create=yes line="ansible ALL=(ALL) NOPASSWD: ALL" validate="/usr/sbin/visudo -cf %s"'
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible cibles -m ansible.builtin.copy -a 'dest=/etc/sudoers.d/ansible content="ansible ALL=(ALL) NOPASSWD: ALL" validate="/usr/sbin/visudo -cf %s"'
|
||||||
|
```
|
||||||
|
```bash
|
||||||
|
ansible cibles -o -m community.general.sudoers -a 'name="ansible" user=ansible commands=ALL nopassword=true'
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible cibles -u formation -k -m ansible.posix.authorized_key -a 'key={{ lookup( "file", "~/.ssh/id_rsa.pub") }} user=ansible'
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ansible localhost -m community.general.ini_file -a 'option=remote_user value=ansible section=defaults path=/etc/ansible/ansible.cfg'
|
||||||
|
ansible localhost -m community.general.ini_file -a 'option=ask_pass value=False section=defaults path=/etc/ansible/ansible.cfg'
|
||||||
|
ansible localhost -m community.general.ini_file -a 'option=become_ask_pass value=False section=privilege_escalation path=/etc/ansible/ansible.cfg'
|
||||||
|
ansible localhost -m community.general.ini_file -a 'option=private_key_file value=CHANGEME section=defaults path=/etc/ansible/ansible.cfg'
|
||||||
|
```
|
||||||
|
|
||||||
|
l'ajout de l'option _private_key_file_ est nécessaire si la paire de clé générée pendant l'atelier n'est pas "standard" (!= ~formation/.ssh/id_rsa )
|
||||||
|
|
||||||
Une fois l'atelier validé, vous pourrez **reconfigurer** ansible:
|
|
||||||
* pour utiliser le compte ansible
|
|
||||||
* pour ne pas demander le mot de passe de connexion
|
|
||||||
* pour ne pas demander le mot de passe sudo
|
|
||||||
10
solution.txt
10
solution.txt
@@ -1,10 +0,0 @@
|
|||||||
ansible localhost -m openssh_keypair -a "path=/home/formation/.ssh/id_rsa owner=formation group=formation" -u formation
|
|
||||||
|
|
||||||
ansible cibles -u formation -k -m user -a "user=ansible password={{ '123Soleil2020%'| password_hash( 'sha512', 65534 | random( seed=inventory_hostname ) | string ) }} create_home=yes home=/home/ansible"
|
|
||||||
|
|
||||||
ansible cibles -u formation -k -m lineinfile -a "path=/etc/sudoers.d/ansible state=present create=yes line='ansible ALL=(ALL) NOPASSWD: ALL' validate='/usr/sbin/visudo -cf %s'"
|
|
||||||
|
|
||||||
ansible cibles -u formation -k -m copy -a "dest=/etc/sudoers.d/ansible content='ansible ALL=(ALL) NOPASSWD: ALL' validate='/usr/sbin/visudo -cf %s'"
|
|
||||||
|
|
||||||
ansible cibles -u formation -k -m authorized_key -a "key={{ lookup( 'file', '~/.ssh/id_rsa.pub') }} user=ansible"
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user