Ansible basic tutorials

قسمت هفتم – نکات

  • درون فایل زیر می توان آدرس سرور ها یا سیستم هایی که قصد مدیریت ان ها توسط ansible را داریم، وارد کنیم. به عنوان نمونه :
cat /etc/ansible/hosts
[centos-servers]
192.168.1.100
192.168.1.101
192.168.1.102
centos.lab.local

[ubuntu-servers]
192.168.2.100
192.168.2.101
192.168.2.102
ubuntu.lab.local
  • نکته: گروه بندی سرور های ubuntu و centos مثال می باشد.
  • نکته: نام گروه ها را حتما باید داخل کروشه وارد کرد.
  • نکته: برای اشاره به سرور ها می توان از آدرس آی پی یا آدرس fqdn ان سرور استفاده کرد.

  • با استفاده از دستور زیر می توان لیست تمام هاست ها یا سرور هایی که قصد مدیریت آن ها را داریم، مشاهده کنیم :
$ ansible all --list-hosts
 hosts (2):
    192.168.1.100
    192.168.1.101
    192.168.1.102
    centos.lab.local
    192.168.2.100
    192.168.2.101
    192.168.2.102
    ubuntu.lab.local
  • هاست های نمایش داده شده از مسیر etc/ansible/hosts/ خوانده شده است.

  • با استفاده از دستور زیر می توان تنها تمام هاست ها یا سرور های یک گروه خاص را مشاهده کنیم :
ansible centos-servers --list-hosts
 hosts (2):
    192.168.1.100
    192.168.1.101
    192.168.1.102
    centos.lab.local
  • توجه داشته باشید که عبارت centos-servers مثال می باشد.

  • برای استفاده از یک ماژول خاص (به عنوان مثال ماژول ping) بر روی تمامی هاست ها و تمامی گروه ها به صورت زیر عمل می کنیم :
ansible all -m ping
  • با استفاده از این ماژول، تمام هاست ها پینگ می شود و خروجی به صورت کامل واضح و شفاف نمایش داده می شود. به عنوان مثال :
output
  • خروجی نمایش داده شده به صورت فرمت json می باشد.
  • همان طور که در خروجی مشاهده می کنید، عبارتی به عنوان changed آورده شده است که مشخص کننده این است که ایا تغییراتی بر روی هاست انجام شده است یا نه (با توجه به ماهیت ماژول ping ، تغییراتی بر روی هاست ها اعمال نشده است)

  • برای استفاده از یک ماژول خاص (به عنوان مثال ماژول command) بر روی تمامی هاست ها و تمامی گروه ها به صورت زیر عمل می کنیم :
ansible all -m command -a "ip a"
  • در مثال بالا با استفاده از سویچ m- از ماژول command استفاده کردیم.
  • با استفاده از این ماژول می توان دستوراتی را در درون هاست ها اجرا کرد.
  • این که چه دستوری را می خواهیم اجرا کنیم به خودمان مربوط است یعنی ماژول command تنها وظیفه اجرای دستوراتی که برایش تعیین شده است را بر عهده دارد.
  • دستوری که قرار است در هاست ها اجرا شود توسط سویچ a- مشخص شده است. (دستور ip a)
  • استفاده از عبارت all به معنی لحاظ کردن تمام هاست ها و گروه ها می باشد.
  • دستور بالا را می توان به صورت زیر نیز اجرا کرد. (یعنی نام ماژول command را وارد نکرد.)
ansible all -a "ip a"

  • در صورتی که قصد استفاده از پرمیشن روت را داشته باشید (برای اجرای دستوری که به این پرمیشن نیاز دارد) از سویچ s- می توان استفاده کرد.
ansible all -s -a "ls /root"
  • توجه داشته باشید که یوزری که قصد استفاده از آن را دارید باید در گروه sudo عضو شده باشد.

  • به منظور اجرای یک اسکریپت در درون هاست ها می توان از ماژول script به شکل زیر استفاده کرد :
