Ansibleでnginxを簡単インストール
前回Amazon LinuxにAnsibleをインストールしてpingを送信するところまでやりました。今回は続きですのでAnsibleをインストールしていない人はまずは前回のインストールから実施してください。
Amazon LinuxでAnsibleを簡単インストール~ping送信まで - KAROUSHI -Japanese Engineer Blog-
今回はAnsibleでNginxをインストールしてみようと思います。これができれば環境構築のたびにインストールコマンドを繰り返す必要がなくなります。
目次
Ansible実行ユーザの用意
実行ユーザの作成
まずはAnsibleでログインするためのユーザを作成しましょう。
ログインできれば何でもいいので、すでにログインユーザがある場合は読み替えてください。
$ sudo useradd ansible $ sudo passwd ansible Changing password for user ansible. New password: <任意>(今回はpasswd) BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
BAD PASSWORDと怒られますが気にしない。
実行ユーザのsudo権限付与
sudo権限でyumなどを実行する必要があるため、権限を付与しましょう。
以下コマンドを実行して★の行を追記してください。
$ sudo visudo ----------ファイルの中身---------- # Defaults specification Defaults:ansible !requiretty ★ ## Allow root to run any commands anywhere root ALL=(ALL) ALL ansible ALL=(ALL) NOPASSWD:ALL ★
ユーザパスワードログインの許可
Amazon Linuxではデフォルトでユーザのパスワードログインができないようになっているので許可しておきましょう。
以下PasswordAuthenticationのnoをyesに変えましょう。設定を変更したらsshdを再起動するのを忘れずに。
$ sudo vim /etc/ssh/sshd_config PasswordAuthentication no →PasswordAuthentication yes $ sudo service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
ユーザログインの確認
最後にansibleでログインできることを確認しましょう。パスワードは先ほど作成した時に入力したものです。(今回はpasswd)
$ ssh ansible@localhost ansible@localhost's password: $ exit
プレイブックでNginxをインストールする
インベントリファイルの作成
Ansibleでは接続先情報をインベントリファイルに記載します。
インベントリファイルに複数のサーバ情報を記述する際に便利な記載方法があるが今回は説明しません。
今回は自サーバに接続するのでlocalhostと先ほど作成したansibleユーザの情報です。
$ mkdir -p ~/samplebook $ cd samplebook/ $ vi hosts.yml ----------中身---------- [localhost] localhost [all:vars] ansible_ssh_user=ansible ansible_ssh_pass=passwd
プレイブックの作成
ようやくプレイブックの作成です。今回行っているのは以下です。
$ vim main.yml ----------中身---------- - hosts: all become: yes tasks: - name: Nginxインストール yum: name=nginx state=latest - name: Nginx起動 service: name=nginx state=started enabled=yes - name: Nginxの起動確認 shell: ps aux | grep nginx register: ps_result changed_when: false - debug: var=ps_result.stdout_lines when: ps_result | success
プレイブックの実行
これで準備完了です。作成したインベントリと、プレイブックを指定したAnsibleコマンドを実行し、Nginxをインストール&起動しましょう。
$ ansible-playbook -i hosts.yml main.yml PLAY [all] ********************************************************************* TASK [setup] ******************************************************************* ok: [localhost] TASK [nginxインストール] ************************************************************* ok: [localhost] TASK [nginx起動] ***************************************************************** ok: [localhost] TASK [nginxの起動確認] ************************************************************** ok: [localhost] TASK [debug] ******************************************************************* ok: [localhost] => { "ps_result.stdout_lines": [ "root 4374 0.0 0.0 58084 1016 ? Ss 14:14 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf", "nginx 4376 0.0 0.3 58456 3932 ? S 14:14 0:00 nginx: worker process ", "root 8086 0.0 0.2 113084 2776 pts/3 S+ 16:21 0:00 /bin/sh -c ps aux | grep nginx", "root 8088 0.0 0.1 110460 2020 pts/3 S+ 16:21 0:00 grep nginx" ] } PLAY RECAP ********************************************************************* localhost : ok=5 changed=0 unreachable=0 failed=0
Nginxの画面確認
最後にhttp://