Believe you can

If you can dream it, you can do it.

初めてAnsibleを試してプチハマりした話

最近流行っている(?)Ansibleを試してみました 思わぬところでプチハマりをしたので同じ人が出ても困らないようになればいいなーということで記事として残しておこうと思います

Ansibleって?

オープンソースの運用管理・運用自動化ツールです 多数の構築対象サーバに対してミドルウェアのインストール、アプリケーションのインストールを実行してくれます 詳しくはこちらで^^; qiita.com

LAMP構成を作る

YAMLファイルにインストールするミドル等を書いていきます 今回はLAMP構成を作成してみます

- hosts: servers
  become: yes

  tasks:
    - name: install apache
      apt: name=apache2 state=present
      notify: restart apache

    - name: install php
      apt: name={{item}} state=installed
      with_items:
        - php7.0
        - php7.0-mysql
        - libapache2-mod-php7.0
        - php7.0-mcrypt
      notify: restart apache

    - name: install mysql
      apt: name=mysql-server state=installed
      notify:
        - start mysql
        - setup mysql

  handlers:
    - name: restart apache
      service: name=apache2 state=restarted enabled=yes
    - name: start mysql
      service: name=mysql state=started enabled=yes
    - name: setup mysql
      command: mysqladmin -u root password mysql_password0

ansible-playbook ansible.yml を実行すると servers に定義したサーバに以下をインストールしてくれます

何にハマったか

わざとシンタックスエラーが発生するように一部書き換えてみましょう

hoge: name=apache2 state=restarted enabled=yes

これの状態で実行すると当たり前にエラーが発生します

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.

The error appears to have been in '/home/ubuntu/ansible.yml': line 25, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

  handlers:
    - name: restart apache
      ^ here

ん? line 25^ here で示している場所がエラーになる場所と違う どうも対象行の上がエラーとして表示されてしまうようで、アホな僕はしばらく悩んだのでした。。

Ansibleってそういうものなんですかね? 大したことではないですが、同じ悩みになる人が減りますように・・・