質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

2回答

483閲覧

AnsibleでServiceの登録はできるが登録後の自動実行がされない

TJMYK

総合スコア82

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2018/03/01 10:04

現在、Ansibleで環境構築の自動化するロールを書いています。
実行対象は、localhostです。

以下のシェルスクリプトがサービスとして登録はされるのですが、Ansibleでの自動実行がされません。

bash

1#!/usr/bin/env bash 2# chkconfig: 2345 99 10 3# description: Test Runner 4# processname: Test_Service 5 6lock_file=/var/lock/subsys/Test_Service 7 8case "$1" in 9 start) 10 if [ -f $lock_file ]; then 11 echo 'Test_Service Already Running' 12 exit 1 13 fi 14 15 /usr/bin/env ruby /usr/local/bin/test.rb 16 touch ${lock_file} 17 ;; 18 stop) 19 /usr/bin/env ruby /usr/local/bin/test.rb 20 rm -f ${lock_file} 21 ;; 22 *) break ;; 23esac

playbook実行後、chkconfigには、登録され正しくONとなっています。

shell

1Test_Service 0:off 1:off 2:on 3:on 4:on 5:on 6:off

また、手動で以下の通り実行するとstartに記載されたスクリプトが正しく実行されます。

shell

1sudo service Test_Service start

playbookは、以下の通りです。

YAML

1- name: Copy Test_Service ShellScript 2 copy: > 3 src=Test_Service.sh 4 dest=/etc/init.d/Test_Service 5 owner=root 6 group=root 7 mode=0755 8 9- name: Test_Service Add Service & Start 10 service: name=Test_Service enabled=yes state=started

お分かりになる方、ご指導を何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

シェルスクリプトをこちらを参考に書き換えたところ、正しく動作しました。

bash

1#!/usr/bin/env bash 2# chkconfig: 2345 99 10 3# description: Test Runner 4# processname: Test_Service 5 6lock_file=/var/lock/subsys/Test_Service 7 8start() 9{ 10 if [ -f $lock_file ]; then 11 echo 'Test_Service Already Running' 12 exit 1 13 fi 14 15 /usr/bin/env ruby /usr/local/bin/Test.rb 16 touch ${lock_file} 17} 18 19stop() 20{ 21 if [ ! -f $lock_file ]; then 22 echo 'Test_Service Not Running' 23 exit 1 24 fi 25 26 /usr/bin/env ruby /usr/local/bin/Test.rb 27 rm -f ${lock_file} 28} 29 30case "$1" in 31 start) 32 start 33 ;; 34 stop) 35 stop 36 ;; 37 *) 38 echo "Usage: $0 {start|stop}" 39 ;; 40esac 41 42exit 0

投稿2018/03/03 07:57

TJMYK

総合スコア82

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ぱっと見で思ったことを書きます。

  • serviceを実行するユーザーはrootになってるのでしょうか?
  • serviceのstateがrestartedでもダメなんでのでしょうか?

投稿2018/03/01 15:21

mtb_beta

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TJMYK

2018/03/01 16:10 編集

ご回答ありがとうございます。 > serviceを実行するユーザーはrootになってるのでしょうか? become: yesと指定していますのでrootになっていると思います。 > serviceのstateがrestartedでもダメなんでのでしょうか? restartedとしてみましたが動作しませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問