Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit les étapes d'automatisation de Firepower Management Center (FMC) pour créer Firepower Threat Defense (FTD) High Availability avec Ansible.
Cisco vous recommande de prendre connaissance des rubriques suivantes :
Dans le cadre de cette situation de laboratoire, Ansible est déployé sur Ubuntu.
Il est essentiel de s'assurer que Ansible est correctement installé sur toute plate-forme prise en charge par Ansible pour exécuter les commandes Ansible mentionnées dans cet article.
Les informations contenues dans ce document sont basées sur les versions de matériel et de logiciel suivantes :
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Ansible est un outil très polyvalent, qui démontre une efficacité significative dans la gestion des périphériques réseau. De nombreuses méthodologies peuvent être utilisées pour exécuter des tâches automatisées avec Ansible. La méthode utilisée dans cet article sert de référence aux fins de l'essai.
Dans cet exemple, la haute disponibilité FTD et son adresse IP de secours sont créées après l'exécution de l'exemple de guide.
Parce que Cisco ne prend pas en charge les exemples de scripts ou les scripts écrits par le client, nous avons quelques exemples que vous pouvez tester en fonction de vos besoins.
Il est essentiel de veiller à ce que la vérification préliminaire ait été dûment menée à bien.
Étape 1. Connectez-vous à la CLI du serveur Ansible via SSH ou la console.
Étape 2. Exécutez la commandeansible-galaxy collection install cisco.fmcansible
afin d'installer la collection Ansible de FMC sur votre serveur Ansible.
cisco@inserthostname-here:~$ ansible-galaxy collection install cisco.fmcansible
Étape 3. Exécutez la commandemkdir /home/cisco/fmc_ansible
afin de créer un nouveau dossier pour stocker les fichiers associés. Dans cet exemple, le répertoire de base est /home/cisco/, le nouveau nom de dossier est fmc_ansible.
cisco@inserthostname-here:~$ mkdir /home/cisco/fmc_ansible
Étape 4. Accédez au dossier /home/cisco/fmc_ansible, create inventory file. Dans cet exemple, le nom du fichier d'inventaire est inventory.ini.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
inventory.ini
Vous pouvez dupliquer ce contenu et le coller pour l'utiliser, en modifiant les sections en gras avec les paramètres précis.
[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
Étape 5. Accédez au dossier /home/cisco/fmc_ansible, create variable file for creation FTD HA. Dans cet exemple, le nom de fichier de la variable est fmc-create-ftd-ha-vars.yml.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-create-ftd-ha-vars.yml inventory.ini
Vous pouvez dupliquer ce contenu et le coller pour l'utiliser, en modifiant le hardi avec les paramètres précis.
user:
domain: 'Global'
device_name:
ftd1: 'FTDA'
ftd2: 'FTDB'
ftd_ha:
name: 'FTD_HA'
active_ip: '192.168.1.1'
standby_ip: '192.168.1.2'
key: cisco
mask24: '255.255.255.0'
Étape 6. Accédez au dossier /home/cisco/fmc_ansible, cCréez un fichier de guide pour la création de FTD HA. Dans cet exemple, le nom du fichier du playbook est fmc-create-ftd-ha-playbook.yaml.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-create-ftd-ha-playbook.yaml fmc-create-ftd-ha-vars.yml inventory.ini
Vous pouvez dupliquer ce contenu et le coller pour l'utiliser, en modifiant les sections en gras avec les paramètres précis.
---
- name: FMC Create FTD HA
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 FTD1
cisco.fmcansible.fmc_configuration:
operation: getAllDevice
path_params:
domainUUID: '{{ domain[0].uuid }}'
filters:
name: "{{ device_name.ftd1 }}"
register_as: ftd1_list
- name: Task03 - Get FTD2
cisco.fmcansible.fmc_configuration:
operation: getAllDevice
path_params:
domainUUID: '{{ domain[0].uuid }}'
filters:
name: "{{ device_name.ftd2 }}"
register_as: ftd2_list
- name: Task04 - Get Physical Interfaces
cisco.fmcansible.fmc_configuration:
operation: getAllFTDPhysicalInterface
path_params:
containerUUID: '{{ ftd1_list[0].id }}'
domainUUID: '{{ domain[0].uuid }}'
register_as: primary_physical_interfaces
- name: Task05 - Configure FTD HA
cisco.fmcansible.fmc_configuration:
operation: "createFTDHADeviceContainer"
data:
primary: {'id': '{{ ftd1_list[0].id }}'}
secondary: {'id': '{{ ftd2_list[0].id }}'}
name: "{{ ftd_ha.name }}"
type: "DeviceHAPair"
ftdHABootstrap: {
'isEncryptionEnabled': false,
'encKeyGenerationScheme': 'CUSTOM',
'sharedKey': "{{ ftd_ha.key }}",
'useSameLinkForFailovers': true,
'lanFailover': {
'useIPv6Address': false,
'subnetMask': "{{ ftd_ha.mask24 }}",
'interfaceObject': {
'id': '{{ primary_physical_interfaces[7].id }}',
'type': 'PhysicalInterface',
'name': 'GigabitEthernet0/7'
},
'standbyIP': "{{ ftd_ha.standby_ip }}",
'logicalName': 'LAN-INTERFACE',
'activeIP': "{{ ftd_ha.active_ip }}"
},
'statefulFailover': {
'useIPv6Address': false,
'subnetMask': "{{ ftd_ha.mask24 }}",
'interfaceObject': {
'id': '{{ primary_physical_interfaces[7].id }}',
'type': 'PhysicalInterface',
'name': 'GigabitEthernet0/7'
},
'standbyIP': "{{ ftd_ha.standby_ip }}",
'logicalName': 'STATEFUL-INTERFACE',
'activeIP': "{{ ftd_ha.active_ip }}"
}
}
path_params:
domainUUID: "{{ domain[0].uuid }}"
- name: Task06 - Wait for FTD HA Ready
ansible.builtin.wait_for:
timeout: 360
delegate_to: localhost
- name: Task07 - Get FTD HA object
cisco.fmcansible.fmc_configuration:
operation: "getAllFTDHADeviceContainer"
path_params:
domainUUID: "{{ domain[0].uuid }}"
query_params:
expanded: true
register_as: ftd_ha_container
delay: 15
- name: Task08 - Confirm Standby Ready Status
cisco.fmcansible.fmc_configuration:
operation: "getFTDHADeviceContainer"
path_params:
objectId: "{{ ftd_ha_container[0].id }}"
domainUUID: "{{ domain[0].uuid }}"
register_as: ha_status
until: ha_status.metadata.secondaryStatus.currentStatus is match("Standby")
retries: 1000
delay: 2
Remarque : les noms en gras dans cet exemple de guide servent de variables. Les valeurs correspondantes de ces variables sont conservées dans le fichier de variables.
Étape 7. Accédez au dossier /home/cisco/fmc_ansible, rcommande un ansible-playbook -i
afin d'exécuter la tâche responsable.
Dans cet exemple, la commande estansible-playbook -i inventory.ini fmc-create-ftd-ha-playbook.yaml -e@"fmc-create-ftd-ha-vars.yml"
.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-create-ftd-ha-playbook.yaml fmc-create-ftd-ha-vars.yml inventory.ini
cisco@inserthostname-here:~/fmc_ansible$ ansible-playbook -i inventory.ini fmc-create-ftd-ha-playbook.yaml -e@"fmc-create-ftd-ha-vars.yml"
PLAY [FMC Create FTD HA] *****************************************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task01 - Get User Domain] **********************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task02 - Get FTD1] *****************************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task03 - Get FTD2] *****************************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task04 - Get Physical Interfaces] **************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task05 - Configure FTD HA] *********************************************************************************************************************************
changed: [10.0.5.11]
TASK [Task06 - Wait for FTD HA Ready] ****************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task07 - Get FTD HA object] ********************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task08 - Confirm Standby Ready Status] *********************************************************************************************************************
ok: [10.0.5.11]
PLAY RECAP *******************************************************************************************************************************************************
10.0.5.11 : ok=9 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Étape 8. Accédez au dossier /home/cisco/fmc_ansible, créez un fichier variable pour mettre à jour l'adresse IP de secours FTD HA. Dans cet exemple, le nom du fichier variable est fmc-create-ftd-ha-standby-ip-vars.yml.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-create-ftd-ha-playbook.yaml fmc-create-ftd-ha-standby-ip-vars.yml fmc-create-ftd-ha-vars.yml inventory.ini
Vous pouvez dupliquer ce contenu et le coller pour l'utiliser, en modifiant les sections en gras avec les paramètres précis.
user:
domain: 'Global'
ftd_data:
outside_name: 'Outside'
inside_name: 'Inside'
outside_ip: '10.1.1.1'
inside_ip: '10.1.2.1'
mask24: '255.255.255.0'
ftd_ha:
name: 'FTD_HA'
outside_standby: '10.1.1.2'
inside_standby: '10.1.2.2'
Étape 9. Accédez au dossier /home/cisco/fmc_ansible, créez un fichier de guide de mise à jour de l'adresse IP de secours FTD HA. Dans cet exemple, le nom du fichier du playbook est fmc-create-ftd-ha-standby-ip-playbook.yaml.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-create-ftd-ha-playbook.yaml fmc-create-ftd-ha-standby-ip-playbook.yaml fmc-create-ftd-ha-standby-ip-vars.yml fmc-create-ftd-ha-vars.yml inventory.ini
Vous pouvez dupliquer ce contenu et le coller pour l'utiliser, en modifiant les sections en gras avec les paramètres précis.
--- - name: FMC Update FTD HA Interface Standby IP 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 FTD HA Object cisco.fmcansible.fmc_configuration: operation: "getAllFTDHADeviceContainer" path_params: domainUUID: "{{ domain[0].uuid }}" query_params: expanded: true register_as: ftd_ha_container - name: Task03 - Get Outside Interface cisco.fmcansible.fmc_configuration: operation: "getAllFTDHAMonitoredInterfaces" path_params: containerUUID: "{{ ftd_ha_container[0].id }}" domainUUID: "{{ domain[0].uuid }}" filters: name: "{{ ftd_data.outside_name }}" register_as: outside_interface - name: Task04 - Get Inside Interface cisco.fmcansible.fmc_configuration: operation: "getAllFTDHAMonitoredInterfaces" path_params: containerUUID: "{{ ftd_ha_container[0].id }}" domainUUID: "{{ domain[0].uuid }}" filters: name: "{{ ftd_data.inside_name }}" register_as: inside_interface - name: Task05 - Configure Standby IP-Outside cisco.fmcansible.fmc_configuration: operation: "updateFTDHAMonitoredInterfaces" data: id: "{{ outside_interface[0].id }}" name: "{{ outside_interface[0].name }}" ipv4Configuration: {'standbyIPv4Address': "{{ ftd_ha.outside_standby }}"} monitorForFailures: true path_params: objectId: "{{ outside_interface[0].id }}" containerUUID: "{{ ftd_ha_container[0].id }}" domainUUID: "{{ domain[0].uuid }}" - name: Task06 - Config Standby IP-Inside cisco.fmcansible.fmc_configuration: operation: "updateFTDHAMonitoredInterfaces" data: id: "{{ inside_interface[0].id }}" name: "{{ inside_interface[0].name }}" ipv4Configuration: {'standbyIPv4Address': "{{ ftd_ha.inside_standby }}"} monitorForFailures: true path_params: objectId: "{{ inside_interface[0].id }}" containerUUID: "{{ ftd_ha_container[0].id }}" domainUUID: "{{ domain[0].uuid }}" - 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: Task09 - Wait for Deployment Complete ansible.builtin.wait_for: timeout: 240 delegate_to: localhost - name: Task10 - 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: 1000 delay: 3 - name: Task11 - 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")
Remarque : les noms en gras dans cet exemple de guide servent de variables. Les valeurs correspondantes de ces variables sont conservées dans le fichier de variables.
Étape 10. Accédez au dossier /home/cisco/fmc_ansible, rcommande un ansible-playbook -i
afin d'exécuter la tâche responsable.
Dans cet exemple, la commande estansible-playbook -i inventory.ini fmc-create-ftd-ha-standby-ip-playbook.yaml -e@"fmc-create-ftd-ha-standby-ip-vars.yml"
.
cisco@inserthostname-here:~$ cd /home/cisco/fmc_ansible/
ccisco@inserthostname-here:~/fmc_ansible$ ls
fmc-create-ftd-ha-playbook.yaml fmc-create-ftd-ha-standby-ip-playbook.yaml fmc-create-ftd-ha-standby-ip-vars.yml fmc-create-ftd-ha-vars.yml inventory.ini
cisco@inserthostname-here:~/fmc_ansible$ ansible-playbook -i inventory.ini fmc-create-ftd-ha-standby-ip-playbook.yaml -e@"fmc-create-ftd-ha-standby-ip-vars.yml"
PLAY [FMC Update FTD HA Interface Standby IP] ********************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task01 - Get User Domain] **********************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task02 - Get FTD HA Object] ********************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task03 - Get Outside Interface] ****************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task04 - Get Inside Interface] *****************************************************************************************************************************
ok: [10.0.5.11]
TASK [Task05 - Configure Standby IP-Outside] *********************************************************************************************************************
changed: [10.0.5.11]
TASK [Task06 - Config Standby IP-Inside] *************************************************************************************************************************
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 [Task09 - Wait for Deployment Complete] *********************************************************************************************************************
ok: [10.0.5.11]
TASK [Task10 - Poll Deployment Status Until Deployment Successful] ***********************************************************************************************
ok: [10.0.5.11]
TASK [Task11 - Stop The Playbook If The Deployment Failed] *******************************************************************************************************
skipping: [10.0.5.11]
PLAY RECAP *******************************************************************************************************************************************************
10.0.5.11 : ok=11 changed=3 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Avant d'exécuter la tâche d'analyse, connectez-vous à l'interface utilisateur FMC. Accédez à Devices > Device Management, deux FTD enregistrés avec succès sur FMC avec la stratégie de contrôle d'accès configurée.
Après avoir exécuté la tâche d'analyse, connectez-vous à l'interface utilisateur FMC. Accédez à Périphériques > Gestion des périphériques, FTD HA est créé avec succès.
Cliquez sur Edit of FTD HA, failover ip address et interface standby ip address are configured successfully.
Cette section fournit des informations que vous pouvez utiliser pour dépanner votre configuration.
Afin de voir plus de journaux de playbook ansible, vous pouvez exécuter le playbook ansible avec -vvv.
cisco@inserthostname-here:~/fmc_ansible$ ansible-playbook -i inventory.ini fmc-create-ftd-ha-standby-ip-playbook.yaml -e@"fmc-create-ftd-ha-standby-ip-vars.yml" -vvv
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
06-Feb-2024 |
Première publication |