سیستم OpenStack به دلیل ماژولار بودن، از اجزای مختلفی تشکیل شده است. از آن جایی که OpenStack متن باز است، افراد میتوانند بنا به نیاز خود ماژولی را به آن اضافه کنند. البته جامعه OpenStack ماژول های زیر را به عنوان اجزا اصلی (یا هسته) در نظر گرفته است که به طور رسمی توسط این جامعه توسعه داده میشوند. این اجزا به شرح زیر می باشند:
داشبورد گرافیکی و تحت وب OpenStack است. این سرویس اولین مولفه ای است که کاربر OpenStack از این مجموعه میبیند. توسعهدهندگان میتوانند به طور انفرادی به تمام مؤلفههای OpenStack از طریق واسطهای برنامه نویسی API دسترسی داشته باشند. ولی داشبورد این امکان را به مدیر سیستم میدهد تا به صورت گرافیکی متوجه شود که در ابر چه میگذرد و به صورت گرافیکی با API تعامل کند.
سرویس احراز هویتOpenStack می باشد. به طور ابتدایی میتوان گفت که این سرویس شامل لیستی از تمام کاربران OpenStack است که روی تمام سرویسهای ارائه شده توسط OpenStack نگاشت شده است و اجازهی دسترسی را صادر میکند. این سرویس از ابزارهای دسترسی گوناگونی پشتیبانی میکند، بدین ترتیب توسعه دهندگان میتوانند روشهای موجود دسترسی کاربران خود را با آن همگن کنند. ولی Keystone به صورت پیش فرض از مکانیزم User/Pass جهت احراز هویت استفاده می کند.
این سرویس کار مدیریت Imageهایی که سیستم عامل ها از طریق آن ها launch می شوند را انجام می دهد.در این متن منظور از Image کپی مجازی هارد دیسک است که شامل سیستم عامل پایه با تنظیمات خاصی است که نمونههای جدید از روی آن ساخته میشوند. وظیفهی این سرویس فراهم کردن این imageها در فرآیند ایجاد ماشین ها یا instanceهای جدید می باشد.
قابلیت شبکه بندی را برای OpenStack فراهم میکند. این سرویس این اطمینان را میدهد که تمام مؤلفههای OpenStack میتوانند به صورت کارآمد و سریع با یکدیگر ارتباط برقرار کنند. این سرویس از زیرساخت SDN جهت شبکه سازی استفاده می کند.
موتور اصلی پردازشی OpenStack است. این سرویس به منظور استقرار و مدیریت تعداد زیادی ماشین مجازی بکار میرود و بدین ترتیب عملیات رایانشی را مدیریت میکند و همچنین می تواند با hypervisorهای مختلف مجتمع شود ولی به طور پیش فرض OpenStack از KVM به عنوان hypervisor استفاده می کند.
سرویس ذخیرهسازی بلوکی داده است. این سرویس بسیار شبیه سرویسهای سنتی است که در آن جهت دسترسی به فایل بایستی به مکان مشخص آن روی هارد دیسک اشاره شود. این روش سنتی دسترسی ممکن است در سناریوهای خاصی که در آن سرعت دسترسی به داده از اهمیت بالایی برخوردار است مفید باشد. توسط این سرویس می توان volumeهای جدید را ایجاد کرده و به ماشین های ساخته شده الحاق کرد و همچنین از ماشین و volume می توان snapshot تهیه کرد. این سرویس به طور پیش فرض از LVM استفاده می کند ولی می تواند از راهکار های ذخیره سازی مبتنی بر نرم افزار دیگر مانند GlasterFS و یا Ceph استفاده کند.
سیستم ذخیره سازی اشیا و فایلهاست. بجای ایده سنتی ارجاع فایلها توسط مکان فیزیکی آنها روی هارد دیسک، توسعه دهندگان میتوانند به یک شناسه منحصربفرد فایل یا تکیهای از اطلاعات ارجاع کنند و اجازه دهند OpenStack تصمیم بگیرد که این داده در کجا ذخیره شود. این سیستم فایل ها را همچنین بدون هیچ metadata اضافه ای ذخیره می کند. این ویژگی ها سبب میشود تا فرآیند مقیاس پذیری سادهتر شود، بدین صورت که توسعه دهندگان دیگر نیاز نیست نگران ظرفیت یک سیستم واحد پشت نرمافزارشان باشند. و این اجازه را میدهد که سیستم، به جای توسعه دهنده، نگران این باشد که آیا از داده به بهترین شکل پشتیبان تهیه شده است که در صورت خرابی یک ماشین یا اتصال شبکه از بین نرود.
سرویس اندازهگیری در محیط OpenStack است. به کمک خروجیهای تولید شده توسط این سرویس، که توسط نمونه هایی که از هر منبع به دست می آید، این امکان برای ارائه کنندگان فراهم میشود تا میزان مصرف کاربران از منابع ابر را مانیتور کنند. این میزان به تفکیک هر مؤلفه خواهد بود. در نهایت به کمک یک سرویس ثانویه امکان صدور صورتحساب برای کاربران و مشتریان فراهم میگردد.
سرویس هم نواسازی و خودکارسازی در محیط OpenStack است. به کمک این سرویس توسعه دهندگان میتوانند نیازمندیهای منبع برنامهی کاربردی خود را در یک فایل تعریف کنند و مدیریت تخصیص این منابع به صورت خودکار صورت پذیرد. همچنین از این فایل می توان جهت مقایس پذیری و launchکردن پشته ای از ماشین های مجازی استفاده کرد.