web-dev-qa-db-fra.com

Comment utiliser correctement le module de nom d'hôte ansible?

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?

module d'hostname ansible

6
goliath16

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:

1
AMAR BESSALAH