AnsibleでコピーするときはSynchronizeモジュール使ったほうが幸せになれる

背景

Ansibleでターゲットホストに何かをコピーするとき
copyモジュールを使ってる人はとても多いと思います。

しかし恐ろしいぐらい遅いため、ansible copy slow何かで調べると
色々対策が書かれている記事があると思います。

まあそれを試しても劇的な改善はなく、結果として意味のないものです。

 

Synchronizeモジュールを使う

Ansible – synchronize

Copyモジュールと同等のことをやってみます。

1. ターゲットホストにファイルを配置する

 

2. パーミッションを変更する

Synchronizeモジュールにもownergroupオプションはあるんですが
これは Ansible 実行マシンに存在するユーザー、グループで且つ、
ターゲットホストにも存在しないといけないという制約があるので、
別タスクでパーミッション等を変更する必要があります。

 

比較

全部で350行ぐらいある Playbook の中のcopyモジュール版と
Synchronizeモジュール版で比べた結果です。

Copy

real 4m25.575s

Synchronize

real 2m12.755s

圧倒的

コメントを残す

メールアドレスが公開されることはありません。