Define hostname for group based on index+1

Hi,

I have X amount of server inside a defined group (For example - web server)
I want to loop the server a define there hostname based on index+1

For example, if the group have 3 server , so server one should be “web-server1” , second , “web-server-2” etc.

The below didnt do the trick - since it is looping the sequence for each server

  • hosts: web-server
    remote_user: user
    become: yes
    tasks:
  • name: Set a hostname
    hostname:
    name: web-server-{{ item }}

with_sequence: count=3

Hi,

I have X amount of server inside a defined group (For example - web server)
I want to loop the server a define there hostname based on index+1

For example, if the group have 3 server , so server one should be "web-server1" , second , "web-server-2" etc.

The below didnt do the trick - since it is looping the sequence for each server
- hosts: web-server
remote_user: user
become: yes
tasks:
- name: Set a hostname
hostname:
name: web-server-{{ item }}

   with\_sequence: count=3

Using a loop is futile here, as you found out. But you can do that with a bit Python:

- name: Set a hostname
   hostname:
     name: "web-server-{{ groups['web-server'].index(inventory_hostname) }}"

Regards
           Racke

First of all thank you - it works.

But, can i spare the following definition ? groups[‘web-server’]
Basically in the begging of the playbook I’m defining the group under hosts

  • hosts: web-server

ב-יום שישי, 15 באפריל 2022 בשעה 11:58:31 UTC+3, ra...@linuxia.de כתב/ה:

First of all thank you - it works.

But, can i spare the following definition ? *groups['web-server']*
Basically in the begging of the playbook I'm defining the group under hosts

- hosts: web-server

You could try ansible_play_hosts instead.

Regards
         Racke