المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

معلومات أساسية

التكوين

الرسم التخطيطي للشبكة

التكوينات

التحقق من الصحة

استكشاف الأخطاء وإصلاحها

معلومات ذات صلة

المقدمة

يوضح هذا المستند خطوات أتمتة مركز إدارة FirePOWER (FMC) لإنشاء برنامج الدفاع ضد تهديدات الحماية من FirePOWER (FTD) عالي التوفر مع تقنية ANSIBLE.

المتطلبات الأساسية

المتطلبات

توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:

- غير قابل

- خادم Ubuntu

- مركز إدارة FireSIGHT (FMC) الظاهري من Cisco

- الدفاع الظاهري ضد التهديد الناري (FTD) من Cisco

وفي سياق هذا الوضع المختبري، يتم نشر Ansible في أوبونتو.

من الضروري التأكد من أن Ansible قد تم تثبيتها بنجاح على أي نظام أساسي مدعوم من قبل Ansible لتشغيل الأوامر المنطقية المشار إليها في هذه المقالة.

المكونات المستخدمة

تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:

- Ubuntu Server، الإصدار 22.04

- Ansible 2.10.8

- بايثون 3٫10

- Cisco Firepower Threat Defense Virtual 7.4.1

- Cisco Firepower Management Center Virtual 7.4.1

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.

معلومات أساسية

Ansible عبارة عن أداة متعددة الاستخدامات بدرجة كبيرة، مما يظهر فعالية كبيرة في إدارة أجهزة الشبكة. يمكن إستخدام العديد من المنهجيات لتشغيل المهام المؤتمتة باستخدام برنامج Ansible. وتستخدم الطريقة المستخدمة في هذه المادة كمرجع لأغراض الاختبار.

في هذا المثال، يتم إنشاء عنوان IP الخاص ب FTD عالي التوفر وعنوان IP الاحتياطي الخاص به بعد تشغيل مثال دفتر التشغيل بنجاح.

التكوين

الرسم التخطيطي للشبكة

المخطط

التكوينات

نظرا لأن Cisco لا تدعم البرامج النصية للأمثلة أو البرامج النصية المكتوبة من قبل العميل، فلدينا بعض الأمثلة التي يمكنك إختبارها وفقا لاحتياجاتك.

ومن الضروري ضمان إكمال التحقق الأولي على النحو الواجب.

- يتميز الخادم غير القابل للتوصيل بإمكانية الاتصال بالإنترنت.

- يتميز الخادم القابل للتشغيل بإمكانية الاتصال بنجاح بمنفذ واجهة المستخدم الرسومية (GUI) ل FMC (المنفذ الافتراضي لواجهة المستخدم الرسومية (GUI) ل FMC هو 443).

- تم تسجيل جهازي FTD بنجاح في FMC.

- يتم تكوين FTD الأساسي باستخدام عنوان IP للواجهة.

الخطوة 1. قم بالاتصال بواجهة سطر الأوامر (CLI) الخاصة بالخادم الافتراضي عبر بروتوكول SSH أو وحدة التحكم.

الخطوة 2. قم بتشغيل الأمرansible-galaxy collection install cisco.fmcansible من أجل تثبيت مجموعة غير معقولة من FMC على الخادم غير القابل للتشغيل.

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

الخطوة 3. قم بتشغيل الأمر mkdir /home/cisco/fmc_ansibleلإنشاء مجلد جديد لتخزين الملفات ذات الصلة. في هذا المثال، الدليل الرئيسي هو /home/cisco/، اسم المجلد الجديد هو fmc_ansible.

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

الخطوة 4. انتقل إلى المجلد /home/cisco/fmc_ansible، وقم بإنشاء ملف مخزون. في هذا المثال، اسم ملف المخزون هو inventory.ini.

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

ccisco@inserthostname-here:~/fmc_ansible$ ls

inventory.ini

يمكنك تكرار هذا المحتوى ولصقه للاستخدام، وتغيير المقاطع الغامقة باستخدام المعلمات الدقيقة.

