Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Configurar

Diagrama de la red

Configuraciones

Verificación

Troubleshoot

Información Relacionada

Introducción

Este documento describe los pasos para automatizar el registro de Firepower Threat Defence (FTD) en Firepower Management Center (FMC) con Ansible.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Ansible

- Servidor Ubuntu

- Cisco Firepower Management Center (FMC) virtual

- Cisco Firepower Threat Defense (FTD) Virtual

En el contexto de esta situación de laboratorio, Ansible está desplegado en Ubuntu.

Es esencial asegurarse de que Ansible se instale correctamente en cualquier plataforma compatible con Ansible para ejecutar los comandos Ansible a los que se hace referencia en este artículo.

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

- Servidor Ubuntu 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

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Antecedentes

Ansible es una herramienta muy versátil que demuestra una eficacia significativa en la gestión de dispositivos de red. Se pueden emplear numerosas metodologías para ejecutar tareas automatizadas con Ansible. El método empleado en este artículo sirve de referencia a efectos de ensayo.

En este ejemplo, después de incorporar correctamente el FTD virtual, se utiliza la licencia base, el modo enrutado, el nivel de función FTDv30 y la política de control de acceso, que es con la acción de permiso predeterminada con el envío a FMC habilitado para registro.

Configurar

Diagrama de la red

Topología

Configuraciones

Como Cisco no admite scripts de ejemplo ni scripts escritos por el cliente, tenemos algunos ejemplos que puede probar según sus necesidades.

Es esencial garantizar que la verificación preliminar se haya completado debidamente.

- El servidor Ansible posee conectividad a Internet.

- El servidor Ansible puede comunicarse correctamente con el puerto GUI de FMC (el puerto predeterminado para la GUI de FMC es 443).

- El FTD se configura con la dirección IP del administrador, la clave de registro y el nat-id correctos.

- El FMC se ha activado correctamente con la licencia inteligente.

Paso 1. Conéctese a la CLI del servidor Ansible mediante SSH o la consola.

Paso 2. Ejecute ansible-galaxy collection install cisco.fmcansible el comando para instalar la colección Ansible de FMC en su servidor Ansible.

cisco@inserthostname-here:~$ ansible-galaxy collection install cisco.fmcansible

Paso 3. Ejecute mkdir /home/cisco/fmc_ansible el comando para crear una nueva carpeta para almacenar los archivos relacionados. En este ejemplo, el directorio principal es /home/cisco/, el nuevo nombre de carpeta es fmc_ansible.

cisco@inserthostname-here:~$ mkdir /home/cisco/fmc_ansible

Paso 4. Vaya a la carpeta /home/cisco/fmc_ansible, crear archivo de inventario. En este ejemplo, el nombre del archivo de inventario es Inventory.ini.

cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/

ccisco@inserthostname-here:~/fmc_ansible$ ls

inventory.ini

Puede duplicar el siguiente contenido y pegarlo para su uso, alterando las secciones resaltadas con los parámetros precisos.

