ansible 実行時に tmp ファイルに権限がないって怒られて失敗する
問題
rundeck から ansible 実行時に以下のエラーで ansible が失敗する。
Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user (rc: 1, err: chown: changing ownership of `/tmp/ansible-tmp-1539668029.49-46797233464078/': Operation not permitted chown: changing ownership of `/tmp/ansible-tmp-1539668029.49-46797233464078/command.py': Operation not permitted }). For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user
このエラーは、 以下のように ssh ユーザ(ssh_user) と become-user (exec_user)で別のユーザを設定したときに発生する。 以下のように ssh ユーザ(ssh_user) でそのまま ansible 実行した場合はこのエラーは発生しない。
ansible -i <inventory_file> <hostname> -u <ssh_user >-m shell -a "git clone git@github.com:maomaomaopan/test_repo.git" --become-method sudo --become-user exec_user
調べてみると、いくつか同様の自称でバグレポートが。 https://github.com/ansible/awx/issues/389 https://github.com/ansible/ansible/issues/35089
対応手順としては、エラーメッセージにかいてある通り、以下ページのとおりにすればよかった☺ https://docs.ansible.com/ansible/latest/user_guide/become.html#becoming-an-unprivileged-user
解決方法
- パイプラインを有効にする
ansible.cfg
[defaults] pipelining = True
rundeck プロセス再起動してもう一度ジョブ実行してもなぜか同様のメッセージでエラーになる。 まだ /tmp 下にファイル配置しているようだ。
- /tmp 下の一時ファイルを誰でも書き込み可能にする
ansible.cfg
[defaults] allow_world_readable_tmpfiles = True
根本解決にはなってないけどいったんこれで対応しておわり。
rundeck サーバ構築でハマる一覧
- rundeck の DB 接続設定
- DB サーバの文字コード設定
- まとめ
最近ジョブスケジューラとして rundeck がお気に入りでよく使用している。
複数バッチを順番に実行できるワークフローモードなどがあるので、今までは crontab で実行していた定期実行バッチも rundeck に移行している。
ansible 実行などのインフラプロビジョニングも rundeck で簡単に実行〜テストまで一連のジョブにして実行できるのでとても便利。
rundeck とは Linux でも Windows でも動く java ベースの OSS ツール。
わたしは Linux でしか稼働させたことがないが、サーバ構築時に何回もハマったことをメモしておく。
CentOS7系でLVM拡張コマンドが変わってた
最近になってようやく7系OSさわりはじめて、
いろいろはまってるけどそのうちのひとつ。
さようなら resize2fs。
ディスクの割り当てを増やし、いつも通りの手順で PV の拡張、 LV の拡張まで行い、
ファイルシステムの拡張を 6系同様 resize2fs コマンドで行おうとしたら下記のようなエラーに。
えっっっ
xfs とかオプション付与するのか??など調べた結果。
7系OS からは標準ファイルシステムが ext → xfs に変更になりましたが、
その関係で、ファイルシステム操作系コマンドもかなり変更になったようす。
ファイルシステムの拡張は xfs_growfs コマンドで行うようです。
ということで xfs_growfs コマンドで行ったところ無事にうまくいきました。
よかった〜
meta-data=/dev/hoge/VolGroup isize=512 agcount=4, agsize=1964032 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7856128, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3836, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7856128 to 10469376
参考
今から始めるRHEL 7 第2回 標準ファイルシステムとなったXFS | NTTデータ先端技術株式会社