मैं वास्तव में ansible के लिए नौसिखिया हूँ। क्या कोई मुझे मेरे मूल सिस्टम आईपी के साथ regexp का उपयोग करके फ़ाइल में आईपी पता बदलने में मदद कर सकता है। मान लें कि मैं "Djgroups.bind_address=<*/WHATEVER/BLANK>" को "Djgroups.bind_address=10.0.0.45" से बदलना चाहता हूं।
यह टॉमकैट उदाहरण के लिए होगा। वह रेखा जहां प्रतिस्थापन की आवश्यकता है:
JAVA_OPTS="-Xms6144m -Xmx6144m -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djgroups.bind_address="
मैंने नीचे के रूप में उत्तरदायी लिखा:
- name: Verifying Instance IP Address
shell: grep Djgroups.bind_address /apache-tomcat-8.5.15_1/bin/catalina.sh|grep -v ^#|tr -s '=' '"'|cut -d '"' -f5
register: tomcat_instance_ip
- debug: msg='Tomcat instance has {{ tomcat_instance_ip.stdout }} set.'
- name: Updating Tomcat Instance with valid local IP address
replace:
dest: /apache-tomcat-8.5.15_1/bin/catalina.sh
regexp: '^(Djgroups.bind_address(?!.*\b{{ tomcat_instance_ip.stdout }}\b).*)$'
replace: '\1 {{ ip_address }}'
when: tomcat_instance_ip.stdout != ip_address
धन्यवाद, सामु
1 उत्तर
मैं regexp के साथ कम से कम 4 मुद्दों को देखता हूं:
- आपका
.
बच नहीं पाया है, इसलिए इसे एक विशेष वर्ण के रूप में व्याख्यायित किया जाता है। - आप शुरुआत में
^
क्यों लगाते हैं। ऐसा लगता है कि आप एक स्ट्रिंग के बीच में कुछ खोजने की कोशिश कर रहे हैं, शुरुआत में नहीं। - आपको नकारात्मक लुकअप में .* के लिए आलसी मूल्यांकन का उपयोग करना चाहिए। अभी यह कुछ भी मेल खाएगा।
- आप स्ट्रिंग के
Djgroups.bind_address
भाग से मिलान करने का प्रयास कर रहे हैं, जबकि मेरा मानना है कि आप इसके बजाय जो कुछ भी आता है उससे मेल खाना चाहते हैं।
कोशिश करें: Djgroups\.bind_address=(?!.*?{{ tomcat_instance_ip.stdout }}.*?)(.*)$
और कृपया पहले अपने रेगेक्स का परीक्षण करें। https://regex101.com/ सुनिश्चित करें कि यह वास्तव में आपके इनपुट से मेल खाता है जैसा आपने सोचा था।
नए सवाल
ansible
Red Hat Ansible एक मॉडल-चालित, कॉन्फ़िगरेशन प्रबंधन, बहु-नोड परिनियोजन / ऑर्केस्ट्रेशन और दूरस्थ कार्य निष्पादन प्रणाली है। यह डिफ़ॉल्ट रूप से SSH का उपयोग करता है, इसलिए आपके द्वारा प्रबंधित किए जाने वाले नोड पर कोई विशेष सॉफ़्टवेयर स्थापित नहीं किया जा सकता है। पाइथन में Ansible लिखा है, लेकिन इसे किसी भी भाषा में बढ़ाया जा सकता है।