2017-05-22 7 views
0

プレイリストを作成してすべてのサーバーの権限を変更しようとしていますが、ディレクトリやファイルをほとんど除外する必要があります。私はファイルの割り当てを動的にしようとしていますが、私は2を除外していますが、一般化または動的にしたいと思っています。 plzが提案する。例えば、あなたが彼らの権限が変更されている必要があり、ディレクトリのあなたのリストを「ファイル」モジュール、およびループを使用することができ不可能な変数を動的にする方法

permission.yml: 
--- 
- hosts: 127.0.0.1 
    roles: 
    - { role: fileperm, target_dir: "/tmp/testingpermissions" } 
    - { role: fileperm, target_dir: "/tmp/abc" } 
    - { role: fileperm, target_dir: "/amp/app/tomcatdefault7055" } 


Vars: 
main.yml: 
    --- 
    exclude1: "/tmp/testingpermissions/plugins" 
    exclude2: "/tmp/testingpermissions/files" 


tasks: 
main.yml: 
--- 
- name: Ensure directories are 0755 
    command: find {{ target_dir }} -type d ! -path "{{ exclude1 }}*" ! -path "{{ exclude2 }}*" -exec chmod -c 0755 {} \; 
    register: chmod_result 
    changed_when: "chmod_result.stdout != \"\"" 
+0

ようこそをStackOverflowにします。あなたは質問をする前に[ask]ガイドを読むことを検討すべきです。サイトの詳細については、[ツアー]ページをご覧ください。 –

答えて

0

以下

は私の脚本で、私は、ディレクトリ構造を使用していますのでご注意くださいVARSでこのようSTH:

# /vars/main.yml 
updatepermissions: 
    - "/tmp/testingpermissions" 
    - "/tmp/abc" 
    - "/amp/app/tomcatdefault7055" 

...そして、タスクにこのようSTHは:

# /tasks/main.yml 
- name: Set directory permissions to 0755 
    file: 
    path: "{{ item }}" 
    state: directory 
    mode: 0755 
    with_items: "{{ updatepermissions }}" 

これは、指定したディレクトリのみにアクセス許可を設定します。そのため、除外された少数を除いてすべての権限を更新する代わりに、指定された権限を必要とするディレクトリのセットリストに対するアクセス権のみを更新します。

サブディレクトリのアクセス権の設定を除外したくないディレクトリの場合は、「recurse = yes」を追加できます。

あなたは "-path!" とコマンドタスクを好むそうでない場合、あなたはおそらくこのような何か行うことができます。このようなタスクのSTHで

# /vars/main.yml 
updatepermissions: 
    - include: "/tmp/testingpermissions" 
    exclude: "! -path \"/tmp/testingpermissions/plugins\" ! -path \"/tmp/testingpermissions/abc\"" 
    - include: "/some/other/directory" 
    exclude: "" 

、その後:

# /tasks/main.yml 
- name: update permissions 
    command: "find {{ item.include }} -type d {{ item.exclude }} -exec chmod -c 0755 {} \;" 
    register: chmod_result 
    changed_when: "chmod_result.stdout != \"\"" 
    with_items: "{{ updatepermissions }}" 
+0

ありがとう、これは助けますが、私の要件は30の40の異なるパスがあります。これはマークするNASマウントです。すべてのパスをハードコードするのは良いとは言えません。私はファイルからそれを読んでそれを使うことができますか?たとえば、私は20台のサーバーを持っていますが、それぞれに移動し、すべてのNASマウントを取り出してchmodからマークするコマンドを実行します。任意のアイデアplz。 –

関連する問題