ansible all -s -m script -a "/patch/of/script.sh"
  • در صورتی که اسکریپت شما نیاز به مجوز روت برای اجرا دارد، از سویچ s- استفاده کنید.

  • برای کپی کردن از ماژول copy به شکل زیر استفاده می کنیم :
ansible all -s -m copy -a "src=/home/test/file dst=/etc/"
  • چون آدرس دایرکتوری مقصد نیاز به پرمیشن روت دارد، لذا از سویچ s- استفاده کردیم.

  • برای ساخت فایل در درون هاست ها از ماژول file به شکل زیر اجرا می کنیم :
ansible all -m file -a "path=/tmp/file.txt state=touch"

  • ansible در دو نسخه تجاری یا tower و معمولی یا core وجود دارد.
  • نسخه tower برای محیط های عملیاتی بزرگ با تعداد هاست های بالا بوده و پنل تحت وب نیز دارا می باشد.
  • اما نسخه core دارای پنل تحت وب نمی باشد.
  • البته این به این معنی نیست که نمی توان از نسخه core در تعداد زیادی هاست یا محیط های عملیاتی استفاده کرد.

  • در خصوص سویچ ها و کارکرد ماژول های موجود در ansible می توان از وب سایت ansible به آدرس زیر استفاده کرد.
https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html
  • همان طور که مشاهده می کنید تعداد این ماژول ها بسیار زیاد است و حتی در شرایطی نیاز نیست تا بر روی تمام انان تسلط داشته باشیم.
  • روش دیگر برای مطالعه اطلاعات مربوط به هر ماژول استفاده از دستور ansible-doc است. به عنوان مثال :
ansible-doc copy

  • با استفاده از ماژول apt می توان بسته های ابزار های مختلفی را بر روی سیستم های debian base نصب کرد. به عنوان مثال :
ansible -m apt -s -a "name=elinks state=latest"
  • برای پاک کردن یک بسته کافیست که به جای عبارت latest از apsent استفاده شود.

  • با استفاده از ماژول yum می توان بسته های ابزار های مختلفی را بر روی سیستم هال redhat base نصب کرد. به عنوان مثال :
ansible -m yum -s -a "name=httpd state=latest"

  • برای مدیریت سرویس های مختلف در داخل هاست ها، از ماژول service به صورت زیر استفاده می کنیم :
ansible centos-server -s -m service -a "name=httpd state=start"
  • توجه داشته باشید که عبارت centos-server به عنوان گروه مطرح شده.
  • توجه داشته باشید که سرویس اشاره شده نام httpd را دارد.

  • برای ساخت کاربر در سیستم های هاست می توان از ماژول user به شکل زیر استفاده کرد :
ansible all -s -m user -a "name=test-user"
  • برای پاک کردن یوزر می توان به صورت زیر عمل کرد :
ansible all -s -m user -a "name=test-user state=absent"

  • برای دریافت اطلاعات در خصوص هاست ها می توان از ماژول setup به صورت زیر استفاده کرد.
ansible all -m setup
  • می توان دستور بالا را به صورت pipe به ابزار های دیگر مثل more یا grep تحویل داد.

  • در مثال گفته شده، تمامی هاست ها از پرونده اصلی از درون دایرکتوری etc خوانده شدند.
  • می توان فایلی را به عنوان لیست مربوط به هاست ها به صورت دستی به انسیبل وارد کرد. به عنوان مثال :
ansible -i list.txt -m setup
  • با استفاده از سویچ i- لیست مربوط به هاست ها از درون فایل list.txt خوانده می شود.

قسمت هشتم

  • توسط play book می توان دستور العمل هایی را پیاده سازی و توسط ان مدیریت هاست را انجام داد.
  • برای ایجاد play book ابتدا وارد مسیر زیر شوید :
/etc/ansible/
  • سپس یک دایکتوری با نام playbook ایجاد کنید.
  • در داخل این دایرکتوری، نام playbook ای که مد نظر دارید را به صورت زیر ایجاد کنید :
