cancel
Showing results for 
Search instead for 
Did you mean: 

How to address multiple BIG-IP servers in one Ansible task?

ml4den_387195
Nimbostratus
Nimbostratus

How to address multiple BIG-IP servers in one Ansible task?

 

Ansible noob here, I'm trying to automate the configuration of large numbers of pools (and other things) using Ansible.

 

I have a hosts file that just contains a group of two BIG-IPs:

 

[f5lab] f5-1-hostname f5-2-hostneme

I have a very simple playbook:

 

name: Create a pool hosts: f5lab connection: local tasks: - name: Create app1 server pool bigip_pool: name: app1_pl monitors: "/Common/http" lb_method: round-robin password: "adminpassword" server: f5-1-hostname user: "adminuser" validate_certs: no delegate_to: localhost

This works fine, but will only create the pool on the one server. I'm trying to find out how to essentially loop through my group of hosts without having to write the same task for each one. The server argument is mandatory for the bigip_pool task, so I can't remove it and have it use the playbook hosts. What is the best procedure for this? Thanks!

 

1 ACCEPTED SOLUTION

ml4den_387195
Nimbostratus
Nimbostratus

Resolved: the answer is to use the "inventory_hostname" variable like this:

 

tasks: - name: Create app1 server pool bigip_pool: name: app1_pl monitors: "/Common/http" lb_method: round-robin password: "adminpassword" server: "{{inventory_hostname}}" user: "adminuser" validate_certs: no delegate_to: localhost

This will cause Ansible to loop through the servers in the inventory/hosts group that we pass it. In my case the group is called "f5lab".

 

View solution in original post

3 REPLIES 3

Rico
Cirrus
Cirrus

With Ansible, you can create an Inventory file that stores variables for use in your playbooks. As you can see in this guide, you can create this Inventory file and then specify the host group you want to run the tasks on in the playbook.

 

If you have any more questions, I am sure I can help.

 

ml4den_387195
Nimbostratus
Nimbostratus

Resolved: the answer is to use the "inventory_hostname" variable like this:

 

tasks: - name: Create app1 server pool bigip_pool: name: app1_pl monitors: "/Common/http" lb_method: round-robin password: "adminpassword" server: "{{inventory_hostname}}" user: "adminuser" validate_certs: no delegate_to: localhost

This will cause Ansible to loop through the servers in the inventory/hosts group that we pass it. In my case the group is called "f5lab".

 

Hello,

I am

l looking for a help on similar issue. Trying to manage 2 BIG IP Server and tried your method mentioned above. However I am getting an errors.

 

Regards,

Nisarg S