[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

الخطوة 5. انتقل إلى المجلد /home/cisco/fmc_ansible، وقم بإنشاء ملف متغير لإنشاء FTD HA. في هذا المثال، اسم الملف المتغير هو 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

يمكنك تكرار هذا المحتوى ولصقه للاستخدام، وتغيير المقاطع الغامقة باستخدام المعلمات الدقيقة.

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'

الخطوة 6. انتقل إلى المجلد /home/cisco/fmc_ansible، وقم بإنشاء ملف كتاب التشغيل لإنشاء FTD HA. في هذا المثال، اسم ملف دفتر التشغيل هو 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

يمكنك تكرار هذا المحتوى ولصقه للاستخدام، وتغيير المقاطع الغامقة باستخدام المعلمات الدقيقة.

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

ملاحظة: تعد الأسماء بالخط العريض في هذا المثال بمثابة متغيرات. يتم الحفاظ على القيم المرادفة لهذه المتغيرات ضمن ملف المتغير.

الخطوة 7. انتقل إلى المجلد /home/cisco/fmc_ansible، قم بتشغيل الأمر ansible-playbook -i <inventory_name>.ini  <playbook_name>.yaml  -e@"<playbook_vars>.yml"لتشغيل المهمة غير المحتملة.

في هذا المثال، الأمر هو ansible-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

الخطوة 8. انتقل إلى المجلد /home/cisco/fmc_ansible، وقم بإنشاء ملف متغير لتحديث عنوان IP في وضع الاستعداد FTD HA. في هذا المثال، اسم الملف المتغير هو 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

يمكنك تكرار هذا المحتوى ولصقه للاستخدام، وتغيير المقاطع الغامقة باستخدام المعلمات الدقيقة.

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'

الخطوة 9. انتقل إلى المجلد /home/cisco/fmc_ansible، وقم بإنشاء ملف كتاب التشغيل لتحديث عنوان IP في وضع الاستعداد في FTD HA. في هذا المثال، اسم ملف دفتر التشغيل هو 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

يمكنك تكرار هذا المحتوى ولصقه للاستخدام، وتغيير المقاطع الغامقة باستخدام المعلمات الدقيقة.

--- - 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")

ملاحظة: تعد الأسماء بالخط العريض في هذا المثال بمثابة متغيرات. يتم الحفاظ على القيم المرادفة لهذه المتغيرات ضمن ملف المتغير.

الخطوة 10. انتقل إلى المجلد /home/cisco/fmc_ansible، قم بتشغيل الأمر ansible-playbook -i <inventory_name>.ini  <playbook_name>.yaml  -e@"<playbook_vars>.yml"لتشغيل المهمة غير المحتملة.

في هذا المثال، الأمر هو ansible-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

التحقق من الصحة

قبل تشغيل المهمة غير المحتملة، سجل الدخول إلى واجهة المستخدم الرسومية (GUI) ل FMC. انتقل إلى الأجهزة > إدارة الأجهزة، تم تسجيل إثنين من ملفات FTD بنجاح على FMC باستخدام سياسة التحكم في الوصول التي تم تكوينها.

قبل تشغيل مهمة غير محتملة

بعد تشغيل المهمة غير المحتملة، سجل الدخول إلى واجهة المستخدم الرسومية (GUI) ل FMC. انتقل إلى الأجهزة > إدارة الأجهزة، تم إنشاء FTD HA بنجاح.

بعد تشغيل المهمة غير المحتملة بنجاح

انقر فوق تحرير عنوان IP الخاص ب FTD HA وعنوان IP الخاص بتجاوز الفشل وعنوان IP الخاص بواجهة الاستعداد تم تكوينها بنجاح.

تفاصيل FTD عالية التوفر

استكشاف الأخطاء وإصلاحها

يوفر هذا القسم معلومات يمكنك استخدامها لاستكشاف أخطاء التكوين وإصلاحها.

لمشاهدة المزيد من سجلات كتاب التشغيل غير القابل للتشغيل، يمكنك تشغيل كتاب التشغيل غير القابل للتشغيل باستخدام -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

معلومات ذات صلة

Cisco Devnet FMC Ansible