nano ping.yaml
--- # comment: this is a test play book
- name: my first playbook
  hosts: all
  remote_user: ansible
  become: yes # yes - no - true - false
  become_method: sudo
  connection: ssh
  gather_facts: yes # yes - no - true - false
  tasks:
  - name: run ping command
    ping:
...
  • نام playbook می تواند به صورت yaml یا yml ذخیره شود.
  • با استفاده از عبارت hosts مشخص کردیم که این play book برای چه هاست هایی اجرا شود.
  • با استفاده از عبارت remote_user مشخص کردیم که این play book با استفاده از چه کاربری بر روی هاست ها اجرا شود.
  • با استفاده از عبارت become مشخص کردیم که آیا نیاز به دسترسی روت برای این play book است یا نه
  • با استفاده از عبارت become_method مشخص کردیم که نحوه دسترسی داشتن به روت توسط ابزار sudo باشد.
  • با استفاده از عبارت connection مشخص کردیم که نحوه اتصال به هاست ها از طریق پروتکل ssh باشد.
  • انسیبل می تواند اطلاعاتی را از هاست ها دریافت کرده و آن را در قالب متغییر هایی معرفی کند. با استفاده از عبارت gather_facts مشخص کردیم که این اطلاعات جمع اوری شود.
  • در قسمت task ابتدا نام فعالیتی که می خواهیم انجام شود را به صورت دلخواه انتخاب می کنیم.
  • سپس نام ماژول ای که قصد استفاده از آن را داریم وارد می کنیم. به عنوان مثال ping
  • در جلوی اسم ماژول، اگر سویج یا آرگمانی نیاز باشد، وارد می کنیم.
  • در نهایت می توانیم playbook نوشته شده را به صورت زیر اجرا کنیم :
ansible-playbook ping.yaml
  • در زمان اجرای دستور بالا می توان از سویچ v- یا vv- برای مشاهده اطلاعات و جزییات بیشتر استفاده کرد.

  • مثالی دیگر برای playbook :
--- # comment: this is a test play book
- name: remove apache web server
  hosts: debian-servers
  remote_user: ansible
  become: yes # yes - no - true - false
  become_method: sudo
  connection: ssh
  tasks:
  - name: remove apache web server from debian servers
    yum:
     name: httpd
     state: apsent
...
  • مثالی دیگر برای playbook :
--- # comment: this is a test play book
- name: install apache web server
  hosts: debian-servers
  remote_user: ansible
  become: yes # yes - no - true - false
  become_method: sudo
  connection: ssh
  tasks:
  - name: Task1 - install apache web server from debian servers
    yum: name=httpd state=latest
  - name: Task2 - start apache web server
    service: name=httpd state=started
  - name: create test file in web server
    file: state=touch path=/var/www/html/index.html
  - name: insert to index file
    lineinfile:
     state: present
     dest: /var/www/html/index.html
     line: "This is my web server"
...

  • مثالی دیگر در خصوص play book :
---
- hosts: ubuntu-server
  become: yes
  tasks:
  - name: install elinks in ubuntu systems
    apt: name=elinks state=latest
  • همان طور که مشاهده می کنید تعداد x کمتری را استفاده کردیم.
  • در مثال بالا با استفاده از ماژول apt به نصب نرم افزار elink پرداختیم.
  • با استفاده از کلمه latest در قسمت state مشخص کردیم که آخرین نسخه از این نرم افزار نصب شود.
  • نحوه اجرای این playbook :
ansible-playbook test.yaml

  • مثالی دیگر :
---
- hosts: ubuntu-server
  user: ansible
  sudo: yes
  become: yes
  tasks:
  - name: install elinks in ubuntu systems
    apt: name=elinks state=latest
  • در مثال بالا نحوه وارد کردن user و امکان استفاده از sudo را به شکلی دیگر وارد کردیم.
  • نحوه اجرای این playbook :
