Nasıl bir dizin oluşturabilirim www
de /srv
bir yanıtlayıcı 'taktik kitabı kullanarak bir Debian tabanlı sistemde?
Nasıl bir dizin oluşturabilirim www
de /srv
bir yanıtlayıcı 'taktik kitabı kullanarak bir Debian tabanlı sistemde?
Yanıtlar:
Dosya modülünü istiyorsunuz. Bir dizin oluşturmak için seçeneği belirtmeniz gerekir state=directory
:
- name: Creates directory
file:
path: /src/www
state: directory
Diğer seçenekleri http://docs.ansible.com/file_module.html adresinde görebilirsiniz.
all immediate subdirectories
kafa karıştırıcı, bunu tanımlayıp bir örnek verebilir misiniz?
Hatta dosya modülünü genişletebilir ve hatta sahibi, grubu ve izni ayarlayabilirsiniz. (Ref: Ansible dosya belgeleri )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
Hatta dizinleri özyinelemeli olarak oluşturabilirsiniz:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
Bu şekilde, eğer olmasaydı her iki dizini de yaratacaktır.
recursive
Argüman kullanmak gibi bu kadar yapar mkdir -p
(bu googling için yanıtlayıcı 'mkdir -p ).
recurse
Parametre sevmez mkdir -p
. Belirtilen dosya özniteliklerini özyineli olarak ayarlar (yalnızca state = dizin için geçerlidir). Eğer mevcut değilse state=directory
, hemen tüm alt dizinler oluşturulacaktır, 1.7'den beri verilen izinlerle oluşturulacaktır.
=
karakterlerle eski sözdizimini kullanır, :
yeni bir satırdaki her öznitelikle sözdizimi ile güncellemek harika olurdu
chmod -R
. Yani, path
zaten bir dir olarak varsa ve içinde dosyalar varsa, recurse
seçenek (bazen ne yazık ki) dosyalara da aynı izinleri uygulayacaktır. Bu, tasarımla , daha iyi veya daha kötü için.
kullanarak oluşturabilirsiniz:
- 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
Dizin yalnızca dosya modülü kullanılarak oluşturulabilir, çünkü dizin bir dosyadan başka bir şey değildir.
# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo
Bir dizin oluşturabilirsiniz. kullanma
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
Ayrıca dizin ve dosya sistemi hakkında daha ayrıntılı bilgi için http://docs.ansible.com/ansible/file_module.html adresine başvurabilirsiniz.
Buradaki tüm yanıtlar için ek olarak, birden fazla dizin oluşturmanız gerektiğinde birçok durum vardır, bu nedenle her dizin için ayrı görev oluşturmak yerine döngüler kullanmak iyi bir fikirdir.
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Sadece belirli dağıtım için görevi yürütmek için koşul koymanız gerekiyor
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
Windows'da dizin oluşturmak istiyorsanız:
- name: Dizin yapısı oluşturun
win_file:
path: C: \ Temp \ folder \ subfolder>
durum: dizin
Biz dizin oluşturmak için kullanılabilir modüller var, ansible dosya
Misal
- name: Creates directory
file:
path: /src/www
state: directory
Doğrudan komutu çalıştırabilir ve doğrudan ansible kullanarak oluşturabilirsiniz
ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser
VEYA
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
Yukarıdaki playbook / src yolunda www dizini oluşturacaktır.
Başucu kitabının üzerinde çalıştırmadan önce. Lütfen sorumlu ana makine bağlantınızın ayarlandığından emin olun,
"localhost ansible_connection = yerel"
/ etc / ansible / host dosyalarında bulunmalıdır
daha fazla bilgi için lütfen bana bildirin.
Bir dizin oluşturmak ve "ansible-doc dosyası" komutunu kullanarak dosya modülü hakkındaki ayrıntıları almak için dosya modülünü kullanın
İşte açıklayan bir seçenek "durum":
Eğer mevcut değilse
directory
, hemen tüm alt dizinler oluşturulacaktır, 1.7'den beri verilen izinlerle oluşturulacaktır. Dosya
yoksafile
, dosya OLUŞMAZ, bu davranışı istiyorsanız [kopya] veya [şablon] modülüne bakın.
Eğer varsalink
, sembolik bağlantı oluşturulur veya değiştirilir.hard
Sert bağlantılar için kullanın .
Eğerabsent
dizinler özyinelemeli olarak silinecek ve dosya veya sembolik bağlantılar kaldırılacaktır.
file
Durum değişmediği için yol yoksa, başarısız olmayacağını unutmayın .Eğer
touch
yol yoksa varolan bir dosya ya da dizin (yön benzer dosya erişim ve değişiklik zamanlarını güncellenmiş alacaksınız ise (1.4 yeni), boş bir dosya, oluşturulacaktouch
komut satırından eserleri).
Bu durumda "dosya" modülünü kullanabilirsiniz, sahip, grup, konum, mod ve benzeri gibi yeni oluşturulan bir dizin için iletebileceğiniz çok sayıda argüman var .....
dosya modülüyle ilgili ayrıntılı açıklama için lütfen bu belgeye bakın ...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
unutmayın bu modül sadece dizin oluşturmak için değil !!!
Ansible'da bir dizin yapmanın en kolay yolu .
VEYA
Bu dizine sudo ayrıcalıkları vermek istiyorsunuz .
Çok sayıda Playbooks örneği görüyorum ve Adhoc komutları örneğinden bahsetmek istiyorum.
$ ansible -i envanter -m dosya -a "yol = / tmp / direcory state = dizin (dizin yerine dosya oluşturmak için dokunmadan bahsedebiliriz)
Bu durumda dosya modülünü kullanmanız gerekir. Referansınız için kullanabileceğiniz oyun kitabının altında.
---
- 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
Dizin olup olmadığını kontrol etmek ve ardından bazı görevleri çalıştırmak (örneğin, dizin oluşturmak) için aşağıdakileri kullanın
- 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
Modülü istiyorsunuz . Bir dizin oluşturmak için seçeneği belirtmeniz gerekir state: directory
:
- name: Creates directory
file:
path: /src/www
state: directory
state=directory
, hemen tüm alt dizinler oluşturulacaktır, 1.7'den beri verilen izinlerle oluşturulacaktır.