インフラエンジニア歴約2か月弱、Ansibleのモジュール開発を行う事になったのでその事前準備をしました。
Ansibleは設定を流したいサーバーにssh接続さえできれば、OSの設定やパッケージのインストールなどの重要作業が複数のサーバーに同時に実行できますが、それは誤った作業をすればクリティカルな問題を引き起こす要因にもなりえるという意味にもなります。
ですので、誤操作対策のためにAnsible実行専用ユーザーを作成し、必要に応じて都度特権を与えるという運用にします。
<操作環境>
ansibleサーバー:ubuntu18.04
処理対象サーバー:centos7.4
手順①:AnsibleサーバーにAnsible実行用のユーザーを作成する。
以下の操作をAnsibleサーバー(今回の場合だとubuntuの方)で行う。
[root@username ~] hostnamectl set-hostname ansible-user #ansible-userは任意。ここではansible用なのでansible-userとしました。
[root@username ~] useradd -s /bin/bash -m ansible-user
[root@username ~] passwd ansible-user #任意のパスワード設定
以下の操作を処理対象サーバーに対しても行う。
[root@username ~] useradd -s /bin/bash -m ansible-user
[root@username ~] passwd ansible-user #任意のパスワード設定
ここまでできたら、公開鍵と秘密鍵をAnsibleサーバーに作成し、処理対象サーバーに接続できるようにします。
[root@username ~] su - ansible-user #Ansible用のユーザーになってから鍵を作成する。
#ログは省略
[ansible-user@username ~] ssh-keygen
[ansible-user@username ~] ssh-copy-id -i ~/.ssh/id_rsa.pub localhost
[ansible-user@username ~] ssh-copy-id -i ~/.ssh/id_rsa.pub 処理対象サーバーのipアドレス
鍵は処理対象サーバーごとに配布していきます。私の場合、処理対象サーバーは5台ありましたので、処理対象サーバーにansible-userを作成&鍵配布(ssh-copy-id -i ~/.ssh/id_rsa.pub 処理対象サーバーのipアドレス)×5をやりました・・・。
##考えた事##
これからAnsibleを導入しようとする場合、大規模システムだとサーバーが何百台もあるので、もしssh接続をやっていない状態だったらどうやってssh接続できるように設定していくのか悩みどころかと思いました。(上記作業を台数分やるのは骨が折れる・・・)
どのように導入ているのかは、海外事例も参考にしながら検討していくのが良さそうですね。
以上、自分のメモ用&誰かの参考になれば幸いです。
ご指摘などあればどしどしお願いしますm__m