ansible-playbook test.yaml

  • مثالی دیگر :
---
- hosts: '{{my_hosts}}'
  become: yes
  vars:
   my_hosts: all
   com: whoami
  tasks:
  - name: use command module
    command: '{{com}}'
  • در مثال بالا از متغییر ها استفاده کردیم.
  • هر متغییر را باید درون ‘{{}}’ قرار دهیم.
  • نحوه مقدار دهی به متغیر ها را در قسمت vars مشخص کردیم.

  • مثالی دیگر :
---
- hosts: '{{my_hosts}}'
  become: yes
#  vars:
#   my_hosts: all
#   com: whoami
  tasks:
  - name: use command module
    command: '{{com}}'
  • در این مثال متغییر تعریف کردیم اما مقدار متغییر ها را مشخص نکردیم.
  • می توان مقدار دهی متغییر ها را در زمان اجرا مشخص کرد.
  • نحوه اجرای این playbook :
ansible-playbook variable.yaml --extra-vars "my_hosts=all com=whoami"

  • مثالی دیگر
---
- hosts: all
  become: yes
  serial: 1 # ejraye task ha be sorate hamzaman roye chanta system
  tasks:
  - name: use ping command
    ping:
  • در این مثال با استفاده از عبارت serial مقدار و ترتیب اجرای task ها بر روی هاست ها را مشخص کردیم.
  • به عنوان مثال با وارد کردن عدد ۳ این طور تعریف می شود که ابتدا روی ۳ تا هاست اول اجرا شود، سپس روی ۳تا هاست بعدی و …

قسمت نهم

  • مثالی از یک playbook که به صورت خلاصه نوشته شده است :
---
- hosts: all
  become: yes
  tasks:
  - name: run command
    command: whoami

  • در صورتی که یک playbook حاوی چندین task باشد و در صورتی که یکی از این task ها به مشکل برخورد، اجرای playbook متوقف می شود.
  • برای این که این مورد اتفاق نیوفتد می توان از عبارت ignore_errors به شکل زیر استفاده کرد :
---
- hosts: all
  become: yes
  tasks:
  - name: run script
    script: /root/test.sh
    ignore_errors:
  - name: run command
    command: whoami
  • حال در صورتی که در task اول خطایی رخ دهد، playbook متوقف نمی شود و task های بعدی اجرا می شوند.

  • به استفاده از قابلیت no_log می توان خروجی موفق یا خطای task را مخفی کرد.
  • به عنوان مثال :
---
- hosts: all
  become: yes
  no_log: true # or yes
  tasks:
  - name: run command
    command: whoami

مانده


قسمت دهم

  • در مثال های قبل چندین task را به صورت پشت سر هم اجرا می کردیم و اصطلاحا عمل debug یا خطایابی در task ها را انجام نمی دادیم.
  • این قابلیت وجود دارد که اجرای یک task مشروط به اجرای موفقیت آمیز یک شرط دیگر باشد.
  • به عنوان مثال فرض کنید یک playbook حاوی دو task زیر می باشد :
    • نصب بسته apache
    • فعال سازی سرویس apache
  • می خواهیم طوری playbook را بنویسیم که در صورتی که نصب بسته با موفقیت انجام شد، فعال سازی سرویس صورت گیرد.
  • برای این منظور :
---
- hosts: all
  become: yes
  tasks:
  - name: install apache web server
    yum: name=httpd state=latest
    notify:
    - startservice
  handlers:
  - name: startservice
    service: name=httpd state=started
  • در نهایت برای اجرا :
ansible-playbook my_play_book.yaml

  • با استفاده از قابلیت register می توان خروجی یک task مشخص را داخل یک متغیر ریخت
  • همچنین با استفاده از قابلیت debug می توان محتویات متغیر را مشاهده کرد.
  • به عنوان مثال در playbook نوشته شده در زیر از ماژول ping استفاده می کنیم و خروجی ماژول را داخل متغییری با نام result میریزیم.
  • در نهایت محتویات متغییر result را می خوانیم.
  • برای این منظور :
