Compare commits

12 Commits

Author SHA1 Message Date
f5586981f1 fix typo 2023-09-19 13:52:57 +02:00
dbb2986a14 typo 2023-06-19 14:44:06 +02:00
aae4240ef5 rajout ligne de commande adhoc 2023-06-14 11:27:53 +02:00
9355940b55 typo 2023-06-06 15:05:11 +02:00
c70f9d523f typo 2022-11-15 16:24:12 +01:00
e0e3833aa6 typo 2022-11-15 15:55:01 +01:00
a86be86ac6 typo 2022-11-15 15:26:57 +01:00
013e55c843 simplification et rajout install git et vim 2022-11-15 15:20:14 +01:00
0a6c39884b solution blockinfile 2022-10-31 14:04:44 +01:00
d0d005e782 solution cron 2022-10-31 12:32:50 +01:00
c2d1a56fda typo 2022-10-31 12:18:28 +01:00
e46837c987 solutions 2022-10-27 14:29:15 +02:00

View File

@@ -1,36 +1,123 @@
# Commandes AdHoc
## Lignes de commande:
1. et 2. -o (affichage sur 1 ligne) -m ping (choix du module) all (cible - référencé dans l'inventaire) -u root (identité de connexion) -k (authentification ssh par mot de passe) -K (élévation de privilèges avec demande du mot de passe)
3. -u <=> remote_user ; -k <=> ask_pass ; -K <=> become_ask_pass
4. soit avec la valeur de l'option remote_user (si définie), soit avec le compte qui lance la commande
## Télécharger des fichiers sur la cible avec get_url
Récupérer dans /tmp le fichier : https://starship.rs/install.sh
```bash
ansible -o all -m get_url -a 'url=https://starship.rs/install.sh dest=/tmp mode=0700'
```
## Exécuter des scripts à distance avec command
Exécuter le script précédemment récupéré, uniquement si le fichier /usr/local/bin/starship n'existe pas déjà
```bash
ansible -o all -m command -a '/tmp/install.sh --yes creates="/usr/local/bin/starship"'
#ou, si on n'a pas pensé à rendre le fichier exécutable précédemment:
ansible -o all -m command -a 'sh /tmp/install.sh --yes creates="/usr/local/bin/starship"'
```
## Déployer un fichier avec copy
S'assurer de la présence du fichier /etc/profile.d/zstarship.sh avec le contenu suivant:
```bash
'eval "$(/usr/local/bin/starship init bash)"'
eval "$(/usr/local/bin/starship init bash)"
```
Pour un contenu aussi léger, pas besoin d'avoir à maintenir un fichier local comme source, on va plutôt utiliser l'argument _content_:
```bash
ansible -o all -m copy -a 'content="eval \"$(/usr/local/bin/starship init bash)\"" dest=/etc/profile.d/zstarship.sh'
```
⚠️ aux quotes !
## S'assurer de la présende de git sur les cibles
```bash
ansible -o all -m package -a 'name=git state=present'
```
## Cloner des dépôts avec git
Cloner le dépôt https://infra.opendoor.fr/git/tom/vim_formation.git dans /opt/vim/
```bash
ansible -o all -m git -a "repo=https://infra.opendoor.fr/git/tom/vim_formation.git dest=/opt/vim"
```
## S'assurer de la présende de vim sur les cibles
```bash
ansible -o all -m package -a 'name=vim state=present'
```
## S'assurer de l'absence de fichier avec file
Supprimer le fichier /etc/vimrc existant
```bash
ansible -o all -m file -a "path=/etc/vimrc state=absent"
```
## Gérer des liens symboliques, toujours avec file
Faire un lien symbolique /etc/vimrc vers /opt/vim/vimrc
```bash
ansible -o all -m file -a "path=/etc/vimrc state=link src=/opt/vim/vimrc"
```
## Modifier des fichiers avec lineinfile
dans /etc/vimrc, assurez-vous que la ligne 62 (qui commence par set list listchars...) soit _décommentée_
dans /etc/vimrc, assurez-vous que la ligne 62 (qui commence par set list listchars...) soit _décommentée_
```bash
ansible -o all -m lineinfile -a 'path=/etc/vimrc regex="^\"(set list listchars.*)" line=\1 backrefs=true'
#ou en recopiant la ligne entière
ansible -o all -m lineinfile -a 'path=/etc/vimrc regex="^\"set list listchars.*" line="set list listchars=nbsp:▶,tab:··,trail:¤,extends:▶,precedes:◀"'
```
## Planifier l'exécution de la tâche "_Exécuter des scripts à distance avec command_" toutes les semaines le dimanche soir avec cron
```bash
ansible all -o -m cron -a 'name="update starship" cron_file="starship" hour="12" minute="01" weekday="sun" job="sh /tmp/install.sh -y" user="root"'
```
```bash
# avec distribution horaire aléatoire ⚠️ principe d'indempotence non respecté
ansible all -o -m cron -a 'name="update starship" cron_file="starship" hour="12" minute="{{ 59 | random() }}" weekday="sun" job="sh /tmp/install.sh -y" user="root"'
```
```bash
# avec distribution horaire aléatoire principe d'indempotence respecté
ansible all -o -m cron -a 'name="update starship" cron_file="starship" hour="12" minute="{{ 59 | random(seed=inventory_hostname) }}" weekday="sun" job="sh /tmp/install.sh -y" user="root"'
```
## Rajouter des blocs de textes dans un fichier avec blockinfile
Rajouter dans ~/.ssh/config, sur la machine *pilote* les infos suivantes:
```bash
Host machinecible #cf variable inventory_hostname
User: formation
Port 22
```
```bash
ansible -o localhost all -u formation -m blockinfile -a 'path=/home/formation//.ssh/config block="Host {{ inventory_hostname }}\n\tPort 22" create=true marker="# {mark} ssh config for {{ inventory_hostname }}"'
```
⚠️ on travaile sur *localhost*, donc l'exemple n'est pas très pertinent