نصب خودکار بستههای نرمافزاری مورد نیاز یک کار عملیاتی رایج در playbookهای Ansible است، زیرا یک پشته نرمافزاری معمولاً به نرمافزارهای مختلف از منابع مختلف نیاز دارد.
ماژول apt مدیریت بستههای سیستمی در سیستمعاملهای مبتنی بر دبیان مانند اوبونتو است که در این راهنما روی گرههای راهدور از این توزیع استفاده میکنیم. playbook زیر کش apt را بهروزرسانی میکند و سپس اطمینان حاصل میکند که Vim روی گرههای راهدور نصب شده است.
یک فایل جدید به نام playbook-09.yml در پوشه ansible-practice خود ایجاد کنید:
nano ~/ansible-practice/playbook-09.yml
سپس خطوط زیر را به فایل playbook جدید اضافه کنید:
---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Vim is installed
apt:
name: vim
update_cache: yes
پس از اتمام کار، فایل را ذخیره و ببندید.
توجه داشته باشید که در ابتدای play، دستور become آوردهایم. این مورد لازم است چون نصب بستهها به سطح دسترسی ادمین نیاز دارد.
برای حذف یک بسته نیز به شکلی مشابه عمل میشود، تنها تفاوت این است که باید مقدار state را به absent تغییر دهید. مقدار پیشفرض state برابر با present است که اطمینان میدهد بسته روی سیستم نصب باشد، بدون توجه به نسخه آن. اگر بسته نصب نشده باشد آن را نصب میکند. برای اطمینان از نصب آخرین نسخه یک بسته، میتوانید مقدار latest را استفاده کنید. این باعث میشود apt در صورت قدیمی بودن نسخه بسته، آن را بهروزرسانی کند.
فراموش نکنید هنگام اجرای این playbook از گزینه -K استفاده کنید، چون به دسترسی sudo نیاز دارد:
ansible-playbook -i inventory playbook-09.yml -u sammy -K
Output
BECOME password:
PLAY [all] **********************************************************************************************
TASK [Gathering Facts] **********************************************************************************
ok: [203.0.113.10]
TASK [Update apt cache and make sure Vim is installed] **************************************************
ok: [203.0.113.10]
PLAY RECAP **********************************************************************************************
203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
هنگام نصب چند بسته، میتوانید از حلقه استفاده کنید و آرایهای شامل نام بستههای مورد نظر را ارائه دهید. playbook زیر اطمینان میدهد که بستههای vim، unzip و curl نصب شده و آخرین نسخه آنها موجود باشد.
یک فایل جدید به نام playbook-10.yml در پوشه ansible-practice روی نود کنترل Ansible خود بسازید:
nano ~/ansible-practice/playbook-10.yml
سپس محتوای زیر را به فایل playbook اضافه کنید:
---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Vim, Curl and Unzip are installed
apt:
name: "{{ item }}"
update_cache: yes
loop:
- vim
- curl
- unzip
پس از اتمام، فایل را ذخیره و ببندید.
سپس، با استفاده از همان آرگومانهای اتصال playbook را اجرا کنید و فراموش نکنید چون به دسترسی مدیریتی نیاز دارد گزینه -K را اضافه کنید:
ansible-playbook -i inventory playbook-09.yml -u sammy -K
خروجی مشابه زیر خواهید دید که نشان میدهد یک تسک به صورت سه بار روی مقادیر vim، curl و unzip انجام شده است:
Output
BECOME password:
PLAY [all] ***************************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************************
ok: [203.0.113.10]
TASK [Update apt cache and make sure Vim, Curl and Unzip are installed] **************************************************************************
ok: [203.0.113.10] => (item=vim)
ok: [203.0.113.10] => (item=curl)
changed: [203.0.113.10] => (item=unzip)
PLAY RECAP ***************************************************************************************************************************************
203.0.113.10 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
برای جزئیات بیشتر درباره مدیریت بستههای سیستمی، از جمله نحوه حذف بستهها و استفاده از گزینههای پیشرفته apt، میتوانید به مستندات رسمی مراجعه کنید.
از اینکه با جامعه پارمین کلود همراهید، سپاسگزاریم.
نظرات کاربران