Automation, Orchestration & DevOps > Class 9: Basic BIG-IP Configuration Management with Ansible > Section 1 - Ansible F5 Basic Exercises Source | Edit on
Exercise 1.7: Using the bigip_config module¶
Objective¶
Demonstrate use of the BIG-IP config module to save the running configuration to disk
Guide¶
Step 1:¶
Use VS Code Explorer to create a new file called bigip-config.yml
.
The Ansible node is equipped withVisual Studio Code
and can be accessed via UDF ACCESS Methods.
Step 2:¶
Ansible playbooks are YAML files. YAML is a structured encoding format that is also extremely human readable (unlike it’s subset - the JSON format).
Enter the following play definition into bigip-virtual-server.yml
:
---
- name: BIG-IP SETUP
hosts: lb
connection: local
gather_facts: false
- The
---
at the top of the file indicates that this is a YAML file. - The
hosts: f5
, indicates the play is run only on the F5 BIG-IP device connection: local
tells the Playbook to run locally (rather than SSHing to itself)gather_facts: no
disables facts gathering. We are not using any fact variables for this playbook.
Do not exit the editor yet.
Step 3¶
Next, add the task
. This task will use the bigip-config
to save
the running configuration to disk
tasks:
- name: SAVE RUNNING CONFIG ON BIG-IP
bigip_config:
provider:
server: "{{private_ip}}"
user: "{{ansible_user}}"
password: "{{ansible_ssh_pass}}"
server_port: 8443
validate_certs: no
save: yes
A play is a list of tasks. Tasks and modules have a 1:1 correlation. Ansible modules are reusable, standalone scripts that can be used by the Ansible API, or by the ansible or ansible-playbook programs. They return information to ansible by printing a JSON string to stdout before exiting.
name: SAVE RUNNING CONFIG ON BIG-IP
is a user defined description that will display in the terminal output.bigip_config:
tells the task which module to use.- The
server: "{{private_ip}}"
parameter tells the module to connect to the F5 BIG-IP IP address, which is stored as a variableprivate_ip
in inventory - The
provider:
parameter is a group of connection details for the BIG-IP. - The
user: "{{ansible_user}}"
parameter tells the module the username to login to the F5 BIG-IP device with - The
password: "{{ansible_ssh_pass}}"
parameter tells the module the password to login to the F5 BIG-IP device with - The
server_port: 8443
parameter tells the module the port to connect to the F5 BIG-IP device with - The
save: "yes""
parameter tells the module to save the running-config to startup-config. This operation is performed after any changes are made to the current running config. If no changes are made, the configuration is still saved to the startup config. This option will always cause the module to return changed - The
validate_certs: "no"
parameter tells the module to not validate SSL certificates. This is just used for demonstration purposes since this is a lab.
Save File and exit out of editor.
Step 4¶
Run the playbook - exit back into the command line of the control host and execute the following:
[centos@ansible ~]$ ansible-playbook bigip-config.yml
Playbook Output¶
[centos@ansible]$ ansible-playbook bigip-config.yml
PLAY [BIG-IP SETUP] ************************************************************************************************************************
TASK [SAVE RUNNING CONFIG ON BIG-IP] ************************************************************************************************************************
changed: [f5]
PLAY RECAP *************************************************************************************************************
f5 : ok=1 changed=1 unreachable=0 failed=0
Solution¶
The finished Ansible Playbook is provided here for an Answer key. Click
here: bigip-config.yml
.
You have finished this exercise. Click here to return to the lab guide