Bagaimana Anda membuat direktori www
di /srv
pada sistem berbasis Debian menggunakan buku pedoman yang dimungkinkan?
Bagaimana Anda membuat direktori www
di /srv
pada sistem berbasis Debian menggunakan buku pedoman yang dimungkinkan?
Jawaban:
Anda ingin modul file. Untuk membuat direktori, Anda perlu menentukan opsi state=directory
:
- name: Creates directory
file:
path: /src/www
state: directory
Anda dapat melihat opsi lain di http://docs.ansible.com/file_module.html
all immediate subdirectories
membingungkan, bisakah Anda mendefinisikannya dan memberikan contoh?
Anda bahkan dapat memperluas modul file dan bahkan mengatur pemilik, grup & izin melalui itu. (Ref: Dokumentasi file yang mungkin )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
Bahkan, Anda dapat membuat direktori secara rekursif:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
Dengan cara ini, ini akan membuat kedua direktori, jika tidak ada.
recursive
argumen membuat banyak ini seperti menggunakan mkdir -p
(bagi mereka googling ansible mkdir -p ).
recurse
parameter tidak suka mkdir -p
. Secara rekursif mengatur atribut file yang ditentukan (hanya berlaku untuk negara = direktori). Jika state=directory
, semua subdirektori langsung akan dibuat jika tidak ada, karena 1.7 mereka akan dibuat dengan izin yang disediakan.
=
karakter, akan lebih baik untuk memperbaruinya dengan :
sintaks dengan masing-masing atribut pada baris baru
chmod -R
. Artinya, jika path
sudah ada sebagai dir, dan ada file di dalamnya, recurse
opsi akan (kadang-kadang sayangnya) juga menerapkan izin yang sama ke file. Ini dengan desain , baik atau buruk.
Anda dapat membuat menggunakan:
- 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
Direktori dapat dibuat menggunakan modul file saja, karena direktori tidak lain adalah file.
# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo
Anda dapat membuat direktori. menggunakan
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
Anda juga dapat berkonsultasi dengan http://docs.ansible.com/ansible/file_module.html untuk perincian lebih lanjut tentang direktori dan sistem file.
Tambahan untuk semua jawaban di sini, ada banyak situasi ketika Anda perlu membuat lebih dari satu direktori sehingga merupakan ide yang baik untuk menggunakan loop alih-alih membuat tugas terpisah untuk setiap direktori.
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Hanya perlu menempatkan kondisi untuk menjalankan tugas untuk distribusi tertentu
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
Jika Anda ingin membuat direktori di windows:
- nama: Buat struktur direktori
win_file:
path: C: \ Temp \ folder \ subfolder>
state: direktori
Kami memiliki modul yang tersedia untuk membuat direktori, file dalam ansible
Contoh
- name: Creates directory
file:
path: /src/www
state: directory
Anda dapat langsung menjalankan perintah dan membuat langsung menggunakan yang dimungkinkan
ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser
ATAU
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 di atas akan membuat direktori www di jalur / src.
Sebelum menjalankan buku pedoman di atas. Harap pastikan koneksi host yang memungkinkan Anda harus disetel,
"localhost ansible_connection = local"
harus ada di / etc / ansible / hosts
untuk informasi lebih lanjut, silakan beri tahu saya.
Gunakan modul file untuk membuat direktori dan dapatkan detail tentang modul file menggunakan perintah "file ansible-doc"
Berikut adalah opsi "status" yang menjelaskan:
Jika
directory
, semua subdirektori langsung akan dibuat jika tidak ada, karena 1.7 mereka akan dibuat dengan izin yang disediakan.
Jikafile
, file TIDAK akan dibuat jika tidak ada, lihat modul [copy] atau [template] jika Anda menginginkan perilaku itu.
Jikalink
, tautan simbolik akan dibuat atau diubah. Gunakanhard
untuk hardlink.
Jikaabsent
, direktori akan dihapus secara rekursif, dan file atau symlink akan dibatalkan tautannya.Perhatikan bahwa
file
tidak akan gagal jika jalur tidak ada karena negara tidak berubah.Jika
touch
(baru dalam 1.4), file kosong akan dibuat jika path tidak ada, sementara file atau direktori yang ada akan menerima akses file yang diperbarui dan waktu modifikasi (mirip dengan caratouch
kerjanya dari baris perintah).
Anda dapat menggunakan modul "file" dalam hal ini, ada begitu banyak argumen yang dapat Anda lewati untuk direktori yang baru dibuat seperti pemilik, grup, lokasi, mode dan sebagainya .....
lihat dokumen ini untuk penjelasan terperinci tentang modul file ...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
ingat modul ini bukan hanya untuk membuat direktori !!!
Cara termudah untuk membuat direktori di Ansible.
ATAU
Anda ingin memberikan hak istimewa sudo ke direktori itu.
Saya melihat banyak contoh Playbook dan saya ingin menyebutkan contoh perintah Adhoc.
$ ansible -i inventaris -m file -a "path = / tmp / direcory state = direktori (alih-alih direktori kita dapat menyebutkan sentuhan untuk membuat file)
Anda perlu menggunakan modul file untuk kasus ini. Di bawah ini buku pedoman yang dapat Anda gunakan untuk referensi Anda.
---
- 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
Untuk memeriksa apakah direktori ada dan kemudian menjalankan beberapa tugas (misalnya membuat direktori) gunakan yang berikut ini
- 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
Anda menginginkan file
modul. Untuk membuat direktori, Anda perlu menentukan opsi state: directory
:
- name: Creates directory
file:
path: /src/www
state: directory
state=directory
, semua subdirektori langsung akan dibuat jika tidak ada, karena 1.7 mereka akan dibuat dengan izin yang disediakan.