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