私のプレイブックには
- name: Grab h5bp/server-configs-nginx
git: repo=https://github.com/h5bp/server-configs-nginx.git
dest=/tmp/server-configs-nginx
version="3db5d61f81d7229d12b89e0355629249a49ee4ac"
force=yes
- name: Copy over h5bp configuration
command: cp -r /tmp/server-configs-nginx/{{ item }} /etc/nginx/{{ item }}
with_items:
- "mime.types"
- "h5bp/"
これにより、ansible-lintで警告が発生します。
[ANSIBLE0006] cp used in place of copy module
/Users/austinpray/Dropbox/DEV/opensauce/bedrock-ansible/roles/nginx/tasks/main.yml:0
Task/Handler: Copy over h5bp configuration
したがって、これは疑問を提起します:コマンドではなく、ansibleモジュールでこれを行うより良い方法はありますか?
現在、command
が最適なオプションです。リモートからリモートへのオプションはありません。これについてのスレッドは次のとおりです。 リモートシステムでAnsibleタスクを使用してファイルを移動/名前変更する方法
他にもいくつかのオプションがあります。
file
モジュールを使用してシンボリックリンクを作成できます(src
、path
、およびstate=link
。copy
を使用できます。これは、コードを展開するためのより一般的なモデルです。command
を使用し続けることができますが、stat
条件でラップして、一度だけ上書きされるようにします。これは、notify
を使用してnginxを再起動する場合に特に役立ちます。最後に、「git by deploy」を実行しているように見えます。そのレポを「所有」していない場合、それが常に最良の選択であるとは限りません。特に。しかし、それは問題ないかもしれません-ほんの少しのコードの匂いです。
synchronize
module をmode='pull'
で使用できます
- name: Copy over h5bp configuration
synchronize: mode=pull src=/tmp/server-configs-nginx/{{ item }} dest=/etc/nginx/{{ item }}
with_items:
- "mime.types"
- "h5bp/"
注:リモートからリモートにコピーするには、同じコマンドを使用して、delegate_to
(リモートソースとして)と現在のinventory_Host
(リモートdestとして)を追加します
Ansible 2.0はremote_src
パラメーターをcopy
モジュールにもたらします: http://docs.ansible.com/ansible/copy_module.html
今、あなたは次のようなことをする必要があります:
- name: Copy over h5bp configuration
copy: src=/tmp/server-configs-nginx/{{ item }} dest=/etc/nginx/{{ item }} remote_src=yes
with_items:
- "mime.types"
- "h5bp"
別の方法は、フォルダーを圧縮してからunarchive ansible
モジュールを使用することです:
- name: copy your folder using a work around
unarchive: src=your.Zip dest=/destinationfolder
become: yes
これにより、コピー先にフォルダーが解凍されるので、フォルダーのコピーがあります;-)ですが、ターゲットマシンにnzipパッケージがあることを忘れないでください。
RHEL:
yum install unzip -y
Debian:
apt install unzip
ユーザーdirectory_modeフィールド。
With_fileglobを使用できます: http://docs.ansible.com/ansible/playbooks_loops.html#id4
# copy each file over that matches the given pattern
- copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600
with_fileglob:
- /playbooks/files/fooapp/*