---
- hosts: all
  become: yes
  tasks:
  - name: use ping module
    ping:
    register: result
  - debug: var=result
  • جهت اجرا :
ansible-playbook my_play_book.yaml

  • مثالی دیگر از قابلیت debug
  • در مثال زیر در صورتی که task موفقیت آمیز اجرا شود، یک پیغام چاپ خواهد شد.
---
- hosts: all
  become: yes
  tasks:
  - name: use ping module
    ping:
  - debug:
     msg: run ping module
  • برای اجرا :
ansible-playbook my_play_book.yaml

  • مثال: گفتیم به صورت پیشفرض اطلاعاتی از هاست ها دریافت می شود و این اطلاعات در داخل متغییر هایی ریخته می شود.
  • در مثال زیر از یکی از این متغییر ها یعنی متغییر ansible_default_ipv4.gateway استفاده می کنیم.
---
- hosts: all
  become: yes
  tasks:
  - name: get default gateway from ansible facts
    debug: msg="The default gw in this server is {{ansible_default_ipv4.gateway}}"
  • در نهایت به صورت زیر اجرا می کنیم :
ansible-playbook my_play_book.yaml
  • نتیجه ی اجرای playbook بالا این میشود که اطلاعات جامعی از هاست ها دریافت شده اما تنها متغیر ansible_default_ipv4.gateway چاپ می شود.

  • گفتیم که اطلاعات جامعی از هاست ها جمع آوری و درون متغیر ریخته می شود.
  • برای این که کلیه متغیر ها همراه با اطلاعات درون آن ها را مشاهده کنیم به صورت زیر عمل کنید :
ansible all -m setup
  • نام متغییر های نمایش داده شده در تمام هاست ها و نود ها یکی می باشد.

  • در زمان استفاده از قابلیت debug می توان مشخص نمود که تنها خروجی ارور یا تنها خروجی موفقیت آمیز چاپ شود.
  • برای این منظور :
---
- hosts: all
  become: yes
  tasks:
  - name: use command module
    command: echo 'hi'
    register: myvar
  - debug: msg="stdout = {{myvar.stdout}}"
  - debug: msg="stdout = {{myvar.stderr}}"
  • در مثال بالا خروجی دستور echo در درون متغیر myvar ریخته می شود. خواه این خروجی خطاوار باشد خواه موفقیت آمیز
  • اما در قسمت debug یک بار مشخص کردیم که تنها خروجی موفقیت آمیز نمایش داده شود. (myvar.stdout)
  • همچنین یک بار دیگر نیز مشخص کردیم که تنها خروجی خطاوار نمایش داده شود. (myvar.stderr)

قسمت یازدهم

  • با استفاده از قابلیت when_condition می توان شروطی را زبان yaml یا پرونده playbook ایجاد کرد.
  • به عنوان مثال : می خواهیم task مربوط به نصب یک برنامه، تنها در صورتی اجرا شود که سیستم عامل هاست توزیع centos باشد.
  • برای این منظور :
---
- hosts: all
  become: yes
  tasks:
  - name: install elinks
    yum: name=elink state=latest
    when: ansible_os.family == "RedHat"
  • در مثال بالا از متغیرهای ماژول ansible facts استفاده کردیم.

  • مثالی دیگر : می خواهیم playbook ای تهیه کنیم که در صورتی که سیستم عامل هاست از نوع centos بود پیغامی مبنی بر centos بودن آن نمایش دهد. و همچنین اگر سیستم عامل هاست از نوع debian بود، پیغامی مبنی بر debian بودن آن نمایش دهد.
  • برای این منظور :
---
- hosts: all
  become: yes
  tasks:
  - debug: msg="host is centos"
    when: ansible_distribution="CentOS"
  - debug: msg="host is debian"
    when: ansible_distribution="Debian"

  • می توان حلقه هایی را در پرونده playbook به صورت زیر ایجاد کرد.
  • برای این منظور :
