Як створити каталог 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 вони будуть створені з наданими дозволами.