/etc/nginx/sites-enabled
をレポジトリへのシンボリックリンクに置き換えたいと思います。私はfile
モジュールを使用してこれを実行しようとしていますが、ファイルモジュールは強制オプションでディレクトリを削除しないため、機能しません。
- name: setup nginx sites-available symlink
file: path=/etc/nginx/sites-available src=/repo/etc/nginx/sites-available state=link force=yes
notify: restart nginx
シェルの使用に戻ることができました。
- name: setup nginx sites-available symlink
Shell: test -d /etc/nginx/sites-available && rm -r /etc/nginx/sites-available && ln -sT /repo/etc/nginx/sites-available /etc/nginx/sites-available
notify: restart nginx
シェルにフォールバックする代わりにこれを達成するより良い方法はありますか?
あなたが行動を起こすとき、それは実際にはものです:
これはおそらく、Ansibleで表現する最もクリーンな方法でもあります。
tasks:
- name: remove the folder
file: path=/etc/nginx/sites-available state=absent
- name: setup nginx sites-available symlink
file: path=/etc/nginx/sites-available
src=/repo/etc/nginx/sites-available
state=link
force=yes
notify: restart nginx
しかし、常にシンボリックリンクを削除して追加することはそれほど良いことではないので、リンクターゲットをチェックするタスクを追加することは素晴らしい追加かもしれません:
- name: check the current symlink
stat: path=/etc/nginx/sites-available
register: sites_available
そして、削除タスクの「when」条件:
- name: remove the folder (only if it is a folder)
file: path=/etc/nginx/sites-available state=absent
when: sites_available.stat.isdir is defined and sites_available.stat.isdir