Ansibleプレイブックを使用して、Debianベースのシステム上で/srv
にディレクトリwww
をどのように作成しますか?
あなたはファイルモジュールが欲しいです。ディレクトリを作成するには、オプションstate=directory
を指定する必要があります。
- name: Creates directory
file:
path: /src/www
state: directory
あなたは他のオプションを見ることができます http://docs.ansible.com/file_module.html
ファイルモジュールを拡張して、それを通して所有者、グループ、パーミッションを設定することもできます。 (Ref: 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
このようにして、両方のディレクトリが存在しない場合は作成されます。
あなたが使用して作成することができます:
- 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
- file:
path: /etc/some_directory
state: directory
mode: 0755
owner: someone
group: somegroup
それはあなたが実際にも許可、所有者、グループを設定することができる方法です。最後の3つのパラメータは必須ではありません。
ディレクトリを作成することができます。使う
# create a directory if it doesn't exist
- file: path=/src/www state=directory mode=0755
ディレクトリとファイルシステムの詳細については http://docs.ansible.com/ansible/file_module.html を参照してください。
あなたは文を使用することができます
- name: webfolder - Creates web folder
file: path=/srv/www state=directory owner=www-data group=www-data mode=0775`
Ansibleの文書によれば 、次のように定義することで可能になります。
# create a directory if it doesn't exist - file: path: /etc/some_directory state: directory mode: 0755
特定の配布用のタスクを実行するための条件を設定するだけです
- name: Creates directory
file: path=/src/www state=directory
when: ansible_distribution == 'Debian'
ディレクトリ、ファイルを作成するためのモジュールがあります。
例
- name: Creates directory
file:
path: /src/www
state: directory
ここでのすべての答えに加えて、複数のディレクトリを作成する必要がある場合が多いので、各ディレクトリに別々のタスクを作成する代わりにループを使用することをお勧めします。
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
ディレクトリを作成するには
ansible Host_name -m file -a "dest=/home/ansible/vndir state=directory"
Ansibleでディレクトリを作成にする最も簡単な方法。
または
そのディレクトリにSudo権限を与えたい。
---
- hosts: all
connection: local
tasks:
- name: Creates directory
file: path=/src/www state=directory
Playbookの上には/ srcパスにwwwディレクトリが作成されます。
プレイブック上で走る前に。あなたのAnsible Host接続が設定されるべきであることを確認してください、
"localhost ansible_connection = local"
/ etc/ansible/hostsに存在する必要があります。
詳細については私に知らせてください。
Windowsでディレクトリを作成したい場合:
- name:ディレクトリ構造を作成
win_file:
パス:C:\ Temp\folder\subfolder>
state:ディレクトリ
ファイルモジュールを使用してディレクトリを作成し、コマンド "ansible-doc file"を使用してファイルモジュールに関する詳細を取得します。
これが説明するオプション "state"です。
directory
の場合、直接サブディレクトリが存在しない場合はすべて作成されます。1.7以降は、提供された権限を使用して作成されます。file
の場合、ファイルが存在しなければ作成されません。そのようにしたい場合は[copy]または[template]モジュールを参照してください。link
の場合、シンボリックリンクは作成または変更されます。ハードリンクにはhard
を使用してください。
もしabsent
なら、ディレクトリは再帰的に削除され、ファイルやシンボリックリンクはリンク解除されます。状態が変化しなかったのでパスが存在しなくても
file
は失敗しないことに注意してください。
touch
(1.4の新機能)の場合、パスが存在しない場合は空のファイルが作成されますが、既存のファイルまたはディレクトリは更新されたファイルアクセスおよび変更時刻を受け取ります(touch
がコマンドラインから機能する方法と同様)。
この場合は "file"モジュールを使用できます。所有者、グループ、場所、モードなど、新しく作成されたディレクトリに渡すことができる引数は非常にたくさんあります.....
ファイルモジュールの詳細な説明についてはこの文書を参照してください。
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
このモジュールはディレクトリを作成するためだけのものではありません。
あなたは直接コマンドを実行し、ansibleを使って直接作成することができます。
ansible -v targethostname -m Shell -a "mkdir /srv/www" -u targetuser
OR
ansible -v targethostname -m file -a "path=/srv/www state=directory" -u targetuser