سوالات مکرر پرسیده می شود uf0c1

ساخت وبلاگ

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

همه ماژول ها کجا رفتند؟

در ژوئیه سال 2019 ، ما اعلام کردیم که مجموعه ها آینده تحویل محتوای قابل اعتماد هستند. یک مجموعه یک قالب توزیع برای محتوای قابل اعتماد است که می تواند شامل کتاب های پخش ، نقش ها ، ماژول ها و افزونه ها باشد. در Ansible 2. 9 ما پشتیبانی از مجموعه ها را اضافه کردیم. در Ansible 2. 10 ما بیشتر ماژول ها را از مخزن اصلی/غیر قابل حمل استخراج کردیم و آنها را در مجموعه ها قرار دادیم. مجموعه ها ممکن است توسط تیم Ansible ، توسط جامعه Ansible یا شرکای قابل اعتماد نگهداری شوند. مخزن Ansible/Ansible اکنون حاوی کد برای ویژگی ها و توابع اساسی مانند کپی کردن کد ماژول در گره های مدیریت شده است. این کد همچنین به عنوان هسته Ansible شناخته می شود (به طور خلاصه برای نسخه 2. 10 به نام Ansible-Base نامیده می شد).

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

این ماژول خاص کجا رفت؟

اگر در حال جستجوی یک ماژول خاص هستید ، می توانید پرونده Runtime. yml را بررسی کنید ، که اولین مقصد برای هر ماژولی را که ما از مخزن اصلی/غیر قابل حمل استخراج می کنیم ، لیست می کند. از آن زمان برخی از ماژول ها دوباره حرکت کرده اند. همچنین می توانید در مورد کهکشان Ansible جستجو کنید یا در یکی از کانال های چت ما سؤال کنید.

چگونه می توانم در سیستم هایی با دیسک های آهسته Ansible سرعت بگیرم؟

Ansible ممکن است در سیستم هایی با دیسک های آهسته مانند Raspberry Pi احساس کندی کند. اگر LibyAML برای نکات مربوط به نحوه بهبود این امر در دسترس نیست ، ممکن است Ansible کند باشد.

چگونه می توانم مسیر یا هر متغیر محیط دیگر را برای یک کار یا کل بازی تنظیم کنم؟

تنظیم متغیرهای محیط را می توان با کلمه کلیدی محیط انجام داد. می توان در کار یا سایر سطوح نمایشنامه استفاده کرد.

پوسته: CMD: تاریخ محیط: lang = fr_fr. utf-8 
میزبان: سرور محیط: مسیر: " ansible_env. path >>:/چیز/سطل " مقداری: ارزش 

با شروع از 2. 0. 1 کار تنظیمات از grate_facts همچنین دستورالعمل محیط را از نمایشنامه به ارث می برد ، ممکن است لازم باشد از فیلتر | پیش فرض استفاده کنید تا در صورت تنظیم این سطح در سطح بازی ، از خطاها جلوگیری کنید.

چگونه می توانم ماشین های مختلفی را که به حساب کاربری یا درگاه های مختلف نیاز دارند برای ورود به سیستم اداره کنم؟

تنظیم متغیرهای موجودی در پرونده موجودی ساده ترین راه است.

به عنوان مثال ، فرض کنید این میزبان ها نام های کاربری و بنادر مختلفی دارند:

[WebServers] asdf. example. com ansible_port=5000 ansible_user = آلیس jkl. example. com ansible_port=5001 ansible_user = باب 

در صورت تمایل می توانید نوع اتصال مورد استفاده را نیز دیکته کنید:

[TestCluster] localhost ansible_connection=محلی /مسیر/به/chroot1 ansible_connection=کرت foo. example. com ansible_connection=پراویکو 

همچنین ممکن است بخواهید این موارد را به جای آن در متغیرهای گروهی نگه دارید ، یا آنها را در یک گروه/ پرونده/ پرونده قرار دهید. برای اطلاعات بیشتر در مورد نحوه سازماندهی متغیرها ، به بقیه مستندات مراجعه کنید.

چگونه می توانم برای استفاده مجدد از اتصالات ، فعال کردن SSH Kerberize ، یا Ansible به پرونده پیکربندی محلی SSH خود توجه کنم؟

نوع اتصال پیش فرض خود را در پرونده پیکربندی به SSH تغییر دهید ، یا ا ز-C SSH برای استفاده از OpenSSH بومی برای اتصالات به جای کتابخانه Python Paramiko استفاده کنید. در Ansible 1. 2. 1 و بعد از آن ، SSH به طور پیش فرض استفاده می شود اگر OpenSSH به اندازه کافی جدید باشد تا از Controlpersist به عنوان گزینه پشتیبانی کند.

