Inleiding
In dit document worden de stappen beschreven om Firepower Management Center (FMC) te automatiseren om de Firepower Threat Defence (FTD) interface IP met Ansible te configureren.
Voorwaarden
Vereisten
Cisco raadt kennis van de volgende onderwerpen aan:
- anabel
- Ubuntu server
- Cisco Firepower Management Center (FMC) virtueel
- Cisco Firepower Threat Defence (FTD) virtueel
In de context van deze laboratoriumsituatie wordt Ansible ingezet op Ubuntu.
Het is van essentieel belang om ervoor te zorgen dat Ansible met succes wordt geïnstalleerd op elk platform dat wordt ondersteund door Ansible voor het uitvoeren van de Ansible commando's waarnaar in dit artikel wordt verwezen.
Gebruikte componenten
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
- Ubuntu server 22.04
- Ansible 2.10.8
- Python 3,10
- Cisco Firepower Threat Defense Virtual 7.4.1
- Cisco Firepower Management Center Virtual 7.4.1
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Achtergrondinformatie
Ansible is een zeer veelzijdig hulpmiddel, dat significante doeltreffendheid in het beheer van netwerkapparaten aantoont. Er kunnen tal van methodologieën worden gebruikt om geautomatiseerde taken uit te voeren met Ansible. De in dit artikel gebruikte methode dient als referentie voor testdoeleinden.
In dit voorbeeld, worden het interfacepip adres, masker en interfacenaam bijgewerkt aan FTD na het uitvoeren van het playbookvoorbeeld met succes.
Configureren
Netwerkdiagram
Topologie
Configuraties
Omdat Cisco voorbeeldscripts of door de klant geschreven scripts niet ondersteunt, hebben we enkele voorbeelden die u kunt testen afhankelijk van uw behoeften.
Het is van essentieel belang ervoor te zorgen dat de voorafgaande verificatie naar behoren is uitgevoerd.
- Een omkeerbare server beschikt over internetverbinding.
- Een omkeerbare server kan met succes communiceren met de FMC GUI-poort (de standaardpoort voor FMC GUI is 443).
- Het FTD is geregistreerd bij het VCC.
Stap 1. Maak verbinding met de CLI van de Ansible server via SSH of console.
Stap 2. Voer de opdracht ansible-galaxy collection install cisco.fmcansible uit om de Ansible Collection van FMC op uw Ansible Server te installeren.
cisco@inserthostname-here:~$ ansible-galaxy collection install cisco.fmcansible
Stap 3. Start de opdracht mkdir /home/cisco/fmc_ansibleom een nieuwe map te maken voor het opslaan van de bijbehorende bestanden. In dit voorbeeld is de home directory /home/cisco/, de nieuwe mapnaam is fmc_ansible.
cisco@inserthostname-here:~$ mkdir /home/cisco/fmc_ansible
Stap 4. Navigeer naar de map /home/cisco/fmc_ansible, maak een voorraadbestand. In dit voorbeeld, de inventaris bestandsnaam is inventaris.ini.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
inventory.ini
U kunt deze inhoud dupliceren en plakken voor gebruik, door de gemarkeerde secties te veranderen met de nauwkeurige parameters.
[fmc]
10.0.5.11
[fmc:vars]
ansible_user=cisco
ansible_password=cisco
ansible_httpapi_port=443
ansible_httpapi_use_ssl=True
ansible_httpapi_validate_certs=False
network_type=HOST
ansible_network_os=cisco.fmcansible.fmc
Stap 5. Navigeer naar de map /home/cisco/fmc_ansible, maak een variabele bestand. In dit voorbeeld is de variabele bestandsnaam fmc-fig-interface-vars.yml.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-configure-interface-vars.yml inventory.ini
U kunt deze inhoud dupliceren en plakken voor gebruik, door de gemarkeerde delen met de nauwkeurige parameters te wijzigen.
user: domain: 'Global' onboard: acp_name: 'TEMPACP' device_name: ftd1: 'FTDA' ftd_data: outside_name: 'Outside' inside_name: 'Inside' dmz_name: 'DMZ' outside_ip: '10.1.1.1' inside_ip: '10.1.2.1' dmz_ip: '10.1.3.1' mask24: '255.255.255.0'
Stap 6.Navigeer naar de map /home/cisco/fmc_ansible, maak een afspeelboekbestand. In dit voorbeeld is de bestandsnaam van het afspeelboek fmc-fig-interface-playbook.yaml.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-configure-interface-playbook.yaml fmc-configure-interface-vars.yml inventory.ini
U kunt deze inhoud dupliceren en plakken voor gebruik, door de gemarkeerde secties te veranderen met de nauwkeurige parameters.
--- - name: Update FTD Interface IP Address hosts: fmc connection: httpapi tasks: - name: Task01 - Get User Domain cisco.fmcansible.fmc_configuration: operation: getAllDomain filters: name: "{{ user.domain }}" register_as: domain - name: Task02 - Get Devices cisco.fmcansible.fmc_configuration: operation: getAllDevice path_params: domainUUID: '{{ domain[0].uuid }}' query_params: expanded: true filters: name: "{{ device_name.ftd1 }}" register_as: device_list - name: Task03 - Get Physical Interfaces cisco.fmcansible.fmc_configuration: operation: getAllFTDPhysicalInterface path_params: containerUUID: '{{ device_list[0].id }}' domainUUID: '{{ domain[0].uuid }}' register_as: physical_interfaces - name: Task04 - Setup Outside Interface with static IP cisco.fmcansible.fmc_configuration: operation: updateFTDPhysicalInterface data: ifname: "{{ ftd_data.outside_name }}" ipv4: static: address: "{{ Outside_ip | default(ftd_data.outside_ip) }}" netmask: "{{ Outside_netmask | default(ftd_data.mask24) }}" MTU: 1500 enabled: True mode: NONE type: physicalinterface name: GigabitEthernet0/0 path_params: domainUUID: '{{ domain[0].uuid }}' containerUUID: '{{ device_list[0].id }}' objectId: '{{ physical_interfaces[0].id }}' - name: Task05 - Setup Inside Interface with static IP cisco.fmcansible.fmc_configuration: operation: updateFTDPhysicalInterface data: ifname: "{{ ftd_data.inside_name }}" ipv4: static: address: "{{ Inside_ip | default(ftd_data.inside_ip) }}" netmask: "{{ Inside_netmask | default(ftd_data.mask24) }}" MTU: 1500 enabled: True mode: NONE type: physicalinterface name: GigabitEthernet0/1 path_params: domainUUID: '{{ domain[0].uuid }}' containerUUID: '{{ device_list[0].id }}' objectId: '{{ physical_interfaces[1].id }}' - name: Task06 - Setup DMZ Interface with static cisco.fmcansible.fmc_configuration: operation: updateFTDPhysicalInterface data: ifname: "{{ ftd_data.dmz_name }}" ipv4: static: address: "{{ DMZ_ip | default(ftd_data.dmz_ip) }}" netmask: "{{ DMZ_netmask | default(ftd_data.mask24) }}" MTU: 1500 enabled: True mode: NONE type: physicalinterface name: GigabitEthernet0/2 path_params: domainUUID: '{{ domain[0].uuid }}' containerUUID: '{{ device_list[0].id }}' objectId: '{{ physical_interfaces[2].id }}' - name: Task07 - Get Deployable Devices cisco.fmcansible.fmc_configuration: operation: getDeployableDevice path_params: domainUUID: '{{ domain[0].uuid }}' query_params: expanded: true register_as: deploy_devices - name: Task08 - Start Deployment cisco.fmcansible.fmc_configuration: operation: createDeploymentRequest data: version: '{{ deploy_devices[0].version }}' deviceList: - '{{ deploy_devices[0].device.id }}' forceDeploy: True path_params: domainUUID: '{{ domain[0].uuid }}' register_as: deployment_job - name: Wait for Deployment Complete ansible.builtin.wait_for: timeout: 120 delegate_to: localhost - name: Task09 - Poll Deployment Status Until Deployment Successful cisco.fmcansible.fmc_configuration: operation: getDeploymentDetail path_params: containerUUID: '{{ deploy_devices[0].device.id }}' domainUUID: '{{ domain[0].uuid }}' register_as: deployment_status until: deployment_status[0].status is match("SUCCEEDED") retries: 200 delay: 3 - name: Task10 - Stop The Playbook If The Deployment Failed fail: msg: 'Deployment failed. Status: {{ deployment_status[0].status }}' when: deployment_status[0].status is not match("SUCCEEDED")
Opmerking: de namen die in dit voorbeeldafspeelboek worden gemarkeerd, dienen als variabelen. De corresponderende waarden voor deze variabelen blijven in het variabele bestand bewaard.
Stap 7. Navigeer naar de map /home/cisco/fmc_ansible, voer de opdracht ansible-playbook -i <inventory_name>.ini <playbook_name>.yaml -e@"<playbook_vars>.yml"uit om de taak ansible af te spelen.
In dit voorbeeld is de opdracht ansible-playbook -i inventory.ini fmc-configure-interface-playbook.yaml -e@"fmc-configure-interface-vars.yml" .
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
cisco@inserthostname-here:~/fmc_ansible$ ls
fmc-configure-interface-playbook.yaml fmc-configure-interface-vars.yml inventory.ini
cisco@inserthostname-here:~/fmc_ansible$ ansible-playbook -i inventory.ini fmc-configure-interface-playbook.yaml -e@"fmc-configure-interface-vars.yml"
PLAY [Update FTD Interface IP Address] ***************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task01 - Get User Domain] **********************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task02 - Get Devices] **************************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task03 - Get Physical Interfaces] **************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task04 - Setup Outside Interface with static IP] ***********************************************************************************************************
changed: [10.0.5.11]
TASK [Task05 - Setup Inside Interface with static IP] ************************************************************************************************************
changed: [10.0.5.11]
TASK [Task06 - Setup DMZ Interface with static] ******************************************************************************************************************
changed: [10.0.5.11]
TASK [Task07 - Get Deployable Devices] ***************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task08 - Start Deployment] *********************************************************************************************************************************
changed: [10.0.5.11]
TASK [Wait for Deployment Complete] ******************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task09 - Poll Deployment Status Until Deployment Successful] ***********************************************************************************************
ok: [10.0.5.11]
TASK [Task10 - Stop The Playbook If The Deployment Failed] *******************************************************************************************************
skipping: [10.0.5.11]
PLAY RECAP *******************************************************************************************************************************************************
10.0.5.11 : ok=11 changed=4 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Verifiëren
Gebruik deze sectie om te controleren of uw configuratie goed werkt.
Verbind met de CLI van de FTD via SSH of console en voer de opdrachten show interface ip brief en show running-config interface GigabitEthernet 0/X uit.
De interfacenaam, IP-adres en het masker zijn met succes geconfigureerd.
> show interface ip brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 10.1.1.1 YES manual up up
GigabitEthernet0/1 10.1.2.1 YES manual up up
GigabitEthernet0/2 10.1.3.1 YES manual up up
> show running-config interface GigabitEthernet 0/0
!
interface GigabitEthernet0/0
nameif Outside
cts manual
propagate sgt preserve-untag
policy static sgt disabled trusted
security-level 0
ip address 10.1.1.1 255.255.255.0
> show running-config interface GigabitEthernet 0/1
!
interface GigabitEthernet0/1
nameif Inside
cts manual
propagate sgt preserve-untag
policy static sgt disabled trusted
security-level 0
ip address 10.1.2.1 255.255.255.0
> show running-config interface GigabitEthernet 0/2
!
interface GigabitEthernet0/2
nameif DMZ
cts manual
propagate sgt preserve-untag
policy static sgt disabled trusted
security-level 0
ip address 10.1.3.1 255.255.255.0
Problemen oplossen
Deze sectie bevat informatie waarmee u problemen met de configuratie kunt oplossen.
Om meer logboeken van ansible playbook te zien, kunt u ansible playbook uitvoeren met -vv
cisco@inserthostname-here:~/fmc_ansible$ ansible-playbook -i inventory.ini fmc-configure-interface-playbook.yaml -e@"fmc-configure-interface-vars.yml" -vvv
Gerelateerde informatie
Cisco Devnet FMC Ansible