این نوشته، اولین پست برای شروع کار با ansible است. نوع نوشتار به صورت خلاصه و تکنیکی می باشد که برای متخصصان DevOps مناسب می باشد.

برنامه ansible، به طور خیلی خلاصه، یک برنامه مدیریت ساختار و تنظیمات روی زیرساخت های مختلف می باشد. برای آشنایی با یک سری کلمات کلیدی شروع می کنیم.

یک سند، برای اجرا یک یا چند دستور، بر روی یک یا چند نود تولید می شود.

یک سند می تواند به عنوان یک رول، برای گروهی از هاست ها اجرا شود.

اسناد به ترتیب بالا تا پایین آن ها روی نودهای اجرا می شوند.

برای مثال:

---
- name: Start the Play          # describes WHAT we are doing
- hosts: all # one or more group or host patterns
    order: sorted # Host order: value can be 'inventory' ie as is in the inventory file, reverse_inventory, sorted (alpha), reverse_sorted, shuffle (random)
    remote_user: yourname # or root This property was called user before Ansible 1.4
    become: yes # optional
    become_user: postgres # optional
    gather_facts: False
    order: inventory # Default
    connection: local or network_cli
    serial: 1 OR 30%
    max_fail_percentage
    strategy: free
    any_errors_fatal: True

where:

--- separates play

host

مشخص کننده دیوایس هدف است. تعریف بیشتر از یک هاست یا گروه یا قالب نام را که با نام های تعریف شده در inventory تعریف شده، مطابقت داشته باشند، را می توان با کاما از هم جدا نمود.

متغییرهای ارتباطی remote_user, become and become_user

متغییر remote_user مشخص کننده نام کاربری پیش فرض ریموت برای لاگین است.

متغییر gather_facts مشخص کننده این است اطلاعات دیوایس ریموت را جمع آوری کند یا خیر.

متغییر become و become_user تعیین کننده نحوه دسترسی کاربر در دیوایس ریموت است

order

این متغییر تعیین کننده ترتیب اجرا دستورات روی هاست ها است. پیش فرض آن به ترتیب چیده شدن در inventory هست. مقادیر زیر، مقادیر معتبر هستند:

  • inventory: مقدار پیش فرض هست که طبق چیدمان در فایل های inventory اجرا می کند
  • reverse_inventory: همانند گزینه قبلی یا این تفاوت که ترتیب فایل های inventory را بر عکس اجرا می کند
  • sorted: ترتیب اجرا براساس نام هاست ها به صورت الفبایی می شود.
  • reverse_sorted: ترتیب اجرا براساس نام هاست ها به صورت از آخر به اول الفبایی می شود.
  • shuffle: ترتیب اجرا تصادفی می شود.
  • max_fail_percentage: ترتیب اجرا براساس درصدی از هاست هایی که با خطا مواجه شده اند می باشد.
  • strategy: ترتیب اجرا براساس هاست هایی هست که سریعتر اجرا می شوند.
  • serial: بدین وسیله می توان تعداد هاست هایی که به صورت همزمان اجرا روی آن ها صورت پذیرد را مشخص نمود. مقدار batch زیرمجموعه ای از هاست ها که اجرا روی آنها قبل از مجموعه بعدی شروع شوند را شروع می کند. همچنین می توان به این متغییر مقدار به صورت درصدی داد که مشخص می کند نسبت تعداد هاستی که در اجرا می باشند به نسبت تعداد هاستی که اجرا شده اند را.
  • any_errors_fatal: با این مقدار، هر خطایی روی هر هاستی رخ بده انسیبل آن را وخیم تلقی کرده و بدون در نظر گرفتن مابقی هاست ها، از روند اجرا خارج می شود.

به عنوان نمونه

---
- name: Start the Play          # describes WHAT we are doing
  hosts: application            # describes WHERE we are doing it (e.g. against all application hosts)
  become: false                 # describes HOW we are doing it (with priviledge escalation, by gather facts, serial batches, etc)
  gather_facts: true
  serial: 10

  vars:
    app_path: /opt/app

  environment:
    PATH: /my/folder:

  pre_tasks:

  roles:

  tasks:

  post_tasks:

Playbook

یک فایل که شامل یک یا بیشتر اجرا می باشد.

---
- name: Start the first Play    # describes WHAT we are doing
  hosts: application            # describes WHERE we are doing it; what target hosts
  become: false                 # describes HOW we are doing it (with priviledge escalation, by gather facts, serial batches, etc)
  gather_facts: true
  serial: 10

  # vars, environment, pre_tasks, roles, tasks, post_tasks, etc.

- name: Start the second Play
  hosts: webservers
  become: true
  gather_facts: false
  serial: 5

  # vars, environment, pre_tasks, roles, tasks, post_tasks, etc.

Role

role-foobar/
├── defaults
   └── main.yml
├── vars
   └── main.yml
├── files
|   └── foobar.txt
├── handlers
   └── main.yml
├── meta
   └── main.yml
├── tasks
   └── main.yml
└── templates
    └── foobar.conf.j2
برچسب ها: linux ansible