Làm thế nào để bạn tạo một thư mục www
tại /srv
trên một hệ thống dựa trên Debian bằng cách sử dụng một Playbook Ansible?
Làm thế nào để bạn tạo một thư mục www
tại /srv
trên một hệ thống dựa trên Debian bằng cách sử dụng một Playbook Ansible?
Câu trả lời:
Bạn muốn mô-đun tập tin. Để tạo một thư mục, bạn cần chỉ định tùy chọn state=directory
:
- name: Creates directory
file:
path: /src/www
state: directory
Bạn có thể xem các tùy chọn khác tại http://docs.ansible.com/file_module.html
all immediate subdirectories
khó hiểu, bạn có thể định nghĩa điều đó và đưa ra một ví dụ không?
Bạn thậm chí có thể mở rộng mô-đun tệp và thậm chí đặt chủ sở hữu, nhóm & quyền thông qua nó. (Tham khảo: Tài liệu tập tin Ansible )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
Thậm chí, bạn có thể tạo các thư mục đệ quy:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
Bằng cách này, nó sẽ tạo cả hai thư mục, nếu chúng không tồn tại.
recursive
số làm cho điều này giống như sử dụng mkdir -p
(đối với những người đang tìm kiếm mkdir -p ).
recurse
tham số không thích mkdir -p
. Nó đệ quy đặt các thuộc tính tệp được chỉ định (chỉ áp dụng cho thư mục state =). Nếu state=directory
, tất cả các thư mục con ngay lập tức sẽ được tạo nếu chúng không tồn tại, vì 1.7 chúng sẽ được tạo với các quyền được cung cấp.
=
ký tự, sẽ rất tuyệt khi cập nhật nó với :
cú pháp với mỗi thuộc tính trên một dòng mới
chmod -R
làm. Đó là, nếu path
đã tồn tại dưới dạng một thư mục và có các tệp bên trong nó, recurse
tùy chọn sẽ (đôi khi không may) cũng áp dụng các quyền tương tự cho các tệp. Điều này là do thiết kế , cho tốt hơn hoặc tồi tệ hơn.
bạn có thể tạo bằng cách sử dụng:
- 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
Tham khảo - http://docs.ansible.com/ansible/file_module.html
Thư mục chỉ có thể được tạo bằng mô-đun tệp, vì thư mục không là gì ngoài tệp.
# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo
Bạn có thể tạo một thư mục. sử dụng
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
Bạn cũng có thể tham khảo http://docs.ansible.com/ansible/file_module.html để biết thêm chi tiết về thư mục và hệ thống tệp regaridng.
Bổ sung cho tất cả các câu trả lời ở đây, có rất nhiều tình huống khi bạn cần tạo nhiều hơn một thư mục, vì vậy nên sử dụng các vòng lặp thay vì tạo các tác vụ riêng biệt cho mỗi thư mục.
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Chỉ cần đặt điều kiện để thực thi tác vụ để phân phối cụ thể
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
Nếu bạn muốn tạo thư mục trong windows:
- Tên: Tạo cấu trúc thư mục
win_file:
path: C: \ Temp \ thư mục \ thư mục con>
trạng thái: thư mục
Chúng tôi có sẵn các mô-đun để tạo thư mục, tập tin trong ansible
Thí dụ
- name: Creates directory
file:
path: /src/www
state: directory
Bạn có thể trực tiếp chạy lệnh và tạo trực tiếp bằng cách sử dụng ansible
ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser
HOẶC LÀ
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 ở trên sẽ tạo thư mục www trong đường dẫn / src.
Trước khi chạy trên playbook. Vui lòng đảm bảo rằng kết nối máy chủ ansible của bạn phải được đặt,
"localhost ansible_connection = local"
nên có mặt trong / etc / ansible / hosts
để biết thêm thông tin xin vui lòng cho tôi biết.
Sử dụng mô-đun tệp để tạo một thư mục và nhận thông tin chi tiết về mô-đun tệp bằng lệnh "ansible-doc file"
Đây là một tùy chọn "trạng thái" giải thích:
Nếu
directory
, tất cả các thư mục con ngay lập tức sẽ được tạo nếu chúng không tồn tại, vì 1.7 chúng sẽ được tạo với các quyền được cung cấp.
Nếufile
, tệp sẽ KHÔNG được tạo nếu nó không tồn tại, hãy xem mô-đun [sao chép] hoặc [mẫu] nếu bạn muốn hành vi đó.
Nếulink
, liên kết tượng trưng sẽ được tạo hoặc thay đổi. Sử dụnghard
cho các liên kết cứng.
Nếuabsent
, thư mục sẽ bị xóa đệ quy và các tệp hoặc liên kết tượng trưng sẽ bị hủy liên kết.Lưu ý rằng
file
sẽ không thất bại nếu đường dẫn không tồn tại vì trạng thái không thay đổi.Nếu
touch
(mới trong 1.4), một tệp trống sẽ được tạo nếu đường dẫn không tồn tại, trong khi tệp hoặc thư mục hiện có sẽ nhận được thời gian truy cập và sửa đổi tệp cập nhật (tương tự như cáchtouch
hoạt động từ dòng lệnh).
bạn có thể sử dụng mô-đun "tệp" trong trường hợp này, có rất nhiều đối số mà bạn có thể vượt qua cho một thư mục mới được tạo như chủ sở hữu, nhóm, vị trí, chế độ, v.v.
vui lòng tham khảo tài liệu này để được giải thích chi tiết về mô-đun tệp ...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
hãy nhớ mô-đun này không chỉ để tạo thư mục !!!
Cách dễ nhất để tạo một thư mục trong Ansible.
HOẶC LÀ
Bạn muốn cung cấp đặc quyền sudo cho thư mục đó.
Tôi thấy rất nhiều ví dụ về Playbooks và tôi muốn đề cập đến ví dụ về lệnh Adhoc.
$ ansible -i Invent -m file -a "path = / tmp / direcory state = thư mục (thay vì thư mục chúng ta có thể đề cập đến cảm ứng để tạo tệp)
Bạn cần sử dụng mô-đun tập tin cho trường hợp này. Dưới đây playbook bạn có thể sử dụng để tham khảo của bạn.
---
- 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
Để kiểm tra xem thư mục có tồn tại không và sau đó chạy một số tác vụ (ví dụ: tạo thư mục), hãy sử dụng cách sau
- 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
Bạn muốn file
mô-đun. Để tạo một thư mục, bạn cần chỉ định tùy chọn state: directory
:
- name: Creates directory
file:
path: /src/www
state: directory
state=directory
, tất cả các thư mục con ngay lập tức sẽ được tạo nếu chúng không tồn tại, vì 1.7 chúng sẽ được tạo với các quyền được cung cấp.