Paramiko برای شروع کار بسیار عالی است ، اما نوع OpenSSH گزینه های پیشرفته بسیاری را ارائه می دهد. اگر از این نوع اتصال استفاده می کنید ، می خواهید از یک دستگاه جدید به اندازه کافی جدید برای پشتیبانی از Controlpersist استفاده کنید. شما هنوز هم می توانید مشتری های قدیمی تر را مدیریت کنید. اگر از RHEL 6 ، CentOS 6 ، SLES 10 یا SLES 11 استفاده می کنید ، نسخه Openssh هنوز کمی قدیمی است ، بنابراین مدیریت را از یک مشتری Fedora یا OpenSUSE در نظر بگیرید حتی اگر شما گره های قدیمی را مدیریت می کنید ، یا فقط از Paramiko استفاده کنید.

ما Paramiko را به عنوان پیش فرض نگه می داریم که گویی برای اولین بار در این سیستم عامل های سازمانی Ansible نصب می کنید ، تجربه بهتری را برای کاربران جدید ارائه می دهد.

چگونه می توانم میزبان پرش را برای دسترسی به سرورهایی که دسترسی مستقیم به آنها ندارم پیکربندی کنم؟

می توانید یک Proxycommand را در متغیر موجودی ANSIBLE_SSH_COMMON_ARGS تنظیم کنید. هر آرگومان مشخص شده در این متغیر هنگام اتصال به میزبان (های) مربوطه به خط فرمان SFTP/SCP/SSH اضافه می شود. گروه موجودی زیر را در نظر بگیرید:

[دروازه] foo ansible_host=192. 0. 2. 1 نوار ansible_host=192. 0. 2. 2 

با مطالب زیر می توانید Group_Vars/Gatewayed. yml را ایجاد کنید:

Ansible هنگام تلاش برای اتصال به هر میزبان در گروه دروازه ، این آرگومان ها را به خط فرمان اضافه می کند.(این آرگومان ها علاوه بر هر SSH_ARGS از Ansible. cfg استفاده می شود ، بنابراین نیازی به تکرار تنظیمات کنترل جهانی در ANSIBLE_SSH_COMMON_ARGS نیست.)

توجه داشته باشید که SS H-W فقط با Opensh 5. 4 یا بالاتر در دسترس است. با نسخه های قدیمی تر ، لازم است NC ٪ H: ٪ P یا یک فرمان معادل را در میزبان Bastion اجرا کنید.

با نسخه های قبلی Ansible ، پیکربندی یک proxycommand مناسب برای یک یا چند میزبان در~/. ssh/config ، یا در سطح جهانی با تنظیم ssh_args در ansible. cfg.

چگونه می توانم به موقع متوجه یک هدف مرده شوم؟

می توانید با پارامتر SSH_ARGS در افزونه اتصال SS H-o ServerAliveInterval = NumberOfSeconds اضافه کنید. بدون این گزینه ، SSH و بنابراین Ansible صبر می کند تا اتصال TCP از بین برود. راه حل دیگر اضافه کردن ServerAliveInterval به پیکربندی جهانی SSH شما است. یک مقدار خوب برای ServerAliveInterval به شما بستگی دارد. به خاطر داشته باشید که ServerAliveCountMax = 3 پیش فرض SSH است ، بنابراین هر مقداری که تنظیم کنید قبل از خاتمه جلسه SSH سه برابر خواهد شد.

چگونه می توانم برای سرورهای ارائه دهندگان ابر (EC2 ، OpenStack) اجرای Ansible را سرعت دهم؟

سعی نکنید ناوگان ماشین های ارائه دهنده ابر را از لپ تاپ خود مدیریت کنید. در عوض ابتدا به یک گره مدیریتی در این ارائه دهنده ابر وصل شوید و از آنجا Ansible را اجرا کنید.

چگونه می توانم از داشتن یک مترجم پایتون در/usr/bin/python در دستگاه از راه دور استفاده کنم؟

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

به طور پیش فرض ، Ansible فرض می کند که می تواند A/USR/BIN/Python را بر روی سیستم از راه دور شما که Python2 ، نسخه 2. 6 یا بالاتر یا Python3 ، 3. 5 یا بالاتر است پیدا کند.

تنظیم متغیر موجودی ANSIBLE_PYTHON_INTERPRETER بر روی هر میزبان ، Ansible را به شما می گوید که به جای آن مقدار ، مفسر پایتون را با آن مقدار تنظیم کنید. بنابراین ، می توانید به هر پایتون مورد نظر خود در سیستم اشاره کنید اگر/usr/bin/python در سیستم شما به یک مترجم سازگار پایتون اشاره نمی کند.

