以前会社の開発用サーバを作るときに、Chefを使おうかと思っていたけれど、時間的な制約もあったので、使わずに構築してしまいました。今後のことを考えると、やはりこういう構築作業は自動化できるようにしたい…、ということで、方法を調べていました。Chefの入門的な記事も試していたのですが、Chefより事前の準備が少なくて済むらしい、というAnsibleを学んでみることにしました。
ちょうどサーバ構築の仮想化や自動化について学びたくて、「プログラマのためのDocker教科書」と「サーバ/インフラエンジニア養成読本DevOps編」を購入したのですが、Dockerよりも先にこちらをやったほうがよいかも、という思いもあり、ちょうどAnsibleの記事があったので、こちらをやってみました。
先に、下記記事でとりあえずVagrantとAnsibleが実行できる環境を作ってから本に倣って進めていました。
→AnsibleとVagrantで開発環境を構築する – さくらのナレッジ
本のAnsibleの記事、ソースも説明があって、勉強になったのですが、途中に存在しないファイルがあったり、エラーが出ても入門したて過ぎてわからずハマったりしたので、第3章「Ansible[実践]」を試して困ったことをメモしてみます。
出てくるJinja2ファイルのサンプルが無い
わかるでしょ、ということで存在していないのだと思いますが、ちょっと困りました。
ひとまず、httpd.conf等は途中までインストールしたうえで、コピーして持ってくるのが早かったです。一度vagrantにログインして、
cp /etc/httpd/conf/httpd.conf /vagrant/httpd.conf.j2
などとすればOKのはず。
pg_hba.conf.j2も同様にコピーして、記事のとおりに編集すれば動作しました。一度、Playbookを実行して、postgresqlの箇所でエラーを発生させれば、元ファイルができるので、それを上記同様にコピーして編集します。
vhosts.conf.j2は自分で作ればOKのようです。
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "{{apache_document_root}}" ServerName {{apache_server_name}} <Directory {{apache_document_root}}> AllowOverride All Require all granted </Directory> </VirtualHost>
.env.j2も自作で代用しました。
APP_ENV={{deploy_laravel_env}} APP_DEBUG={{deploy_laravel_debug}} APP_KEY={{deploy_laravel_app_key}} DB_CONNECTION=pgsql DB_HOST={{db_host}} DB_DATABASE={{db_database}} DB_USERNAME={{db_username}} DB_PASSWORD={{db_password}}
途中に出てくるzzmyphp.iniは空のファイルでも問題ありませんでした。
設定ファイルの書き方
YAMLファイルは今回はじめて書いてみたんですが、何かが難しいわけではなく、ぱっと見てわかるのが良いですね。タブが使えず、スペースで書く必要があったり、commandとshellの使い分けがよくわからなかったりしましたが、書き間違い以外ではそれほど困らなかったです。
state=presentのスペルミス(precentって書いてあった)、スペースが全角になってる、role_attr_flags=CREATEDB,NOSUPERUSERのカンマの後にスペースを入れてエラー等、いろいろ体験しましたが、エラー文をもうちょっと注意深く読めば解決が早かったかもしません。
Composerのインストール時の–
最初意味がわからなかったので、無視して書いてしまいました。実行時に全然違う場所でエラーになったので、原因がつかめず困りました。
- name: composer.pharインストール shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer creates=/usr/bin/composer
ここの最初の–はどういう意味なんでしょう?オプションを指定する際に必要なもの?なんでしょうか。
artisanも何?って思ったんですが、これはComposerのコマンドラインインタフェースだそうです。
→Laravel artisanコマンドメモ – Qiita
ひとまず、Ansibleの設定の仕方と、第4章の設定の作法を学んだので、他のPlaybookを持ってきてテストサーバを構築したりできそうです。
vagrantと一緒に使って、何度も壊したり入れたり試せるのがいいですね。