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

🔗مطالب مرتبط
می توانید مخزن مربوطه را در موارد زیر بیابید:
🐱🏍گیت هاب
می توانید با من در ارتباط باشید:
🧬لینکداین
رزومه 🧾
🚀 Ansible یک ابزار مدیریت پیکربندی قدرتمند است که می تواند برای تامین زیرساخت استفاده شود.
🛠️ تامین به فرآیند پیکربندی و راه اندازی سیستم ها یا زیرساخت های راه دور اشاره دارد.
📝 Ansible از Playbooks که با فرمت YAML نوشته شده اند برای تعریف وضعیت مطلوب زیرساخت استفاده می کند.
📦 Ansible ماژولهای داخلی بسیاری را برای انجام وظایف تامین، مانند نصب بستهها، پیکربندی تنظیمات شبکه، مدیریت کاربران و گروهها و موارد دیگر ارائه میکند.
واژه نامه
AAP: پلت فرم اتوماسیون Ansible
معرفی
فرض کنید یک برنامه دارید و باید آن را در سه یا چند محیط با پیکربندی خاص اجرا کنید.
تصور کنید که پیکربندی همه برنامهها به صورت دستی اجرا شود، آسان و قابل مدیریت است، اما در یک سازمان کوچک حداقل ده برنامه کاربردی خواهد داشت، این پیکربندی در هر سرور خستهکننده اما قابل مدیریت است.
اکنون فکر کنید در بیست برنامه کاربردی، مدیریت سریع و اعمال صحیح پیکربندی غیرقابل تصور است.
در آخرین بار، من با Ansible با استفاده از AAP کار کردم و بسیاری از مشکلات را در استقرار و به روز رسانی برنامه ها حل کردم.
گاهی اوقات ما اشتباه نمی کنیم فقط سرور تنظیمات زیرساخت مناسبی ندارد.
برای رفع همه اینها به چه چیزی نیاز داریم؟
ما از تابعی به نام renderize استفاده خواهیم کرد.
-
من می خواهم باور کنم که شما این مرحله را دارید.
ما باید از شیوه های خوب توسعه استفاده کنیم و همه سیستم را به طور کلی درک کنیم. شامل کد، پایگاه داده، سرور، تنظیمات … -
یک مخزن با برنامه ایجاد کنید. من برنامه را به کد فراخوانی می کنم.
فرض کنید این به عنوان “repo-app” نامیده می شود. -
یک مخزن با مقادیر پیکربندی توسط هر محیط ایجاد کنید.
فرض کنید این به عنوان “repo-config” نامیده می شود. -
یک مخزن با پیکربندی کد 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 } }"
تشکر کنید، لایک کنید و اگر مفید بود/علاقه داشتید به اشتراک بگذارید 😁🖖