Ansibleプレイブックを使用www
し/srv
て、Debianベースのシステムでディレクトリをどのように作成しますか?
Ansibleプレイブックを使用www
し/srv
て、Debianベースのシステムでディレクトリをどのように作成しますか?
回答:
ファイルモジュールが必要です。ディレクトリを作成するには、オプションを指定する必要があります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
(これらのグーグルのためansibleます。mkdir -p)。
recurse
パラメータは好きではありませんmkdir -p
。指定されたファイル属性を再帰的に設定します(state = directoryにのみ適用されます)。の場合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
ここでのすべての回答に加えて、複数のディレクトリを作成する必要がある状況がたくさんあるため、ディレクトリごとに個別のタスクを作成する代わりにループを使用することをお勧めします。
- name: Creates directory
file:
path: "{{ item }}"
state: directory
with_items:
- /srv/www
- /dir/foo
- /dir/bar
Windowsでディレクトリを作成する場合:
- 名前:ディレクトリ構造の作成
win_file:
パス:C:\ Temp \ folder \ subfolder>
状態:ディレクトリ
私たちはディレクトリを作成するために利用可能なモジュールを持っています
例
- 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
上記のプレイブックでは、/ srcパスにwwwディレクトリが作成されます。
上記のプレイブックを実行する前。ansibleホスト接続が設定されていることを確認してください。
「localhost ansible_connection = local」
/ etc / ansible / hostsに存在する必要があります
詳しくはお知らせください。
ファイルモジュールを使用してディレクトリを作成し、コマンド「ansible-doc file」を使用してファイルモジュールに関する詳細を取得します
説明するオプション「状態」は次のとおりです。
の場合
directory
、直接のサブディレクトリが存在しない場合はすべて作成されます。1.7以降は、指定された権限で作成されます。
の場合file
、ファイルが存在しないと作成されません。その動作が必要な場合は、[コピー]または[テンプレート]モジュールを参照してください。
の場合link
、シンボリックリンクが作成または変更されます。hard
ハードリンクに使用します。
の場合absent
、ディレクトリは再帰的に削除され、ファイルまたはシンボリックリンクはリンク解除されます。注
file
状態が変化しなかったとして、パスが存在しない場合は失敗しません。場合
touch
(1.4の新機能)のパスが存在しない場合は、既存のファイルまたはディレクトリが(双方向に似て更新されたファイルへのアクセスと修正時刻受け取ることになりますが、空のファイルが作成されますtouch
、コマンドラインからの作品を)。
この場合、「file」モジュールを使用できます。所有者、グループ、場所、モードなど、新しく作成されたディレクトリに渡すことができる非常に多くの引数があります。
fileモジュールの詳細な説明については、このドキュメントを参照してください...
https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module
このモジュールはディレクトリを作成するためだけのものではないことに注意してください!!!
Playbookの例がたくさんありますが、アドホックコマンドの例についても触れておきます。
$ ansible -i Inventory -m file -a "path = / tmp / direcory state = directory(ディレクトリの代わりに、ファイルを作成するためにtouchと言うことができます)
ディレクトリが存在するかどうかを確認してから、いくつかのタスク(たとえば、ディレクトリの作成)を実行するには、以下を使用します。
- 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
state=directory
、直接のサブディレクトリが存在しない場合はすべて作成されます。1.7以降は、指定された権限で作成されます。