やりたかった事
定期的にjcmdを使ってGCを強制的に発生をさせたかった。
そこでAnsibleを用いて実行をさせようとしたが、root権限のままではAttachできないとJVMに怒られるので、
Tomcat(正確にはTomEEだが)を起動させているユーザであるtomcatユーザにてsudo実行を行おうとした。
shell: sudo -u tomcat jcmd `jps | grep Bootstrap | awk '{print $1}` GC.run
しかし、上記内容にて実行を行うと、以下の様なウォーニングが発生した。
Consider using 'become', 'become_method', and 'become_user' rather than runnig sudo
原因
Ansibleではsudoコマンドを直接利用するのは、現在非推奨になっているため。
対応方法
以下の様に書き換える事で無事解決した。
なお、become_methodのデフォルト値はsudoなので、この場合はbecome_method節を書く必要はない。
-name : GC Run become: yes become_user: tomcat shell: jcmd `jps | grep Bootstrap | awk '{print $1}` GC.run