環境
host os
- macos10.11.5
- vagrant1.8.1
- ansible2.1.0
guest os
- centos6.7
- redis3.2.0
ハマったところ
http://redis.io/topics/quickstart を参照しansibleを書いていましたが公式のクイックスタート通りにインストールするとchkconfigにredisを追加できないので、redis_init_scriptファイルに以下の行を追加する必要がありました。
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
# ここから
# chkconfig: - 85 15
# description: redis-server
# processname: redis_6379
# ここまで追加
修正したスクリプトファイルをrole/redis/files/配下に保存し、ansibleのcopyモジュールでゲストOSの/etc/init.d/配下にコピーした後、serviceモジュールで起動+chkconfig追加をしたかったです。
以下のようにansibleのタスクを書きましたが、
- name: copy redis_init_script
sudo: yes
copy: src=redis_init_script dest=/etc/init.d/redis_6379
#### 省略 ####
- name: start redis
sudo: yes
service: name=redis_6379 state=started enabled=yes
playbookを起動すると以下のように存在しないサービス名ですよだと怒られます。
どう解決したのか
理由はものすごく単純でした!! ホストOSからゲストOSに正しくスクリプトがコピーはされていました。
少し、違和感ありますよね。そうです。redisスクリプトの実行検眼がありませんでした。ansibleのcopyモジュールに権限オプションmode=0755を追加しました。
- name: copy redis_init_script
sudo: yes
copy: src=redis_init_script dest=/etc/init.d/redis_6379 mode=0755