クラウドサービス/ローカルな仮想マシンを利用していると起動イメージ作成時点ですでにユーザーなどの環境は作成済みの場合も多く…というかほとんどそうなので今更感があるのですが、素のISOイメージから起動して作成する際に役立つと思っている(役立った)設定です。
作業用アカウントを作成し、必要なときはsudoで一時的に権限を使用することで作業中の安全性を高めることが出来ます。
このエントリーの内容を盛り込んだkickstartを行えば、起動後の構築時にssh経由での作業を行う場合の準備などに使えると思います。packerなどで構成される際にいかがでしょう。
kickstartにおける先人の知恵
以下の情報は非常に有用でした。ありがとうございます。
kickstartはバージョンが違っても大枠は同じです。 %end
の扱いなどでハマりましたが…
それにしてもRedHatのドキュメントはkickstartにかぎらず非常に有用です。
アカウント追加の方針・実施内容
cloudpack
というアカウントを追加する前提で進めます。
このアカウントはsudoが可能で、パスワードは cloudpack
とします。
構築を済ませてssh公開鍵設定などが終わり次第、パスワードは抜く・sshd_configを調整する、は最低限実施しましょう。
アカウントを追加する
以下1行にてアカウントを追加します。rootpwの後あたりに入れます。
user --name=cloudpack --uid=500 --groups=cloudpack,wheel --password=cloudpack
sudoにかかるバイナリ導入および事前作業を自動で実施する
%post
の中に入れます。ひと通りの校正が終わった後の処理として実行されます。
shellで解釈できる内容であれば問題なく実行されます。
sudo導入
- yumにてsudoを導入する(その前のpackagesで実施してもよい)
sudoers.d/ 以下へアカウント別設定ファイルの作成
- sudoers.d/cloudpack を作成し、cloudpackアカウントでのsudo権限を設定する
- sudoers.d/cloudpack のファイル権限を
0440
とし、正しくsudoが認識するようにする
リモートからの自動作業に支障をきたさないための設定
- リモートからの作業に支障を来さないようにrequirettyをコメントアウトする
設定例
%post
/usr/bin/yum -y install sudo
echo "cloudpack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/cloudpack
chmod 0440 /etc/sudoers.d/cloudpack
sed -i.bak "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
%end