برنامه نویسی

نحوه پیکربندی چندین محیط با Ansible Automation Platform


🔗مطالب مرتبط

می توانید مخزن مربوطه را در موارد زیر بیابید:

🐱‍🏍گیت هاب

می توانید با من در ارتباط باشید:

🧬لینکداین


رزومه 🧾

🚀 Ansible یک ابزار مدیریت پیکربندی قدرتمند است که می تواند برای تامین زیرساخت استفاده شود.

🛠️ تامین به فرآیند پیکربندی و راه اندازی سیستم ها یا زیرساخت های راه دور اشاره دارد.

📝 Ansible از Playbooks که با فرمت YAML نوشته شده اند برای تعریف وضعیت مطلوب زیرساخت استفاده می کند.

📦 Ansible ماژول‌های داخلی بسیاری را برای انجام وظایف تامین، مانند نصب بسته‌ها، پیکربندی تنظیمات شبکه، مدیریت کاربران و گروه‌ها و موارد دیگر ارائه می‌کند.


واژه نامه

AAP: پلت فرم اتوماسیون Ansible


معرفی

فرض کنید یک برنامه دارید و باید آن را در سه یا چند محیط با پیکربندی خاص اجرا کنید.

تصور کنید که پیکربندی همه برنامه‌ها به صورت دستی اجرا شود، آسان و قابل مدیریت است، اما در یک سازمان کوچک حداقل ده برنامه کاربردی خواهد داشت، این پیکربندی در هر سرور خسته‌کننده اما قابل مدیریت است.

اکنون فکر کنید در بیست برنامه کاربردی، مدیریت سریع و اعمال صحیح پیکربندی غیرقابل تصور است.

در آخرین بار، من با Ansible با استفاده از AAP کار کردم و بسیاری از مشکلات را در استقرار و به روز رسانی برنامه ها حل کردم.

گاهی اوقات ما اشتباه نمی کنیم فقط سرور تنظیمات زیرساخت مناسبی ندارد.


برای رفع همه اینها به چه چیزی نیاز داریم؟

ما از تابعی به نام renderize استفاده خواهیم کرد.

  1. من می خواهم باور کنم که شما این مرحله را دارید.
    ما باید از شیوه های خوب توسعه استفاده کنیم و همه سیستم را به طور کلی درک کنیم. شامل کد، پایگاه داده، سرور، تنظیمات …

  2. یک مخزن با برنامه ایجاد کنید. من برنامه را به کد فراخوانی می کنم.
    فرض کنید این به عنوان “repo-app” نامیده می شود.

  3. یک مخزن با مقادیر پیکربندی توسط هر محیط ایجاد کنید.
    فرض کنید این به عنوان “repo-config” نامیده می شود.

  4. یک مخزن با پیکربندی کد ansible ایجاد کنید.
    فرض کنید این به عنوان “repo-ansible” نامیده می شود.


در برنامه repo به چه چیزی نیاز داریم؟

در فایل هایی که پیکربندی خاص هر محیط مانند پایگاه داده توسعه، qa و master وجود دارد. یا مقادیری برای پیکربندی Auth0.
فایل ها می توانند هر فرمتی داشته باشند، به عنوان مثال: json، yaml، xml و غیره.

ما فایل هایی را در جایی می نویسیم:

# appsetings.json
{
  "API": {
    "Endpoint": "**Endpoint-develop**"
  },
  "reCaptcha": {
    "SiteKey": "**SiteKey-develop**",
    "SecretKey": "**SecretKey-develop**",
    "Score": **Score-develop**,
  },  
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مقادیر مجموعه قرار داده شده تنظیم شده است { { NAME_VARIABLE } }، مربع های کلیدی باید به هم بپیوندند:

# appsetings.json
{
  "API": {
    "Endpoint": "{ { Client.Endpoint } }"
  },
  "reCaptcha": {
    "SiteKey": "{ { Client.SiteKey } }",
    "SecretKey": "{ { Client.SecretKey } }",
    "Score": { { Client.Score } },
  },  
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در repo-config به چه چیزی نیاز داریم؟

هشدار: این مخزن ویژه است، بنابراین تمرکز خود را حفظ کنید. ما بین شعب ادغام یا تبلیغ نمی کنیم. ما با هر شعبه مستقل کار می کنیم.

در مورد من از یک فایل با فرمت yaml برای تنظیم مقادیر تنظیمات استفاده می کنم.

در اینجا مقادیری را تنظیم می‌کنیم و این مقادیر در سروری ظاهر می‌شود که در آن برنامه و مقادیری که با { { NAME_VARIABLE } } پیکربندی می‌کنیم، ظاهر می‌شوند:

---
# appsetings.yaml
Client:
  Endpoint: Endpoint-develop
  SiteKey: SiteKey-develop
  SecretKey: SecretKey-develop
  Score: Score-develop
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در ق:
مجموعه مقادیر وارد شده { { NAME_VARIABLE } }:

---
# appsetings.yaml
Client:
  Endpoint: Endpoint-qa
  SiteKey: SiteKey-qa
  SecretKey: SecretKey-qa
  Score: Score-qa
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در استاد:

---
# appsetings.yaml
Client:
  Endpoint: Endpoint-master
  SiteKey: SiteKey-master
  SecretKey: SecretKey-master
  Score: Score-master
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا می توانید برخی از اسرار رمزگذاری شده با طاق را قرار دهید و بعداً با اعتبارنامه AAP رندر می شود.

و فایل دیگری با مبدا و مقصد فایل ها برای رندرسازی:

---
# templates.yaml
templates:
  - origin: { { local_path } }/appsettings.json
    dest: { { dest_path } }/appsettings.json
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و تعداد زیادی مبدا و مقصد برای فایل ها اضافه کنید تا مقادیر را در سرور خود تنظیم کنید.


چه چیزی در repo-ansible نیاز داریم؟

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

وظایفی که برای رندر کردن برنامه باید از آنها استفاده کنیم عبارتند از:
توجه: تصور کنید از vars گروهی استفاده می کنیم.

---
# renderize.yaml
- name: Download app
  git:
    repo: "https://{ { repos.app.url } }"
    dest: "{ { repos.app.dir } }"
    version: "{ { repos.app.branch } }"
    force: no
  delegate_to: localhost
  run_once: true

- name: Download config
  git:
    repo: "https://{ { repos.config.url } }"
    dest: "{ { repos.config.dir } }"
    version: "{ { repos.config.branch } }"
    force: no
  delegate_to: localhost
  run_once: true

# TO WINDOWS
- name: Renderize templates in windows
  win_template:
    src: "{ { repos.app.dir } }/{ { item.origin } }"
    dest: "{ { item.dest } }"
  loop: "{ { templates } }"

# TO LINUX
- name: Renderize templates in linux
  template:
    src: "{ { repos.app.dir } }/{ { item.origin } }"
    dest: "{ { item.dest } }"
  loop: "{ { templates } }"

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


تشکر کنید، لایک کنید و اگر مفید بود/علاقه داشتید به اشتراک بگذارید 😁🖖


نوشته های مشابه

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

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

دکمه بازگشت به بالا