ansibleサーバでansibleを使って、ターゲットサーバにapache2を入れるまでの手順
環境:Google Compute Engine上のdebian10
- deb01: ansibleサーバ
- deb02: ターゲットサーバ
1. ansibleサーバの作業(1)
1) GCPのVMインスタンスの画面からSSH接続でログイン
2) rootになる
$ sudo su -
3) ユーザー作成
# adduser dev01
4) /etc/sudoers.d/配下にdev01を作成する
# cd /etc/sudoers.d # vi dev01
dev01の内容
dev01 ALL=(ALL:ALL) NOPASSWD:ALL
5) dev01ファイルをリードオンリーにする
# chmod 0440 dev01
6) 一旦rootからログアウト
# exit
7) ユーザdev01からrootにパスワード無しでsuできるか確認
$ su - dev01 (パスワードを入力) $ sudo su - (パスワード入力なしでrootになるはず)
ここまでできれば、一旦終了。exitしてdev01に戻る
2.ターゲットサーバの作業
1) 1. ansibleサーバの作業の1)~5)までを実施
2) sshでのパスワードログインを(一時的に)有効にする /etc/ssh/sshd_configを編集し、PasswordAuthentication noを yes に変更
# vi /etc/ssh/sshd_config (内容の編集) PasswordAuthentication no (変更前) ↓ PasswordAuthentication yes (変更後)
3) sshdを再起動
# systemctl restart sshd
4) ターゲットサーバーの作業はここで一旦終了。ログアウトする
3. ansibleサーバの作業(2)
1) sshでターゲットサーバーにパスワードを使ってログインできるか確かめる。
ユーザdev01になってsshでターゲットサーバにログイン
$ su- dev01 $ ssh deb02 #deb02はターゲットサーバー
2) exitしてansibleサーバに戻った後、sshの鍵ペアを作成する。パスフレーズを聞かれたら、何も入力せずにエンター
$ ssh-keygen -t rsa -b 4096
3) ターゲットサーバに公開鍵をコピーする。ターゲットサーバ側のパスワードを聞かれるので入力する
$ ssh-copy-id deb02
4) 再度sshでターゲットサーバーにログイン。パスワードを聞かれないことを確認
(ここからansibleインストール)
5) /etc/apt/sources.list に以下を追加
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
6) 以下のコマンドを実行して、ansibleをインストール
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible
参考) Ansible のインストール — Ansible Documentation
7) /etc/ansible/hostsを編集
(末尾に以下を追加) [svrs] 10.128.0.3 #ターゲットサーバのIPアドレスを設定する
8) ansibleのpingモジュールで動作テスト(参考として実行結果も掲載)
$ ansible svrs -m ping [WARNING]: Platform linux on host 10.128.0.3 is using the discovered Python interpreter at /usr/bin/python3.7, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. 10.128.0.3 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3.7" }, "changed": false, "ping": "pong" }
(WARNINGが出ているが、今は何が問題でどうやって消すのかは不明)
9) apacheをインストールするansibleのplaybookを作成する。以下の内容でapache2.ymlを作成 (ファイルの作成場所は任意でOK)
- hosts: svrs remote_user: dev01 become: yes tasks: - name: Install the package "apache2" apt: name: apache2
10) apache2.ymlを実行
$ ansible-playbook apache2.yml
11) ターゲットサーバーにアクセスし、Webサイトが見えたら成功!
参考サイト: