ধরুন আমার "অ্যাপাচি" নামে একটি ভূমিকা আছে
এখন আমি উত্তরী হোস্টের কমান্ড লাইন থেকে 192.168.0.10 হোস্টে এই ভূমিকাটি সম্পাদন করতে চাই
ansible-playbook -i "192.168.0.10" --role "path to role"
এটা করার কোন উপায় আছে?
উত্তর:
উত্তরযোগ্য 2.7 দিয়ে আপনি এটি করতে পারেন:
$ cd /path/to/ansible/
$ ansible localhost -m include_role -a name=<role_name>
localhost | SUCCESS => {
"changed": false,
"include_variables": {
"name": "<role_name>"
}
}
localhost | SUCCESS => {
"msg": "<role_name>"
}
এটি / পাথ / থেকে / উত্তরযোগ্য / ভূমিকা বা কনফিগার করা রোল পাথ থেকে ভূমিকা পালন করবে।
এখানে আরও পড়ুন: https://github.com/ansible/ansible/pull/43131
'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
-a "name=<role_name> public=yes"
, কিন্তু তাতে কোন লাভ হয়নি।
-m <module-name>
) থেকে কী = মান জোড়া যুক্তি ( -a key=value
) হিসাবে
উত্তরযোগ্য তেমন কোনও জিনিস নেই, তবে এটি যদি আপনার জন্য প্রায়শই ব্যবহারের ক্ষেত্রে হয় তবে এই স্ক্রিপ্টটি ব্যবহার করে দেখুন।
নাম অনুসারে এটি আপনার সন্ধানযোগ্য PATH এর মধ্যে কোথাও রাখুন ansible-role
:
#!/bin/bash
if [[ $# < 2 ]]; then
cat <<HELP
Wrapper script for ansible-playbook to apply single role.
Usage: $0 <host-pattern> <role-name> [ansible-playbook options]
Examples:
$0 dest_host my_role
$0 custom_host my_role -i 'custom_host,' -vv --check
HELP
exit
fi
HOST_PATTERN=$1
shift
ROLE=$1
shift
echo "Trying to apply role \"$ROLE\" to host/group \"$HOST_PATTERN\"..."
export ANSIBLE_ROLES_PATH="$(pwd)/roles"
export ANSIBLE_RETRY_FILES_ENABLED="False"
ansible-playbook "$@" /dev/stdin <<END
---
- hosts: $HOST_PATTERN
roles:
- $ROLE
END
ansible localhost -m include_role -a name=myrole
- আমার জন্য কাজ করে !
ansible localhost -m include_role -a name=myrole
উত্তরহীন ২.৮ থেকে ভাঙা হয়েছে। এটি কেবল ক্রিপ্টিক ত্রুটি বার্তাগুলি লগ করে'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
আপনি উত্তরযোগ্য-টুলবক্স সংগ্রহস্থলও পরীক্ষা করতে পারেন । এটি আপনাকে এরকম কিছু ব্যবহার করার অনুমতি দেবে
ansible-role --host 192.168.0.10 --gather --user centos --become my-role
আমি একটি ছোট্ট উত্তরযোগ্য প্লাগইন লিখেছি, যার নাম auto_tags
আপনার প্লেবুকের প্রতিটি ভূমিকার জন্য একই নামে একটি ট্যাগ গতিশীলভাবে উত্পন্ন করে। আপনি এটি এখানে খুঁজে পেতে পারেন ।
এটি ইনস্টল করার পরে (নির্দেশাবলী উপরের শিরোনামে রয়েছে) আপনি তারপরে একটি নির্দিষ্ট ভূমিকা সম্পাদন করতে পারেন:
ansible-playbook -i "192.168.0.10" --tags "name_of_role"
আপনি কি চেষ্টা করেছেন? এটা দুর্দান্ত। আরও অর্থবহ উদাহরণ দেওয়ার জন্য আমি 'অ্যাপাচি' রোলের পরিবর্তে 'আপডেট-ওএস' ব্যবহার করছি। আমার একটি ভূমিকা রয়েছে যার নামটি বলা যাক আমি ./roles/update-os/
বলি ./
আমি এমন একটি ফাইল যুক্ত করি ./role-update-os.yml
যা দেখে মনে হয়:
#!/usr/bin/ansible-playbook
---
- hosts: all
gather_facts: yes
become: yes
roles:
- update-os
এই ফাইলটি কার্যকর ( chmod +x role-update-os.yml
) কার্যকর করুন। এখন আপনি চালাতে পারেন এবং আপনার ইনভেন্টরিতে যা কিছু আছে ./update-os.yml -i inventory-dev --limit 192.168.0.10
তার সীমাবদ্ধ রাখতে পারবেন আপনি গ্রুপের নামগুলিও পাস করতে পারেন।
--limit web,db
> ওয়েব এবং ডিবি আপনার তালিকাতে সংজ্ঞায়িত গোষ্ঠী--limit 192.168.0.10,192.168.0.201
$ cat inventory-dev
[web]
192.168.0.10
[db]
192.168.0.201
নোট করুন যে আপনি পাসওয়ার্ড টাইপ না করেই এক্সিকিউট করতে সক্ষম হতে ssh-key এবং sudoers নীতিটি কনফিগার করতে পারেন - অটোমেশনের জন্য আদর্শ, এটির সাথে সুরক্ষা জড়িত রয়েছে। সুতরাং আপনাকে আপনার পরিবেশটি উপযুক্ত কিনা তা বিশ্লেষণ করতে হবে।
জবাবদিহি ২.৮ এ এটি কিছুটা আলাদা কাজ করে
wohlgemuth@leela:~/workspace/rtmtb-ansible/kvm-cluster$ ansible localhost -m import_role -a name=rtmtb
[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | CHANGED => {
"changed": true,
"checksum": "d31b41e68997e1c7f182bb56286edf993146dba1",
"dest": "/root/.ssh/id_rsa.github",
"gid": 0,
"group": "root",
"md5sum": "b7831c4c72f3f62207b2b96d3d7ed9b3",
"mode": "0600",
"owner": "root",
"size": 3389,
"src": "/home/wohlgemuth/.ansible/tmp/ansible-tmp-1561491049.46-139127672211209/source",
"state": "file",
"uid": 0
}
localhost | CHANGED => {
"changed": true,
"checksum": "1972ebcd25363f8e45adc91d38405dfc0386b5f0",
"dest": "/root/.ssh/config",
"gid": 0,
"group": "root",
"md5sum": "f82552a9494e40403da4a80e4c528781",
"mode": "0644",
"owner": "root",
"size": 147,
"src": "/home/wohlgemuth/.ansible/tmp/ansible-tmp-1561491049.99-214274671218454/source",
"state": "file",
"uid": 0
}