初めて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ってそういうものなんですかね? 大したことではないですが、同じ悩みになる人が減りますように・・・