---
 - hosts: all
   become: yes
   tasks
   - name: create multi files
     file: state=touch path=/var/log/{{item}}
     with_items:
      - file1
      - file2
      - file3
  • در مثال بالا از ماژول file به منظور ایجاد فایل استفاده کردیم.

  • مثالی دیگر از حلقه : نصب دو بسته با استفاده از حلقه
  • برای این منظور :
---
 - hosts: all
   become: yes
   tasks:
   - name: install httpd and elinks
     yum: name={{item}} state=latest
     with_items:
      - elinks
      - httpd
  • همان طور که مشاهده می کنید بسته های elinks و httpd نصب در نظر گرفته شده است.

  • مثالی دیگر :
---
 - hosts: all
   become: yes
   tasks:
   - debug: msg="{{item}}"
     with_file;
      - /etc/ansible/playbook/file1
      - /etc/ansible/playbook/file2
  • در مثال بالا از متغیر item استفاده کردیم سپس با استفاده از with_file مشخص کردیم که محتویات متغییر item از درون فایل های file1 و file2 خوانده شود.

قسمت دوازدهم

  • ماژول template
  • با استفاده از ماژول template می توان فایل های پیکربندی یک سرویسی که از قبل به طور کامل پیکربندی شده است را به دیگر ماشین ها و هاست ها منتقل کرد.
  • پسوند پرونده های ماژول template با نام j2 مشخص می شوند. به عنوان مثال apache.j2
  • امکان استفاده از متغیر درون پرونده های j2 وجود دارد.
  • یعنی هر قسمت از پرونده ی پیکربندی که قصد تغییر آن را داشته باشیم، می توان متغیر تعریف کرد.
  • برای تعریف متغیر به شکل زیر عمل کنید :
{{webmaster}}
  • در مرحله بعد نیاز است یک فایل playbook ایجاد شود و در درون آن متغیرهایی که تعیین کردیم با مقادیر آن ها آورده شود.
  • در نهایت کافیست فایل playbook به شکل زیر باشد :
---
- hosts: centos-server
  become: yes
  vars:
   webmaster: admin@loca.lan
  tasks:
  - name: install apache
    yum: name=httpd state=latest
  - name: set config
    template: src=/etc/ansible/playbook/apache.j2 dest=/etc/httpd/conf/httpd.conf
  • در نهایت کافیست از دستور ansible-playbook به شکل زیر استفاده نمود
ansible-playbook template.yaml
  • با استفاده از ماژول unarchive می توان فایلی را از اینترنت دانلود و در مسیری قرار داد. همچنین امکان extracrt کردن آن نیز وجود دارد.
  • به عنوان مثال :
- name: download and extract wordpress
  unarchive:
   src: https://123.456/789.zip
   dest: /tmp/
   remote_src: true

کامل دیده شد ؟ بله

کامل منتقل شد ؟ بله


قسمت ۱۳

  • role ها خود یک playbook هستند که می توانند درون یک playbook اصلی مورد استفاده قرار بگیرد.
  • به جای این که یک فایل playbook مفصل متشکل از تعدادی زیادی task و template و … ایجاد کنیم، می توانیم یک پوشه هایی با دسته بندی های مشخصی ایجاد کنیم.
tasks
handlers
vars
template
files
meta
defaults
  • تمامی playbook های قرار گرفته درون پوشه‌ی meta به عنوان پیش نیاز در زمان اجرای playbook اصلی در نظر گرفته می شود. یعنی با اجرای playbook اصلی ابتدا playbook های درون این پوشه اجرا می شوند.
  • به عنوان مثال برای start کردن سرویس apache نیاز است تا ابتدا این سرویس نصب باشد. لذا playbook مربوط به نصب این سرویس می تواند در درون این پوشه قرار بگیرد.
  • در درون دایرکتوری defaults می توان playbook هایی حاوی متغیر های عمومی یا global در نظر گرفت.
  • به عنوان مثال :
