J'essaie d'utiliser une sieste pour modifier les noms d'hôte d'une douzaine de machines virtuelles nouvellement créées et je ne comprends pas comment boucle correctement.
Voici le jeu de jeu que j'ai écrit:
---
- hosts: k8s_kvm_vms
tasks:
- name: "update hostnames"
hostname:
name: "{{ item }}"
with_items:
- centos01
- centos02
...
Le résultat est qu'il met à jour chaque hôte avec chaque nom d'hôte. Donc, si j'ai 12 machines, chaque nom d'hôte serait "Centos12" à la fin du jeu de jeu.
Je m'attends à ce que ce comportement produise essentiellement le même résultat que:
num=0
for ip in ${list_of_ips[*]}; do
ssh $ip hostnamectl set-hostname centos${num}
num=$((num+1))
done
Si je devais l'écrire moi-même à bash
La réponse sur cette page me conduit à croire que je devrais inclure toutes les adresses IP de mon jeu de jeu. À mon avis, l'avantage des scripts serait que je pourrais avoir les mêmes noms d'hôte, même si leur IP change (je dois juste copier les adresses IP dans/etc/ansibles/hôtes) que je pourrais réutiliser avec d'autres playbooks. J'ai lu la page ansible sur le module Nom d'hôte, mais leur exemple me conduit à croire que je voudrais, au lieu d'utiliser une boucle, il faut définir une tâche pour chaque adresse IP individuelle. Si tel est le cas, pourquoi utiliser une ondulation sur un script Bash?
Je pense que vous devez avoir besoin de SUDO pour changer le nom d'hôte, vous devez donc ajouter "devenir: oui"
---
- hosts: k8s_kvm_vms
become: yes
tasks:
- name: "update hostnames"
hostname:
name: "{{ new_hostname }}"
n'a pas assez de réputation pour un commentaire: