Як створити каталог wwwна /srvбазі системи Debian, використовуючи програму "Ansible playbook"?
Як створити каталог wwwна /srvбазі системи Debian, використовуючи програму "Ansible playbook"?
Відповіді:
Ви хочете, щоб модуль файлів. Щоб створити каталог, потрібно вказати параметр state=directory:
- name: Creates directory
file:
path: /src/www
state: directory
Ви можете переглянути інші параметри на веб-сторінці http://docs.ansible.com/file_module.html
all immediate subdirectoriesзаплутаний, чи можете ви це визначити і навести приклад?
Ви навіть можете розширити модуль файлів і навіть встановити через нього власника, групу та дозвіл. (Посилання: Довідкова файлова документація )
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
Навіть, ви можете створювати каталоги рекурсивно:
- name: Creates directory
file:
path: /src/www
state: directory
owner: www-data
group: www-data
mode: 0775
recurse: yes
Таким чином, він створить обидва каталоги, якщо вони не існували.
recursiveАргумент робить це так само, як з використанням mkdir -p(для тих , вдаючись до допомоги анзібль MkDir -p ).
recurseПараметр не подобається mkdir -p. Він рекурсивно встановлює вказані атрибути файлу (стосується лише стану = каталогу). Якщо state=directoryвсі безпосередні підкаталоги будуть створені, якщо їх не існує, оскільки 1.7 вони будуть створені з наданими дозволами.
=символами, було б чудово оновити його :синтаксисом з кожним атрибутом у новому рядку
chmod -Rі. Тобто, якщо pathвже існує dir, а всередині нього є файли, recurseопція (іноді, на жаль,) також застосує ті самі дозволи до файлів. Це задумом , на краще чи на гірше.
ви можете створити, використовуючи:
- 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
Посилання - http://docs.ansible.com/ansible/file_module.html
Каталог можна створити лише за допомогою файлового модуля, оскільки каталог - це не що інше, як файл.
# create a directory if it doesn't exist
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: foo
group: foo
Ви можете створити каталог. використовуючи
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
Ви також можете проконсультуватися на http://docs.ansible.com/ansible/file_module.html для отримання більш детальної інформації про каталог та файлову систему regaridng.
Додатково до всіх відповідей тут, існує багато ситуацій, коли вам потрібно створити більше одного каталогу, тому корисно використовувати петлі, а не створювати окремі завдання для кожного каталогу.
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Просто потрібно поставити умову для виконання завдання для конкретного розподілу
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
Якщо ви хочете створити каталог у Windows:
- ім'я: Створіть структуру каталогу
win_file:
path: C: \ Temp \ folder \ subfolder>
state: каталог
У нас є модулі для створення каталогу, файлу в ansible
Приклад
- name: Creates directory
file:
path: /src/www
state: directory
Ви можете безпосередньо запустити команду та створити безпосередньо за допомогою ansible
ansible -v targethostname -m shell -a "mkdir /srv/www" -u targetuser
АБО
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" буде створено www-каталог у / src-шляху.
Перед запуском над програмою playbook. Будь-ласка, переконайтеся, що ваш безвідмовний хост-зв’язок має бути встановлено,
"localhost ansible_connection = локальний"
має бути присутнім у / etc / ansible / hosts
для отримання додаткової інформації, будь ласка, повідомте мене.
Використовуйте модуль файлів, щоб створити каталог і отримати детальну інформацію про файловий модуль, використовуючи команду "ansible-doc file"
Ось варіант "стан", який пояснює:
Якщо
directoryвсі безпосередні підкаталоги будуть створені, якщо їх не існує, оскільки 1.7 вони будуть створені з наданими дозволами.
Якщоfileфайл НЕ буде створений, якщо він не існує, див. Модуль [copy] або [template], якщо ви бажаєте такої поведінки.
Якщоlinkсимволічне посилання буде створено або змінено. Використовуватиhardдля жорстких посилань.
Якщоabsentкаталоги будуть рекурсивно видалятися, а файли або символьні посилання будуть від’єднані.Зауважте, що
fileце не вийде, якщо шлях не існує, оскільки стан не змінився.Якщо
touch(новий в 1.4), порожній файл буде створений, якщо шлях не існує, тоді як існуючий файл або каталог отримуватиме оновлений час доступу до файлів і час їх модифікації (подібно до того, якtouchпрацює з командного рядка).
ви можете використовувати модуль "файл" у цьому випадку, так багато аргументів, що ви можете передавати для новоствореного каталогу, як власник, група, розташування, режим і так далі .....
будь ласка, зверніться до цього документа, щоб отримати детальне пояснення щодо модуля файлів ...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
пам'ятайте, що цей модуль не є лише для створення каталогу !!!
Найпростіший спосіб скласти каталог в Ansible.
АБО
Ви хочете надати права доступу до цього каталогу.
Я бачу безліч прикладів Playbooks, і я хотів би згадати приклад команд Adhoc.
$ ansible -i інвентар -m файл -a "path = / tmp / direcory state = каталог (замість каталогу ми можемо згадати дотик для створення файлів)
Для цього потрібно використовувати файловий модуль. Нижче ви зможете скористатися довідковою книжкою.
---
- 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
Щоб перевірити, чи існує каталог, а потім виконати якесь завдання (наприклад, створити каталог), скористайтеся наступним
- 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модуль. Щоб створити каталог, потрібно вказати параметр state: directory:
- name: Creates directory
file:
path: /src/www
state: directory
state=directoryвсі безпосередні підкаталоги будуть створені, якщо їх не існує, оскільки 1.7 вони будуть створені з наданими дозволами.