itamae で別ユーザ権限のファイルに file を使いたい
file '/home/ssm-user/.bashrc' do
action :edit
user 'ssm-user' # 'root' でもだめ
block do |content|
if content =~ /^eval "$(rbenv init -)"/i then
else
content << 'eval "$(rbenv init -)"'
end
end
end
たとえばこのような itamae レシピを ec2-user で ssh 経由で実行すると
ec2-user に sudo 権限があるにもかかわらずパーミションエラーになります
DEBUG : file[/home/ssm-user/.bashrc]
DEBUG : file[/home/ssm-user/.bashrc] action: edit
DEBUG : (in pre_action)
DEBUG : Executing `sudo -H -u ssm-user -- /bin/sh -c cd\ \~ssm-user\ \;\ test\ -f\ /home/ssm-user/.bashrc`...
DEBUG : exited with 0
DEBUG : Receiving a file from '/home/ssm-user/.bashrc'...
bundler: failed to load command: itamae (/home/ec2-user/git/itamae/vendor/bundler/ruby/2.5.0/bin/itamae)
Net::SCP::Error: SCP did not finish successfully (1): scp: /home/ssm-user/.bashrc: Permission denied
/home/ec2-user/git/itamae/vendor/bundler/ruby/2.5.0/gems/net-scp-2.0.0/lib/net/scp.rb:365:in `block (3 levels) in start_command'
:
どうも1度 scp でファイルを取得してから
content を変更してかき戻すというようなことをやってるんでしょうか
その最初の scp でこけてるみたいな感じです
remote_file なら root のファイルも置換できるようなのですが
差分編集は file でないとできない気がするので
root やほかユーザのファイルを差分編集するにはどうすればいいのでしょうか