Как создать каталог 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
сбивает с толку, не могли бы вы это определить и привести пример?
Вы даже можете расширить файловый модуль и даже установить владельца, группу и разрешение через него. (Ссылка: Ansible файл документации )
- 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
Каталог может быть создан только с использованием файлового модуля, так как каталог - это не что иное, как файл.
# 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:
путь: C: \ Temp \ folder \ subfolder>
состояние: каталог
У нас есть модули для создания каталога, файла в 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. Пожалуйста, убедитесь, что ваше соединение с ansible host должно быть установлено,
"localhost ansible_connection = local"
должен присутствовать в / 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.
ИЛИ
Вы хотите дать привилегии sudo этому каталогу.
Я вижу много примеров Playbooks, и я хотел бы упомянуть пример команд Adhoc.
$ ansible -i инвентаризация -m файл -a "путь = / tmp / direcory state = каталог (вместо каталога можно упомянуть касание для создания файлов)
Вам нужно использовать файловый модуль для этого случая. Ниже Playbook вы можете использовать для справки.
---
- 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 они будут созданы с предоставленными разрешениями.