[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

Paso 5. Vaya a la carpeta /home/cisco/fmc_ansible, crear archivo de variable. En este ejemplo, el nombre de archivo de la variable es fmc-onboard-ftd-vars.yml.

cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/

ccisco@inserthostname-here:~/fmc_ansible$ ls

fmc-onboard-ftd-vars.yml  inventory.ini

Puede duplicar el siguiente contenido y pegarlo para su uso, alterando las secciones resaltadas con los parámetros precisos.

user:

domain: 'Global'

onboard:

acp_name: 'TEMPACP'

device_name:

ftd1: 'FTDA'

ftd1_reg_key: 'cisco'

ftd1_nat_id: 'natcisco'

mgmt:

ftd1: '10.0.5.12'

Paso 6.Navegue hasta la carpeta /home/cisco/fmc_ansible, cree el archivo del cuaderno. En este ejemplo, el nombre del archivo del cuaderno es fmc-onboard-ftd-playbook.yaml.

cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/

ccisco@inserthostname-here:~/fmc_ansible$ ls

fmc-onboard-ftd-playbook.yaml fmc-onboard-ftd-vars.yml inventory.ini

Puede duplicar el siguiente contenido y pegarlo para su uso, alterando las secciones resaltadas con los parámetros precisos.

---

- name: FMC Onboard FTD

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 - Create ACP TEMP_ACP

cisco.fmcansible.fmc_configuration:

operation: "createAccessPolicy"

data:

type: "AccessPolicy"

name: "{{accesspolicy_name | default(onboard.acp_name) }}"

defaultAction: {

'action': 'PERMIT',

'logEnd': True,

'logBegin': False,

'sendEventsToFMC': True

}

path_params:

domainUUID: "{{ domain[0].uuid }}"

- name: Task03 - Get Access Policy

cisco.fmcansible.fmc_configuration:

operation: getAllAccessPolicy

path_params:

domainUUID: "{{ domain[0].uuid }}"

filters:

name: "{{ onboard.acp_name }}"

register_as: access_policy

- name: Task04 - Add New FTD1

cisco.fmcansible.fmc_configuration:

operation: createMultipleDevice

data:

hostName: "{{ ftd_ip | default(item.key) }}"

license_caps:

- 'BASE'

ftdMode: 'ROUTED'

type: Device

regKey: "{{ reg_key | default(device_name.ftd1_reg_key) }}"

performanceTier: "FTDv30"

name: "{{ ftd_name | default(item.value) }}"

accessPolicy:

id: '{{ access_policy[0].id }}'

type: 'AccessPolicy'

natID: "{{ nat_id | default(device_name.ftd1_nat_id) }}"

path_params:

domainUUID: '{{ domain[0].uuid }}'

loop: "{{ ftd_ip_name | dict2items }}"

vars:

ftd_ip_name:

"{{mgmt.ftd1}}": "{{device_name.ftd1}}"

- name: Task05 - Wait For FTD Registration Completion

ansible.builtin.wait_for:

timeout: 120

delegate_to: localhost

- name: Task06 - Confirm FTD Init Deploy Complete

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

until: device_list[0].deploymentStatus is match("DEPLOYED")

retries: 1000

delay: 3

Nota: Los nombres resaltados en este cuaderno de campaña de ejemplo sirven como variables. Los valores correspondientes de estas variables se conservan en el archivo de variables.

Paso 7. Navegue hasta la carpeta /home/cisco/fmc_ansible, ejecute ansible-playbook -i <inventory_name>.ini  <playbook_name>.yaml  -e@"<playbook_vars>.yml"  el comando para reproducir la tarea ansible. En este ejemplo, el comando es ansible-playbook -i inventory.ini fmc-onboard-ftd-playbook.yaml -e @"fmc-onboard-ftd-vars.yml"  .

cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/

cisco@inserthostname-here:~/fmc_ansible$ ls

fmc-onboard-ftd-playbook.yaml fmc-onboard-ftd-vars.yml inventory.ini

cisco@inserthostname-here:~/fmc_ansible$ ansible-playbook -i inventory.ini fmc-onboard-ftd-playbook.yaml -e @"fmc-onboard-ftd-vars.yml"

PLAY [FMC Onboard FTD] *******************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************

ok: [10.0.5.11]

TASK [Task01 - Get User Domain] **********************************************************************************************************************************

ok: [10.0.5.11]

TASK [Task02 - Create ACP TEMP_ACP] ******************************************************************************************************************************

changed: [10.0.5.11]

TASK [Task03 - Get Access Policy] ********************************************************************************************************************************

ok: [10.0.5.11]

TASK [Task04 - Add New FTD1] *************************************************************************************************************************************

changed: [10.0.5.11] => (item={'key': '10.0.5.12', 'value': 'FTDA'})

TASK [Task05 - Wait For FTD Registration Completion] *************************************************************************************************************

ok: [10.0.5.11]

TASK [Task06 - Confirm FTD Init Deploy Complete] *****************************************************************************************************************

FAILED - RETRYING: Task06 - Confirm FTD Init Deploy Complete (1000 retries left).

FAILED - RETRYING: Task06 - Confirm FTD Init Deploy Complete (999 retries left).

FAILED - RETRYING: Task06 - Confirm FTD Init Deploy Complete (998 retries left).

FAILED - RETRYING: Task06 - Confirm FTD Init Deploy Complete (997 retries left).

FAILED - RETRYING: Task06 - Confirm FTD Init Deploy Complete (996 retries left).

ok: [10.0.5.11]

PLAY RECAP *******************************************************************************************************************************************************

10.0.5.11 : ok=7 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Verificación

Use esta sección para confirmar que su configuración funciona correctamente.

Inicie sesión en FMC GUI. Vaya a  Devices > Device Management, el FTD se registró correctamente en el FMC con la política de control de acceso configurada.

Página Gestión de Dispositivos

Troubleshoot

En esta sección encontrará información que puede utilizar para solucionar problemas de configuración.

Para ver más registros del cuaderno de campaña de Ansible, puede ejecutar el cuaderno de campaña de Ansible con -vv.

cisco@inserthostname-here:~/fmc_ansible$ ansible-playbook -i inventory.ini fmc-onboard-ftd-playbook.yaml -e @"fmc-onboard-ftd-vars.yml" -vvv

Información Relacionada

Cisco Devnet FMC Ansible