AnsibleでNginx+PHP7+mariadb+Let’s encrypt(certbot)+wordpressでwordpress環境を構築
Ansibleとは
多数のサーバーや複数のクラウドインフラを統一的に制御できる構成管理ツールです。
構成管理ツールとしてAnsibleを選ぶべき理由-thinkit.co.jp
管理構成ツールは色々ありますが、今回はAnsibleを使ってみます。
Pythonで書かれたソフトウェアですが、設定はYAMLファイルに書くので、Pythonを覚える必要はありません。また、サーバに何かソフトウェアをインストール必要がなく、SSH接続ができれば使うことができるため、ConoHaでVPSを作成した後にすぐ使うことができます。
構成管理ツールAnsibleを使ってみよう-conoha.jp
管理対象のサーバーの環境
管理対象のサーバのシェルは(centos)$
と、ローカルの環境は(ubuntu)$
と表します。
前提として管理対象のサーバはドメインが割り当てられていて、外部からアクセスできるものとします。
(centos)$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
今回対象のサーバーに導入するもの
- Nginx:1.10.2
- Let's encrypt(certbot):0.12.0
- PHP:7.0.17
- Mariadb:5.5.52
ローカルの環境
(ubuntu)$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.2 LTS"
ローカルの環境にインストールするもの
- Ansible 2.2.2.0
Ansibleのインストール
PPAを追加してインストール
(ubuntu)$ sudo apt-get install software-properties-common (ubuntu)$ sudo apt-add-repository ppa:ansible/ansible (ubuntu)$ sudo apt-get update (ubuntu)$ sudo apt-get install ansible (ubuntu)$ ansible --version ansible 2.2.2.0
使ってみる
ホストの定義
操作する対象のホストを定義します。 ini形式でサーバーのグループとホストを定義します。
[グループ名] ホスト名
/etc/ansible/hosts
[web-server] server01
このホスト名は~/.ssh/config
を参照するのでSSH
の設定はそっちでやるほうが賢明です。
記述したホスト名で暗号鍵を使ってSSH
接続できるようにしときます。
~/.ssh/config
Host server01 HostName xxx.xxx.xxx.xxx Port 22 User root IdentityFile ~/.ssh/server01-key
IdentityFileに接続先の秘密鍵を格納し、対象サーバーの/root/.ssh/authorized_keys
に公開鍵を格納する
接続確認
ansible
コマンドの第一引数に先程定義したグループ名を指定します。
オプションで-m
でansibleが実行するモジュールを指定します。
今回はping
を実行してみます。
(ubuntu)$ ansible web-server -m ping xxx.xxx.xxx.xxx | SUCCESS => { "changed": false, "ping": "pong" }
SUCCESS
と出たら接続成功です。
PlayBookとは
Ansibleにはplaybookと言う仕組みがあります。YAMLフォーマットで書かれたファイルにサーバに対する操作を定義していき、それをansible-playbookコマンドで実行することで、サーバを常にplaybookで定義した状態にしておくことができます。
構成管理ツールAnsibleを使ってみよう-conoha.jp
実際に作ってみたのでGitHubを参考にしてください
https://github.com/AkashiSN/Ansible-Playbook-Nginx-PHP-7-mariadb-certbot-Wordpress
参考にさせていただいたサイト
centos7-php70-nginx-mariadb-ansible-github.com
Let's Encrypt の証明書を Ansible と certbot で Nginx にインストール & 自動更新-blog.yuyat.jp
Centos+nginxでLet’s encrypt(certbot)導入と自動更新まで-blog.potproject.net