2022-10-31 12:32:50 +01:00
2022-10-31 12:32:50 +01:00

Commandes AdHoc

Remarques préliminaires:

le fichier hosts est un fichier d'inventaire ansible contenant mes cibles

Télécharger des fichiers sur la cible avec get_url

Récupérer dans /tmp le fichier : https://starship.rs/install.sh

ansible -i hosts -o -u root 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à

ansible -i hosts -o -u root all -m command -a 'cmd="/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 -i hosts -o -u root all -m command -a 'cmd="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:

'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:

ansible -i hosts -o -u root all -m copy -a 'content="eval \"$(/usr/local/bin/starship init bash)\"" dest=/etc/profile.d/zstarship.sh'

⚠️ aux quotes !

Cloner des dépôts avec git

Cloner le dépôt https://infra.opendoor.fr/git/tom/vim_formation.git dans /opt/vim/

ansible -i hosts -o -u root all -m  git -a "repo=https://infra.opendoor.fr/git/tom/vim_formation.git dest=/opt/vim"

S'assurer de l'absence de fichier avec file

Supprimer le fichier /etc/vimrc existant

ansible -i hosts -o -u root all -m  file -a "path=/etc/vim state=absent"

Gérer des liens symboliques, toujours avec file

Faire un lien symbolique /etc/vimrc vers /opt/vim/vimrc

ansible -i hosts -o -u root 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

ansible -i hosts -o -u root all -m  lineinfile -a 'path=/etc/vimrc regex="^\"(set list listchars.*)" line=\1 backrefs=true'
#ou en recopiant la ligne entière
ansible -i hosts -o -u root 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

ansible -i hosts -o -u root -m cron  -a 'name="update starship" cron_file="starship" hour="12" minute="01" weekday="sun" job="sh /tmp/install.sh -y" user="root'
# avec distribution horaire aléatoire ⚠️ principe d'indempotence non respecté
ansible -i hosts -o -u root -m cron  -a 'name="update starship" cron_file="starship" hour="12" minute="{{ 59 | random() }}" weekday="sun" job="sh /tmp/install.sh -y" user="root"'
# avec distribution horaire aléatoire  principe d'indempotence respecté
ansible -i hosts -o -u root -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"'
Description
No description provided
Readme 52 KiB