Contents
導入
サーバーの環境は普段CentOS7を使っていたですがAnsibleでremiリポジトリの追加が上手くいかずに手こずっていたところ,ubuntu16.04では標準のリポジトリでPHP7がインストール出来ると知ったのでubuntuサーバーでAnsibleを試してみました。
参照:
Ansibleで行うVagrantの開発環境構築/koltatt
AnsibleのプレイブックをRolesで構成する/koltatt
実行環境
ホストOS ubuntu16.04LTS
ゲストOS ubuntu16.04LTS
Vagrant 1.8.6
VirtualBox 5.0.24
Ansible 2.1.2.0
準備
今回Vagrantで仮想環境上のubuntu16.04にPHP7とNginxを追加していきますが、ubuntu16.04にはAnsibleを利用するために必要なPython2がデフォルトではインストールされていないので、まずはPython2をサーバーにインストールする必要があります。
AnsibleのサイトにPython2がインストールされていないケースについての説明がありますが、aptモジュールが使えないためrawモジュールによってPython2をインストールします。またPythonが無いとリモートからサーバーの情報が上手く得らずエラーが出てしまうのでfactsの利用をオプションでOFFにしておきます。
--- - hosts: all gather_facts: no tasks: - name: install python 2.7 raw: sudo apt-get install -y python2.7
インストール後にAnsibleをPython2で実行することを明示するため、グループかインベントリの変数で設定をすればAnsibleでプロビジョニングが出来るようになります。
--- ansible_python_interpreter: /usr/bin/python2.7
参照:
Variables/Ansible
Instllation/Ansible
roles
PHP
tasks
ubuntu16.04の標準リポジトリからaptでインストールします。
--- - name: Install PHP become: yes apt: pkg=php7.0 state=latest - name: install PHP packages become: yes apt: pkg="{{ item }}" state=latest with_items: - php7.0-fpm - php7.0-cli - php7.0-common - php7.0-curl - php7.0-json - php7.0-gd - php7.0-mcrypt - php7.0-odbc - php7.0-pgsql - php7.0-mbstring - php7.0-mysql - php7.0-xmlrpc - php7.0-opcache - php7.0-intl - php7.0-bz2 - php7.0-xml
Nginx
templates
Nginxの設定ですがubuntuではCentOSと違い/etc/nginx/sites-available/に設定ファイルを置くのが推奨されているようなので、こちらにAnsibleのテンプレートを使ってサーバーの設定をしていきます。
server { listen 80 default_server; listen [::]:80 default_server; server_name localhost; charset utf-8; root /var/www; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
tasks
- name: Install Nginx become: yes apt: pkg=nginx state=latest - name: Copy nginx default configuration become: yes template: > src=sites_available_default.j2 dest=/etc/nginx/sites-available/default owner=root group=root mode=0644 notify: restart nginx
handlers
- name: restart nginx become: yes service: name=nginx state=restarted
実行
$ vagrant up --provision or $ vgrant provision
動作確認
$ vi /var/www/info.php
<?php phpinfo();
ブラウザで Vagrantで設定したipアドレス/info.php に接続すると、PHPのページが表示される事が確認出来ます。
あとがき
サーバーはずっとCentOSを使っていたのですがCentOSでずっと上手く行かずにほとほと嫌になっていたAnsibleでのPHP7のインストールがubuntuではあっさり出来てしまい、これに気を良くしたのでサーバーのubuntuにちょっと手を出してみようかと思います。