هدف لب
ساخت یک قالب CLI حاوی متغیرها برای مقادیر خاص-دستگاه مانند hostname و آدرس loopback، اعمال همان قالب روی دو دستگاه متفاوت با مقادیر متغیر متفاوت فراهمشده برای هرکدام، و تأیید اینکه هر دستگاه یک پیکربندی بهدرستی سفارشیشده تولیدشده از همان قالب زیربنایی یکسان دریافت میکند.
هدف لب (چرا مهم است)
لب playbook در Ansible پیشتر در این مجموعه push پیکربندی بدون-عامل از یک control node خارجی را نشان داد. قالبهای CLI بهسبک-DNA Center رویکرد قالب-و-متغیر مشابهی اتخاذ میکنند اما آن را مستقیماً در گردشکار برنامهریزی یک پلتفرم مدیریتی متمرکز ادغام میکنند، و اجازه میدهند یک مدیر یک الگوی پیکربندی را یکبار تعریف کند و آن را بهطور سازگار در سراسر بسیاری دستگاه با فقط مقادیر خاص-سایت متفاوت بهازای-هر-دستگاه اعمال کند.
توپولوژی لب
ProvisioningPlatform (موتور قالب)
BranchRouterA (برای دریافت: hostname
BRANCH-A، loopback
10.100.1.1/32)
BranchRouterB (برای دریافت: hostname
BRANCH-B، loopback
10.100.2.1/32)وظیفه ۱: ساخت یک قالب CLI با متغیرها
یک قالب حاوی ساختار پیکربندی مشترک، با متغیرهایی که مقادیر متفاوت بهازای-هر-دستگاه را علامتگذاری میکنند، تعریف کن.
وظیفه ۲: تعریف مقادیر متغیر برای BranchRouterA
مقادیر خاص BranchRouterA برای متغیرهای قالب را مشخص کن.
وظیفه ۳: تعریف مقادیر متغیر برای BranchRouterB
مقادیر خاص BranchRouterB برای همان متغیرهای قالب را مشخص کن.
وظیفه ۴: اعمال قالب روی هر دو دستگاه
قالب را، با مقادیر متغیر متناظر هر دستگاه، به هر دو روتر پوش کن.
وظیفه ۵: تأیید دریافت پیکربندی بهدرستی سفارشیشده توسط هر دستگاه
تأیید کن پیکربندی در حال اجرای هر روتر مقادیر خاص خودش را منعکس میکند، تولیدشده از ساختار قالب مشترک.
راهحل و تأیید
-- قالب CLI (BRANCH-STANDARD):
hostname $HOSTNAME
!
interface Loopback0
ip address $LOOPBACK_IP 255.255.255.255
!
ip domain-name lab.local
!
line vty 0 15
transport input ssh
-- $HOSTNAME و $LOOPBACK_IP متغیرهای قالب
-- هستند -- هر چیز دیگر در قالب در سراسر هر
-- دستگاهی که روی آن اعمال میشود یکسان است-- مقادیر متغیر برای BranchRouterA:
HOSTNAME = BRANCH-A
LOOPBACK_IP = 10.100.1.1-- مقادیر متغیر برای BranchRouterB:
HOSTNAME = BRANCH-B
LOOPBACK_IP = 10.100.2.1-- قالب اعمالشده روی BranchRouterA،
-- رندرشده به:
hostname BRANCH-A
!
interface Loopback0
ip address 10.100.1.1 255.255.255.255
!
ip domain-name lab.local
!
line vty 0 15
transport input ssh
-- قالب اعمالشده روی BranchRouterB،
-- رندرشده به:
hostname BRANCH-B
!
interface Loopback0
ip address 10.100.2.1 255.255.255.255
!
ip domain-name lab.local
!
line vty 0 15
transport input sshBranchRouterA# show running-config | include hostname
hostname BRANCH-A
BranchRouterA# show ip interface brief | include Loopback0
Loopback0 10.100.1.1 YES manual up upBranchRouterB# show running-config | include hostname
hostname BRANCH-B
BranchRouterB# show ip interface brief | include Loopback0
Loopback0 10.100.2.1 YES manual up up
-- هر دو روتر بهدرستی مقادیر خاص-سایت خودشان
-- را دریافت کردند، تولیدشده از دقیقاً همان
-- ساختار قالب زیربنایی -- هیچ تایپمجدد دستی
-- و دستگاه-به-دستگاه عناصر پیکربندی مشترک
-- (نام دامنه، تنظیمات انتقال VTY) برای هیچکدام
-- از دستگاهها نیاز نبودنکته کلیدی
قالبهای CLI ساختار پیکربندیای که در سراسر یک کلاس دستگاه یکسان میماند را از مقادیر خاصای که بهازای-هر-دستگاه متفاوتاند جدا میکنند، رویکردی از نظر مفهومی مشابه با متغیرهای playbook در Ansible پیشتر در این مجموعه اما مستقیماً در گردشکار یک پلتفرم برنامهریزی ادغامشده — این جداسازی یعنی بهروزرسانی یک عنصر پیکربندی مشترک (افزودن یک خط جدید به قالب) بهطور خودکار دفعه بعد که قالب استفاده میشود بهطور سازگار اعمال میشود، بهجای نیازمندی آن تغییر به بازاعمال دستی روی هر دستگاه جداگانه.