地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【Ansible】userモジュールが常にchangedとなってしまうのを防ぐ

- name: Creating user "{{ uusername }}" with admin access
  user: 
    name: {{ uusername }}
    password: {{ upassword | password_hash('sha512') }}
    groups: admin append=yes

userモジュール使ってパスワードを設定しようとすると毎回changedが出てしまいhandlerとかの処理が複雑になってしまうとういのがあった。

毎回changedになる原因としてはpassword_hashのfilterがhashする際に使用するソルトを指定しないと毎回関数側でソルトを生成するため起きている。(ソースは以下あたり)

ansible/encrypt.py at devel · ansible/ansible · GitHub

毎回changedを防ぐためには公式を見るとfilterの第二引数にsaltを指定できることが記載されている。ここに自前でsalt値を用意しておけば毎回生成の処理は走らないのでchangedになるのは防ぐことが可能となっている。

f:id:ryuichi1208:20201106113146p:plain