نصب و پيكربندي Ansible در اوبونتو 18.04
سيستم هاي مديريت پيكربندي به منظور ساده سازي فرايند كنترل تعداد زيادي سرور مجازي ، براي مديران و تيم هاي عملياتي طراحي شده اند. آنها به شما اجازه مي دهند بسياري از سيستم هاي مختلف را به صورت خودكار از يك مكان مركزي كنترل كنيد.
در حالي كه بسياري از ابزارهاي مديريت پيكربندي محبوب براي سيستمهاي لينوكس مانند Chef و Puppet در دسترس هستند ، اينها معمولاً پيچيده تر از چيزي هستند كه افراد مي خواهند يا نياز دارند. Ansible يك گزينه عالي براي اين منظور است زيرا معماري ساده اي را ارائه مي دهد كه نيازي به نصب نرم افزار ويژه روي nodes ندارد ، از SSH براي انجام كارهاي اتوماسيون و فايل هاي YAML براي تعريف جزئيات تهيه استفاده مي كند.
در اين راهنما ، به چگونگي نصب Ansible در سرور مجازي Ubuntu 18.04 ميپردازيم و در مورد اصول استفاده از اين نرم افزار به صورت جزيي ميپردازيم.
Ansible چگونه كار مي كند؟
Ansible با پيكربندي ماشينهاي كلاينت كار ميكند ، كه به nodes managed شناخته ميشوند ، از رايانه اي كه اجزاي Ansible را نصب و پيكربندي كرده است، كه به آن گره ي كنترل Ansible گفته مي شود.
براي بازيابي اطلاعات از سيستمهاي از راه دور ، صدور دستورات و كپي كردن فايلها ، از طريق كانالهاي عادي SSH ارتباط برقرار مي كند. به همين دليل ، يك سيستم Ansible نيازي به نصب هيچ نرم افزار اضافي بر روي رايانه هاي كلاينت ندارد.
اين روشي است كه Ansible مديريت سرور مجازي ها را ساده تر مي كند. هر سرور مجازي ي كه درگاه SSH را در معرض ديد دارد ، مي تواند صرف نظر از اينكه در چه مرحله اي از چرخه زندگي خود قرار دارد ، تحت حوزه پيكربندي Ansible قرار گيرد. اين بدان معناست كه هر رايانه اي كه بتوانيد از طريق SSH مديريت كنيد ، مي توانيد از طريق Ansible نيز مديريت كنيد.
Ansible يك رويكرد مدولار را در پيش مي گيرد و شما را قادر مي سازد تا ويژگي هاي سيستم اصلي را براي مقابله با سناريوهاي خاص گسترش دهيد. ماژول ها را مي توان به هر زباني نوشت و با JSON استاندارد ارتباط برقرار كرد.
فايل هاي پيكربندي به دليل ماهيت تاثيرگذار و شباهت آن با زبانهاي نشانه گذاري محبوب ، عمدتاً در قالب سريال سازي داده هاي YAML نوشته شده اند. Ansible ميتواند از طريق ابزارهاي خط فرمان يا اسكريپت هاي پيكربندي آن ، كه به Playbooks شناخته مي شوند ، با هاست تعامل برقرار كند.
پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
يك node كنترل Ansible: node كنترل Ansible ماشيني است كه ما براي اتصال و كنترل هاست هاي Ansible روي SSH از آن استفاده خواهيم كرد. node كنترل Ansible شما يا مي تواند دستگاه محلي شما باشد يا يك سرور مجازي اختصاص داده شده براي اجراي Ansible ، اگرچه اين راهنما فرض مي كند كه node كنترل شما يك سيستم اوبونتو 18.04 است. اطمينان حاصل كنيد كه node كنترل داراي موارد زير است:
o يك كاربر غير ريشه با امتيازات sudo. براي تنظيم اين گزينه ، مي توانيد مراحل 2 و 3 راهنماي اوليه راه اندازي سرور مجازي ما براي اوبونتو 18.04 را دنبال كنيد. با اين وجود ، لطفاً توجه داشته باشيد كه اگر از سرور مجازي راه دور به عنوان node كنترل Ansible خود استفاده مي كنيد ، بايد هر مرحله از اين راهنما را دنبال كنيد. با اين كار فايروال روي سرور مجازي با ufw پيكربندي شده و دسترسي خارجي به پروفايل كاربر غير ريشه شما امكان پذير خواهد شد ، كه هر دو به حفظ امنيت سرور مجازي از راه دور كمك مي كنند.
o صفحه كليد SSH مرتبط با اين كاربر. براي انجام اين كار ، مي توانيد مرحله 1 راهنماي ما درباره نحوه تنظيم كليدهاي SSH در اوبونتو 18.04 را دنبال كنيد.
يك يا چند هاست Ansible: هاست Ansible هر دستگاهي است كه node كنترل Ansible شما براي خودكار سازي آن تنظيم شده باشد. اين راهنما فرض مي كند كه هاست هاي Ansible شما سرور مجازي هاي Ubuntu 18.04 از راه دور هستند. اطمينان حاصل كنيد كه هر هاست Ansible داراي موارد زير است:
o كليد عمومي SSH node كنترل Ansible به authorized_keys كاربر سيستم اضافه شده باشد. اين كاربر مي تواند يا root يا يك كاربر معمولي با امتيازات sudo باشد. براي تنظيم اين گزينه ، مي توانيد مرحله 2 نحوه تنظيم كليدهاي SSH را در اوبونتو 18.04 دنبال كنيد.
مرحله 1 – نصب Ansible
براي شروع استفاده از Ansible به عنوان ابزاري براي مديريت زيرساخت هاي سرور مجازي خود ، بايد نرم افزار Ansible را روي دستگاه نصب كنيد كه به عنوان node كنترل Ansible عمل خواهد كرد.
از node كنترل خود ، دستور زير را اجرا كنيد تا PPA (بايگاني بسته شخصي) پروژه رسمي را در ليست منابع سيستم خود وارد كنيد:
$ sudo apt-add-repository ppa:ansible/ansible
هنگامي كه از شما خواسته شد افزودن PPA را بپذيريد ، ENTER را فشار دهيد.
سپس ، فهرست بسته بندي سيستم خود را ريفرش كنيد تا از بسته هاي موجود در PPA كه اخيراً در آن قرار گرفته آگاهي پيدا كنيد:
$ sudo apt update
پس از اين بروزرساني ، مي توانيد نرم افزار Ansible را با دستور زير نصب كنيد:
$ sudo apt install ansible
node كنترلي Ansible شما اكنون تمامي نرم افزارهاي مورد نياز براي مديريت هاست شما را دارد. در مرحله بعد ، به نحوه اضافه كردن هاست ها به فايل موجودي node كنترل خواهيم پرداخت تا بتواند آنها را كنترل كند.
مرحله 2 – تنظيم فايل موجودي
فايل موجودي (Inventory) شامل اطلاعات مربوط به هاست هايي است كه با Ansible آنها را مديريت خواهيد كرد. شما مي توانيد از يك تا چند صد سرور مجازي در فايل موجودي خود داشته باشيد و هاست ها را مي توانيد در گروه ها و زير گروه ها سازماندهي كنيد. فايل موجودي نيز اغلب براي تنظيم متغيرهايي مورد استفاده قرار مي گيرد كه فقط براي هاست يا گروه هاي خاص معتبر باشند ، تا در playbookها و قالب ها مورد استفاده قرار گيرند. برخي از متغيرها همچنين مي توانند بر نحوه اجراي يك playbook اثر بگذارند ، مانند متغير ansible_python_interpreter كه به زودي مشاهده خواهيم كرد.
براي ويرايش محتواي موجودي پيش فرض Ansible ، فايل / etc / ansible / hosts را با استفاده از ويرايشگر متن مورد نظر خود، در node كنترل Ansible باز كنيد:
$ sudo nano /etc/ansible/hosts
توجه: برخي از نصب هاي Ansible فايل موجودي پيش فرض را ايجاد نمي كنند. اگر اين فايل در سيستم شما وجود ندارد ، مي توانيد يك فايل جديد را در / etc / ansible / hosts ايجاد كنيد يا يك مسير موجودي سفارشي را با استفاده از پارامتر -i هنگام اجراي دستورات و playbooks تهيه كنيد.
فايل موجودي پيش فرض موجود توسط نصب Ansible شامل تعدادي مثال است كه مي توانيد از آنها به عنوان مرجع براي تنظيم موجودي خود استفاده كنيد. مثال زير گروهي را به نام [servers] با سه سرور مجازي مختلف در آن تعريف مي كند كه هر يك توسط يك نام مستعار مشخص شده اند: server1 ،server2 و server3. حتما IP هاي هايلايت شده را با آدرس هاي IP هاست هاي Ansible جايگزين كنيد.
/etc/ansible/hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113
[all:vars]
ansible_python_interpreter=/usr/bin/python3
زير گروهall: vars پارامتر هاست ansible_python_interpreter را تعيين مي كند كه براي همه هاست هاي موجود در اين موجودي معتبر خواهد بود. اين پارامتر اطمينان حاصل مي كند كه سرور مجازي راه دور به جاي / usr / bin / python (Python 2.7) از / usr / bin / python3 (Python 3) قابل اجرا استفاده مي كند كه در نسخه هاي اخير اوبونتو وجود ندارد.
پس از اتمام ، فايل را با فشار دادن CTRL + X سپس Y و ENTER ذخيره كرده و آن را ببنديد تا تغييرات خود را تأييد كنيد.
هر زمان كه مي خواهيد موجودي خود را بررسي كنيد ، مي توانيد اين دستور را اجرا كنيد:
$ ansible-inventory –list -y
خروجي شبيه به اين را خواهيد ديد ، اما زيرساخت سرور مجازي خود را مطابق با فايل موجودي خود تعريف مي كنيد:
Output
all:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}
اكنون كه فايل موجودي خود را پيكربندي كرده ايد ، همه چيز لازم براي آزمايش اتصال به هاست هاي Ansible خود را داريد.
مرحله 3 – آزمايش اتصال
پس از تنظيم فايل موجودي براي شامل شدن سرور مجازيهاي خود، زمان آن است كه بررسي كنيم آيا Ansible قادر به اتصال به اين سرور مجازيها و اجراي دستورات از طريق SSH است يا خير.
براي اين راهنما ، ما از حساب ريشه Ubuntu استفاده خواهيم كرد زيرا اين تنها حساب موجود به طور پيش فرض در سرور مجازي هاي تازه ايجاد شده است. اگر هاست هاي Ansible شما قبلاً يك كاربر sudo معمولي ايجاد كرده اند ، به شما توصيه مي شود كه به جاي ريشه از آن حساب استفاده كنيد.
براي مشخص كردن كاربر سيستم از راه دور مي توانيد از آرگومان -u استفاده كنيد. در صورت عدم ارائه ، Ansible سعي خواهد كرد كه به عنوان كاربر فعلي سيستم شما در node كنترل متصل شود.
از دستگاه محلي يا node كنترل Ansible خود اين دستور را اجرا كنيد:
$ ansible all -m ping -u root
اين دستورالعمل از ماژول داخلي پينگ Ansible براي انجام يك تست اتصال در همه nodes از موجودي پيش فرض شما ، به عنوان root استفاده مي كند. ماژول ping موارد زير را تست خواهد كرد:
آيا هاست ها در دسترس هستند.
آيا اعتبار SSH معتبري داريد؛
آيا هاست ها قادرند ماژول هاي Ansible را با استفاده از پايتون اجرا كنند.
شما بايد خروجي مشابه اين دريافت كنيد:
Output
server1 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
server2 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
server3 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
اگر اين اولين بار است كه از طريق SSH به اين سرور مجازيها وصل مي شويد ، از شما خواسته مي شود كه صحت هاست هايي را كه از طريق Ansible به آنها وصل مي شويد ، تأييد كنيد. وقتي از شما خواسته شد ، yes را تايپ كنيد و سپس براي تأييد ENTER را بزنيد.
هنگامي كه پاسخ “pong” را از هاست دريافت كرديد ، به اين معني است كه شما آماده اجراي دستورات و playbookهاي Ansible در آن سرور مجازي هستيد.
توجه: اگر نمي توانيد پاسخ موفقي از سرور مجازيهاي خود دريافت كنيد ، براي اطلاعات بيشتر در مورد نحوه اجراي دستورات Ansible با گزينه هاي مختلف اتصال ، راهنماي برگه تقلب Ansible ما را بررسي كنيد.
مرحله 4 – اجراي دستورات Ad-Hoc (اختياري)
پس از تأييد اينكه node كنترل Ansible شما قادر به برقراري ارتباط با هاست شماست ، مي توانيد دستورات ad-hoc و playbooks را روي سرور مجازي هاي خود اجرا كنيد.
هر دستوري كه معمولاً بر روي SSH از سرور مجازي راه دور اجرا مي كنيد مي تواند با Ansible در سرور مجازي هاي مشخص شده در فايل موجودي شما اجرا شود. به عنوان نمونه ، مي توانيد ميزان استفاده از ديسك را در همه سرورها با دستور زير بررسي كنيد:
$ ansible all -a “df -h” -u root
Output
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0
…
فرمان هايلايت شده df -h را مي توان با هر دستوري كه دوست داريد جايگزين كنيد.
همچنين مي توانيد ماژول هاي Ansible را از طريق دستورات ad-hoc ، مشابه آنچه قبلاً با ماژول ping براي آزمايش اتصال انجام داده ايم ، اجرا كنيد. به عنوان مثال ، در اينجا چگونگي استفاده از ماژول apt براي نصب جديدترين نسخه vim بر روي همه سرور مجازيهاي موجود در موجودي شما آورده شده است:
$ ansible all -m apt -a “name=vim state=latest” -u root
همچنين هنگام اجراي دستورات Ansible مي توانيد هاست هاي فردي و همچنين گروه ها و زير گروه ها را هدف قرار دهيد. به عنوان مثال ، به اين ترتيب شما مي توانيد uptime هر هاست در گروه سرور مجازيها را بررسي كنيد:
$ ansible servers -a “uptime” -u root
ما مي توانيم هاست هاي مختلفي را با جدا كردن آنها با دو نقطه مشخص كنيم:
$ ansible server1:server2 -m ping -u root
براي كسب اطلاعات بيشتر در مورد نحوه استفاده از Ansible ، از جمله نحوه اجراي playbooks براي اتوماسيون تنظيم سرور مجازي ، مي توانيد راهنماي مرجع Ansible ما را بررسي كنيد.
نتيجه
در اين راهنما ، شما Ansible را نصب كرديد و يك فايل موجودي را براي اجراي دستورات ad-hoc از يك node كنترل Ansible اجرا كرديد.
هنگامي كه تأييد كرديد كه قادر هستيد زيرساختهاي خود را از يك دستگاه كنترلر مركزي Ansible متصل كرده و كنترل كنيد ، مي توانيد هر دستور يا palybook مورد نظر را در مورد آن هاست اجرا كنيد. براي سرور مجازيهاي جديد ، playbook ستاپ اوليه سرور مجازي نقطه شروع خوبي است. همچنين مي توانيد نحوه نوشتن playbookهاي خود را با راهنماي ما در مورد مديريت پيكربندي 101: نوشتن كتابهاي Ansible بياموزيد.
براي كسب اطلاعات بيشتر در مورد نحوه استفاده از Ansible ، راهنماي كمكي در صفحه ما را ببينيد.
برچسب: ،