template tasks
  • به مثال در پوشه جاری، پوشه ای با نام roles ایجاد کنید سپس وارد آن شوید :
# mkdir roles
# cd roles
  • سپس پوشه ای با نام playbook اصلی خود (به عنوان مثال install_apache) ایجاد کنید :
# mkdir install_apache2
# cd install_apache2
  • سپس دایرکتوری های اصلی را ایجاد کنید.
# mkdir handlers tasks
  • انتخاب این که چه دایرکتوری ای باید ساخته شود، متناسب با سناریو دارد.
  • در این مثال انتخاب دایرکتوری های tasks و handlers مثال بوده و می توان از ساخت آن ها در دیگر مثال ها صرف نظر کرد.
  • سپس داخل پوشه‌ی tasks شوید و playbook مربوطه را ایجاد کنید :
# touch tasks/playbook.yaml
# nano tasks/playbook.yaml

---
- name: install apache
  yum: name=httpd state=latest
  notify:
  - start_service
  • سپس داخل پوشه‌ی handlers شوید و playbook مربوطه را ایجاد کنید :
# touch handlers/playbook.yaml
# nano handlers/playbook.yaml

---
- name: start_service
  service: name=httpd state=started
  • پیشنهاد می شود برای مشاهده ساختار درختی پوشه ها و فایل های ایجاد شده از دستور tree استفاده شود.
  • در نهایت می توان playbook اصلی را ایجاد کرد و درون آن به playbook هایی که قبلا ایجاد کردیم، اشاره کرد.
  • برای این منظور به یک دایرکتوری قبل برگردید ک
# cd ..
  • سپس فایلی را با نام roles.yaml ایجاد کنید :
touch roles.yaml
nano roles.yaml

---
- hosts: centos-server
  roles:
  - install_apache
  • در نهایت کافیست playbook اصلی را به شکل زیر اجرا کنید :
# ansible-playbook roles.yaml
  • کامل دیده شد ؟ بلهکامل منتقل شد ؟ بله

قسمت 14

  • مجموعه ای از role ها درون یک مخزن با نام ansible galaxy قرار گرقته است که می توان از آن ها به راحتی استفاده نمود.
  • برای استفاده از این مخزن به آدرس زیر مراجعه کنید :
https://galaxy.ansible.com/home
  • برای مشاهده role های دریافت شده از مخزن و موجود بر روی سیستم کافیست :
ansible-galaxy list
  • در قسمت قبل در خصوص استفاده و ساخت role ها توضیح داده شد.
  • برای این که ساخت پوشه ها و پرونده های yaml به صورت خودکار انجام گیرد. می توان از دستور ansible-galaxy به صورت زیر استفاده کرد :
ansible-galaxy init webserver
  • پرونده های ایجاد شده به صورت خام هستند.
  • برای مشاهده اطلاعات و جزییات در خصوص یک role به صورت زیر عمل می کنیم :
ansible-galaxy info webserver
  • در صورتی که role مورد نظر حاوی اطلاعات باشد، در خروجی دستور بالا نمایش داده می شود.
  • برای سرچ درون مخزن به صورت زیر عمل کنید :
ansible-galaxy search httpd
  • برای نصب یک role از مخزن به صورت زیر عمل کنید ک
ansible-galaxy install damienlagae.httpd
  • تا دقیقه ی 17.12 دیده شد.
  • کامل دیده شد ؟
  • کامل منتقل شد ؟

  • قسمت ۱۵
  • منظور و مفهوم از ansible vault چیست ؟ با استفاده از این قابلیت و این ابزار می توان فایل های حساس مثل فایل های حاوی رمز رو رمز نگاری کرد.
  • Ansible Vault is a feature of ansible that allows you to keep sensitive data such as passwords or keys in encrypted files, rather than as plaintext in playbooks or roles

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *