Come si crea una directory www
in /srv
un sistema basato su Debian utilizzando un playbook Ansible?
Come si crea una directory www
in /srv
un sistema basato su Debian utilizzando un playbook Ansible?
Risposte:
Vuoi il modulo file. Per creare una directory, è necessario specificare l'opzione state=directory
:
- name: Creates directory
file:
path: /src/www
state: directory
Puoi vedere altre opzioni su http://docs.ansible.com/file_module.html
all immediate subdirectories
è confuso, potresti definirlo e fare un esempio?
Puoi anche estendere il modulo file e persino impostare il proprietario, il gruppo e l'autorizzazione attraverso di esso. (Rif: documentazione file di risposta )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
Puoi anche creare ricorsivamente le directory:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
In questo modo, creerà entrambe le directory, se non esistessero.
recursive
argomento lo rende molto simile all'uso mkdir -p
(per chi cerca su Google mkdir -p ).
recurse
parametro non piace mkdir -p
. Imposta in modo ricorsivo gli attributi del file specificato (si applica solo a state = directory). Se state=directory
, tutte le sottodirectory immediate verranno create se non esistono, dal 1.7 verranno create con le autorizzazioni fornite.
=
caratteri, sarebbe bello aggiornarla con la :
sintassi con ogni attributo su una nuova riga
chmod -R
. Cioè, se path
esiste già come dir e ci sono file al suo interno, l' recurse
opzione (a volte purtroppo) applicherà anche le stesse autorizzazioni ai file. Questo è di progettazione , nel bene o nel male.
puoi creare usando:
- 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
Consultare - http://docs.ansible.com/ansible/file_module.html
La directory può essere creata utilizzando solo il modulo file, poiché la directory non è altro che un file.
# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo
È possibile creare una directory. utilizzando
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
È inoltre possibile consultare http://docs.ansible.com/ansible/file_module.html per ulteriori dettagli sulla directory di registrazione e sul file system.
Aggiuntivo per tutte le risposte qui, ci sono molte situazioni in cui è necessario creare più di una directory, quindi è una buona idea usare i loop invece di creare attività separate per ciascuna directory.
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Devo solo mettere le condizioni per eseguire l'attività per una distribuzione specifica
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
Se si desidera creare una directory in Windows:
- nome: Crea struttura directory
win_file:
percorso: C: \ Temp \ cartella \ sottocartella>
stato: directory
Abbiamo moduli disponibili per creare directory, file in ansible
Esempio
- name: Creates directory
file:
path: /src/www
state: directory
È possibile eseguire direttamente il comando e creare direttamente utilizzando ansible
ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser
O
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
Il playbook sopra creerà la directory www nel percorso / src.
Prima di correre sopra il playbook. Assicurati di impostare la tua connessione host sensibile,
"localhost ansible_connection = local"
dovrebbe essere presente in / etc / ansible / hosts
per ulteriori informazioni per favore fatemi sapere.
Utilizzare il modulo file per creare una directory e ottenere i dettagli sul modulo file utilizzando il comando "file ansible-doc"
Ecco un'opzione "state" che spiega:
Se
directory
, tutte le sottodirectory immediate verranno create se non esistono, dal 1.7 verranno create con le autorizzazioni fornite.
Sefile
, il file NON verrà creato se non esiste, vedere il modulo [copia] o [modello] se si desidera quel comportamento.
Selink
, il collegamento simbolico verrà creato o modificato. Utilizzarehard
per hardlink.
Seabsent
, le directory verranno eliminate in modo ricorsivo e i file o i collegamenti simbolici verranno scollegati.Nota che
file
non fallirà se il percorso non esiste poiché lo stato non è cambiato.Se
touch
(nuovo in 1.4), verrà creato un file vuoto se il percorso non esiste, mentre un file o una directory esistente riceveranno tempi di accesso e modifica dei file aggiornati (simile al modo in cuitouch
funziona dalla riga di comando).
puoi usare il modulo "file" in questo caso, ci sono così tanti argomenti che puoi passare per una directory appena creata come il proprietario, il gruppo, la posizione, la modalità e così via .....
fare riferimento a questo documento per la spiegazione dettagliata sul modulo file ...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
ricorda che questo modulo non è solo per creare la directory !!!
Il modo più semplice per creare una directory in Ansible.
O
Volete dare i privilegi di sudo a quella directory.
Vedo molti esempi di Playbook e vorrei menzionare l'esempio dei comandi Adhoc.
$ ansible -i inventario -m file -a "path = / tmp / direcory state = directory (invece della directory possiamo menzionare il tocco per creare file)
È necessario utilizzare il modulo file per questo caso. Sotto il playbook puoi usare come riferimento.
---
- 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
Per verificare se esiste una directory e quindi eseguire alcune attività (ad esempio, creare una directory), utilizzare quanto segue
- 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
Vuoi il file
modulo. Per creare una directory, è necessario specificare l'opzione state: directory
:
- name: Creates directory
file:
path: /src/www
state: directory
state=directory
, tutte le sottodirectory immediate verranno create se non esistono, dal 1.7 verranno create con le autorizzazioni fornite.