Jak tworzysz katalog www
w /srv
systemie opartym na Debianie, korzystając z podręcznika Ansible?
Jak tworzysz katalog www
w /srv
systemie opartym na Debianie, korzystając z podręcznika Ansible?
Odpowiedzi:
Chcesz moduł plików. Aby utworzyć katalog, musisz określić opcję state=directory
:
- name: Creates directory
file:
path: /src/www
state: directory
Możesz zobaczyć inne opcje na http://docs.ansible.com/file_module.html
all immediate subdirectories
jest mylące, czy możesz to zdefiniować i podać przykład?
Możesz nawet rozszerzyć moduł plików, a nawet ustawić właściciela, grupę i uprawnienia za jego pośrednictwem. (Patrz: dokumentacja pliku Ansible )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
Możesz nawet tworzyć katalogi rekurencyjnie:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
W ten sposób utworzą oba katalogi, jeśli nie istniały.
recursive
Argumentem czyni to podobnie jak przy użyciu mkdir -p
(dla tych googling ansibl mkdir -p ).
recurse
parametr nie lubi mkdir -p
. Rekurencyjnie ustawia określone atrybuty pliku (dotyczy tylko stanu = katalog). Jeśli state=directory
wszystkie bezpośrednie podkatalogi zostaną utworzone, jeśli nie istnieją, od wersji 1.7 zostaną utworzone z podanymi uprawnieniami.
=
znakami, byłoby wspaniale zaktualizować ją :
składnią z każdym atrybutem w nowej linii
chmod -R
. To znaczy, jeśli path
już istnieje jako katalog, a są w nim pliki, recurse
opcja (czasami niestety) również zastosuje te same uprawnienia do plików. Jest to zgodne z projektem , na lepsze lub gorsze.
możesz stworzyć używając:
- 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
Katalog można utworzyć tylko za pomocą modułu plików, ponieważ katalog to tylko plik.
# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo
Możesz utworzyć katalog. za pomocą
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
Możesz również zapoznać się z http://docs.ansible.com/ansible/file_module.html w celu uzyskania dalszych szczegółów dotyczących katalogu i systemu plików.
Oprócz wszystkich odpowiedzi tutaj istnieje wiele sytuacji, w których musisz utworzyć więcej niż jeden katalog, więc dobrym pomysłem jest użycie pętli zamiast tworzenia osobnego zadania dla każdego katalogu.
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Wystarczy ustawić warunek, aby wykonać zadanie dla określonej dystrybucji
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
Jeśli chcesz utworzyć katalog w systemie Windows:
- nazwa: Utwórz strukturę katalogów
plik_win:
ścieżka: C: \ Temp \ folder \ podfolder>
stan: katalog
Mamy dostępne moduły do stworzenia katalogu, pliku w ansible
Przykład
- name: Creates directory
file:
path: /src/www
state: directory
Możesz bezpośrednio uruchomić polecenie i utworzyć bezpośrednio za pomocą ansible
ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser
LUB
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
Powyższy poradnik utworzy katalog www w ścieżce / src.
Przed uruchomieniem powyżej poradnika. Upewnij się, że połączenie z hostem ansible powinno być ustawione,
„localhost ansible_connection = local”
powinien być obecny w / etc / ansible / hosts
po więcej informacji daj mi znać.
Użyj modułu pliku, aby utworzyć katalog i uzyskać szczegółowe informacje na temat modułu pliku za pomocą polecenia „plik doc-doc”
Oto opcja „stan”, która wyjaśnia:
Jeśli
directory
wszystkie bezpośrednie podkatalogi zostaną utworzone, jeśli nie istnieją, od wersji 1.7 zostaną utworzone z podanymi uprawnieniami.
Jeślifile
plik NIE zostanie utworzony, jeśli nie istnieje, zobacz moduł [kopia] lub [szablon], jeśli chcesz tego zachowania.
Jeślilink
symboliczne łącze zostanie utworzone lub zmienione. Użyjhard
do twardych linków.
Jeśliabsent
katalogi zostaną rekursywnie usunięte, a pliki lub dowiązania symboliczne zostaną odłączone.Pamiętaj, że
file
nie zawiedzie, jeśli ścieżka nie istnieje, ponieważ stan się nie zmienił.Jeśli
touch
(nowość w 1.4), pusty plik zostanie utworzony, jeśli ścieżka nie istnieje, a istniejący plik lub katalog otrzyma zaktualizowany czas dostępu do pliku i modyfikacji (podobnie jak wtouch
przypadku wiersza poleceń).
w tym przypadku możesz użyć modułu „plik”, istnieje tyle argumentów, że możesz przekazać nowy katalog, taki jak właściciel, grupa, lokalizacja, tryb i tak dalej .....
szczegółowe informacje na temat modułu plików znajdują się w tym dokumencie ...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
pamiętaj, że ten moduł służy nie tylko do tworzenia katalogu !!!
Najprostszym sposobem na utworzenie katalogu w Ansible.
LUB
Chcesz nadać sudo uprawnienia do tego katalogu.
Widzę wiele przykładów Playbooków i chciałbym wspomnieć o przykładzie poleceń Adhoc.
$ ansible -i inwentarz -m plik -a "ścieżka = / tmp / direcory state = katalog (zamiast katalogu możemy wspomnieć o utworzeniu plików dotykiem)
Aby sprawdzić, czy katalog istnieje, a następnie uruchomić jakieś zadanie (np. Utworzyć katalog), skorzystaj z następujących poleceń
- 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
Chcesz file
moduł. Aby utworzyć katalog, musisz określić opcję state: directory
:
- name: Creates directory
file:
path: /src/www
state: directory
state=directory
wszystkie bezpośrednie podkatalogi zostaną utworzone, jeśli nie istnieją, od wersji 1.7 zostaną utworzone z podanymi uprawnieniami.