Ansibleを触ってみた。


以前会社の開発用サーバを作るときに、Chefを使おうかと思っていたけれど、時間的な制約もあったので、使わずに構築してしまいました。今後のことを考えると、やはりこういう構築作業は自動化できるようにしたい…、ということで、方法を調べていました。Chefの入門的な記事も試していたのですが、Chefより事前の準備が少なくて済むらしい、というAnsibleを学んでみることにしました。

ちょうどサーバ構築の仮想化や自動化について学びたくて、「プログラマのためのDocker教科書」と「サーバ/インフラエンジニア養成読本DevOps編」を購入したのですが、Dockerよりも先にこちらをやったほうがよいかも、という思いもあり、ちょうどAnsibleの記事があったので、こちらをやってみました。

サーバ/インフラエンジニア養成読本 DevOps編 [Infrastructure as Code を実践するノウハウが満載! ] (Software Design plus) プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化

先に、下記記事でとりあえず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と一緒に使って、何度も壊したり入れたり試せるのがいいですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です