برخی از سیستم عامل ها فقط ممکن است Python 3 را به طور پیش فرض نصب کنند. اگر به عنوان/usr/bin/python نصب نشده باشد ، باید از طریق ANSIBLE_PYTHON_INTERPRETER مسیر مفسر را پیکربندی کنید. اگرچه بیشتر ماژول های اصلی با پایتون 3 کار می کنند ، ممکن است موارد خاصی وجود داشته باشد که در یک مورد لبه با یک اشکال روبرو نشوند. به عنوان یک راه حل موقت می توانید Python 2 را بر روی میزبان مدیریت شده نصب کنید و Ansible را پیکربندی کنید تا از آن پایتون از طریق ansible_python_interpreter استفاده کنید. اگر در مستندات ماژول ذکر نشده است که ماژول به Python 2 نیاز دارد ، می توانید یک اشکال را در مورد ردیاب اشکال ما نیز گزارش دهید تا ناسازگاری در یک نسخه آینده قابل رفع باشد.

خطوط shebang ماژول های پایتون خود را جایگزین نکنید. Ansible این کار را برای شما به طور خودکار در زمان استقرار انجام می دهد.

همچنین ، این برای هر مترجم کار می کند ، به عنوان مثال Ruby: Ansible_Ruby_interpreter ، Perl: Ansible_perl_interpreter و غیره ، بنابراین می توانید از این برای ماژول های سفارشی که به هر زبان اسکریپتینگ نوشته شده است استفاده کنید و مکان مترجم را کنترل کنید.

به خاطر داشته باشید که اگر ENV را در خط ماژول خود قرار دهید ( #!/usr/bin/env) ، این تسهیلات نادیده گرفته می شود ، بنابراین شما در رحمت مسیر $ $ از راه دور خواهید بود.

چگونه می توانم وابستگی های بسته مورد نیاز را که توسط وابستگی های بسته بندی قابل حمل در هنگام نصب قابل حمل انجام می شود ، اداره کنم؟

While installing Ansible, sometimes you may encounter errors such as No package ‘libffi’ found or fatal error: Python.h: No such file or directory These errors are generally caused by the missing packages, which are dependencies of the packages required by Ansible. For example, libffi package is dependency of pynacl and paramiko (Ansible > paramiko > pynacl >libffi).

برای حل این نوع مشکلات وابستگی ، ممکن است لازم باشد بسته های مورد نیاز را با استفاده از مدیران بسته بندی بومی سیستم عامل مانند YUM ، DNF یا APT یا همانطور که در راهنمای نصب بسته ذکر شده است ، نصب کنید.

برای چنین وابستگی ها و روش های نصب آنها به مستندات بسته مربوطه مراجعه کنید.

مسائل مربوط به بسترهای نرم افزاری مشترک -

Red Hat از چه سیستم عامل های مشتری پشتیبانی می کند؟

تعدادی از آنها! برای یک لیست قطعی ، لطفاً به این مقاله دانش دانش مراجعه کنید.

در حال اجرا در یک VirtualEnvuf0c1

شما می توانید Ansible را در یک مجازی در کنترلر به سادگی نصب کنید:

$ virtualenv ansible $منبع./ansble/bin/activate $ pip ansible ansible

اگر می خواهید به جای پایتون 2 زیر پایتون 3 اجرا کنید ، ممکن است بخواهید آن را کمی تغییر دهید:

$ virtualen v-p python3 ansible $منبع./ansble/bin/activate $ pip ansible ansible

در صورت نیاز به استفاده از هر کتابخانه ای که از طریق PIP در دسترس نیست (به عنوان مثال ، اتصال Selinux Python در سیستم هایی مانند Red Hat Enterprise Linux یا Fedora که Selinux را فعال کرده اند) ، باید آنها را در VirtualEnv نصب کنید. دو روش وجود دارد:

 

  • هنگامی که virtualenv را ایجاد می کنید، بسته های --system-site را برای استفاده از کتابخانه های نصب شده در پایتون سیستم مشخص کنید:

     

$ virtualenv ansible --system-site-packages
$ virtualenv ansible --system-site-packages $ c p-r -v /usr/lib64/python3.*/site-packages/selinux/ ./py3-ansible/lib64/python3.*/site-packages/ $ c p-v /usr/lib64/python3.*/site-packages/*selinux*. so ./py3-ansible/lib64/python3.*/site-packages/

در حال اجرا بر روی macOSuf0c1

هنگام اجرای Ansible در سیستمی با macOS به عنوان یک ماشین کنترل کننده ممکن است با خطای زیر روبرو شوید:

خطا

زمانی که fork() فراخوانی شد، ممکن است +[__NSCFConstantString Initialize] در رشته دیگری در حال انجام باشد. ما نمی توانیم با خیال راحت آن را فراخوانی کنیم یا در فرآیند فرزند fork() نادیده بگیریم. به جای آن تصادف می کند. یک نقطه شکست در objc_initializeAfterForkError برای اشکال زدایی تنظیم کنید. خطا! یک کارگر در حالت مرده پیدا شد

به طور کلی راه حل پیشنهادی این است که متغیر محیطی زیر را در پوسته خود تنظیم کنید:

$ صادرات OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید

برچسب : نویسنده : احمد شاملو بازدید : 31 تاريخ : شنبه 11 شهريور 1402 ساعت: 0:32