आप कैसे एक निर्देशिका बना सकता हूँ www
पर /srv
एक डेबियन-आधारित प्रणाली एक Ansible प्लेबुक के प्रयोग पर?
आप कैसे एक निर्देशिका बना सकता हूँ www
पर /srv
एक डेबियन-आधारित प्रणाली एक Ansible प्लेबुक के प्रयोग पर?
जवाबों:
आप फ़ाइल मॉड्यूल चाहते हैं। निर्देशिका बनाने के लिए, आपको विकल्प निर्दिष्ट करने की आवश्यकता है state=directory
:
- name: Creates directory
file:
path: /src/www
state: directory
आप अन्य विकल्प http://docs.ansible.com/file_module.html पर देख सकते हैं
all immediate subdirectories
भ्रामक है, क्या आप इसे परिभाषित कर सकते हैं और एक उदाहरण दे सकते हैं?
आप फ़ाइल मॉड्यूल का विस्तार भी कर सकते हैं और यहां तक कि इसके माध्यम से स्वामी, समूह और अनुमति भी सेट कर सकते हैं। (संदर्भ: जवाबदेह फ़ाइल प्रलेखन )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
यहां तक कि, आप निर्देशिकाओं को पुनरावर्ती रूप से बना सकते हैं:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
इस तरह, यह दोनों निर्देशिकाओं का निर्माण करेगा, अगर वे मौजूद नहीं थे।
recursive
तर्क का उपयोग इस तरह बहुत बनाता है mkdir -p
(उन Googling के लिए ansible mkdir -p )।
recurse
पैरामीटर पसंद नहीं करता है mkdir -p
। यह निर्दिष्ट फ़ाइल विशेषताओं को पुन: सेट करता है (केवल राज्य = निर्देशिका पर लागू होता है)। यदि state=directory
, वे मौजूद नहीं हैं, तो सभी तत्काल उपनिर्देशिकाएं बनाई जाएंगी, क्योंकि 1.7 वे आपूर्ति अनुमतियों के साथ बनाई जाएंगी।
=
:
chmod -R
करता है। यही है, अगर path
पहले से ही एक डायर के रूप में मौजूद है, और इसके अंदर फाइलें हैं, तो recurse
विकल्प (कभी-कभी दुर्भाग्य से) उन फ़ाइलों को भी उन्हीं अनुमतियों को लागू करेगा। यह बेहतर या बदतर के लिए, डिजाइन द्वारा है ।
आप का उपयोग कर बना सकते हैं:
- name: Create Folder
file:
path: /srv/www/
owner: user
group: user
mode: 0755
state: directory
- name: Create Folder
file:
path=/srv/www/
owner=user
group=user
mode=0755
state=directory
निर्देशिका केवल फ़ाइल मॉड्यूल का उपयोग करके बनाई जा सकती है, क्योंकि निर्देशिका एक फ़ाइल के अलावा कुछ भी नहीं है।
# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo
आप एक निर्देशिका बना सकते हैं। का उपयोग करते हुए
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
अधिक विवरण regaridng निर्देशिका और फ़ाइल सिस्टम के लिए आप http://docs.ansible.com/ansible/file_module.html से भी परामर्श कर सकते हैं ।
यहां सभी उत्तरों के लिए अतिरिक्त, बहुत सारी स्थितियां हैं जब आपको अधिक बनाने की आवश्यकता होती है तो एक निर्देशिका इसलिए प्रत्येक निर्देशिका के लिए अलग कार्य बनाने के बजाय लूप का उपयोग करना एक अच्छा विचार है।
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
बस विशिष्ट वितरण के लिए कार्य निष्पादित करने के लिए शर्त रखने की आवश्यकता है
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
यदि आप विंडोज़ में डायरेक्टरी बनाना चाहते हैं:
- नाम: निर्देशिका संरचना बनाएँ
win_file:
पथ: C: \ Temp \ folder \ subfolder>
स्थिति: निर्देशिका
हमारे पास निर्देशिका बनाने के लिए उपलब्ध है, फ़ाइल को फ़ाइल में बनाने के लिए उपलब्ध है
उदाहरण
- name: Creates directory
file:
path: /src/www
state: directory
आप सीधे कमांड चला सकते हैं और सीधे ansible का उपयोग करके बना सकते हैं
ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser
या
ansible -v targethostname -m file -a "path=/srv/www state=directory" -u targetuser
---
- hosts: all
connection: local
tasks:
- name: Creates directory
file: path=/src/www state=directory
Playbook के ऊपर / निर्देशिका पथ में www निर्देशिका बनाएगा।
प्लेबुक के ऊपर चलने से पहले। कृपया सुनिश्चित करें कि आपका ansible होस्ट कनेक्शन सेट किया जाना चाहिए,
"लोकलहोस्ट ansible_connection = स्थानीय"
/ etc / ansible / होस्ट में मौजूद होना चाहिए
अधिक जानकारी के लिए कृपया मुझे बताएं।
निर्देशिका बनाने के लिए फ़ाइल मॉड्यूल का उपयोग करें और कमांड "ansible-doc फ़ाइल" का उपयोग करके फ़ाइल मॉड्यूल के बारे में विवरण प्राप्त करें
यहाँ एक विकल्प "राज्य" है जो बताता है:
यदि
directory
, वे मौजूद नहीं हैं, तो सभी तत्काल उपनिर्देशिकाएं बनाई जाएंगी, क्योंकि 1.7 वे आपूर्ति अनुमतियों के साथ बनाई जाएंगी।
यदिfile
, फ़ाइल मौजूद नहीं है, अगर यह मौजूद नहीं है, तो [कॉपी] या [टेम्प्लेट] मॉड्यूल देखें यदि आप ऐसा व्यवहार चाहते हैं।
यदिlink
, प्रतीकात्मक लिंक बनाया या बदला जाएगा।hard
हार्डलिंक के लिए उपयोग करें ।
यदिabsent
, निर्देशिकाओं को पुनरावर्ती रूप से हटा दिया जाएगा, और फ़ाइलें या सिमिलिंक को अनलिंक किया जाएगा।ध्यान दें कि
file
यदि राज्य में परिवर्तन नहीं हुआ तो मार्ग विफल नहीं होगा।यदि
touch
(1.4 में नया), पथ मौजूद नहीं है, तो एक खाली फ़ाइल बनाई जाएगी, जबकि एक मौजूदा फ़ाइल या निर्देशिका को अद्यतन फ़ाइल पहुंच और संशोधन समय (touch
कमांड लाइन से काम करने के तरीके के समान ) प्राप्त होगा।
आप इस मामले में "फ़ाइल" मॉड्यूल का उपयोग कर सकते हैं, बहुत सारे तर्क हैं जो आप मालिक, समूह, स्थान, मोड और जैसे नव निर्मित निर्देशिका के लिए पारित कर सकते हैं .....
कृपया फ़ाइल मॉड्यूल पर विस्तृत विवरण के लिए इस दस्तावेज़ को देखें ...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
याद रखें कि यह मॉड्यूल केवल डायरेक्टरी बनाने के लिए नहीं है !!!
सबसे आसान तरीका है Ansible में डायरेक्टरी बनाने का ।
या
आप उस निर्देशिका को sudo विशेषाधिकार देना चाहते हैं ।
मुझे बहुत सारी Playbooks के उदाहरण दिखाई देते हैं और मैं Adhoc कमांड के उदाहरण का उल्लेख करना चाहूंगा।
$ ansible -i इन्वेंट्री -m फ़ाइल -a "पथ = / tmp / direcory राज्य = निर्देशिका (निर्देशिका के बजाय हम फ़ाइलों को बनाने के लिए स्पर्श का उल्लेख कर सकते हैं)
आपको इस मामले के लिए फ़ाइल मॉड्यूल का उपयोग करने की आवश्यकता है। प्लेबुक के नीचे आप अपने संदर्भ के लिए उपयोग कर सकते हैं।
---
- hosts: <Your target host group>
name: play1
tasks:
- name: Create Directory
files:
path=/srv/www/
owner=<Intended User>
mode=<Intended permission, e.g.: 0750>
state=directory
यह जाँचने के लिए कि क्या निर्देशिका मौजूद है और फिर कुछ कार्य चलाएं (जैसे निर्देशिका बनाएँ) निम्नलिखित का उपयोग करें
- name: Check if output directory exists
stat:
path: /path/to/output
register: output_folder
- name: Create output directory if not exists
file:
path: /path/to/output
state: directory
owner: user
group: user
mode: 0775
when: output_folder.stat.exists == false
आप file
मॉड्यूल चाहते हैं । निर्देशिका बनाने के लिए, आपको विकल्प निर्दिष्ट करने की आवश्यकता है state: directory
:
- name: Creates directory
file:
path: /src/www
state: directory
state=directory
, वे मौजूद नहीं हैं, तो सभी तत्काल उपनिर्देशिकाएं बनाई जाएंगी, क्योंकि 1.7 वे आपूर्ति अनुमतियों के साथ बनाई जाएंगी।