2016-09-07 1 views
0

私はAnsibleを初めて使うので、7日間だけプレイブックファイルを実行し、8日目に別のプレイブックファイルを実行する必要があります。どのように私はそれを使用して設定することができますか?私はモジュールで試しましたが、それには当てはまりません。私の要件に従って条件を設定するにはどうすればよいですか?特定の日にプレイブックファイルを実行する

私はAnsibleを使用してサンプルジョブを作成しました。私は一日一回、最高7日間だけ仕事をしなければならないので、私は24時間を1時間に1回、昼間は01-07と指定します。私はcrontab -lを使用して見てき作成されたすべてのエラーと仕事をせずにこのコードを実行することができる午前

- - cron: 
     name: "play mail" 
     hour: "24" 
     day: "01-07" 
     job: "sh script.sh" 

:ここに私のコードです。しかし、それは一度だけ実行されます。 24時間ごとに7日間ではありません。それは私の要件ごとに正しいかどうか?

+0

プレイボーンを特定の日に実行しようとしていますか、または特定の日にのみコマンドを実行するようにcronを設定するためにAnsibleを使用しようとしていますか?そして確かに、あなたは月の1日から7日を参照しています、正しい? –

+0

はい、私は7日間だけの作業ファイルを実行する必要があります。私は、私のスクリプト内にansible-playbook myplayfile.ymlのような私のプレイブックファイルを追加し、指定された日のジョブで実行しています。別のタスクファイル。 – Doefi

答えて

0

私はあなたの必要性を理解していません。

コントロールマシンでx日間プレイバックを開始する必要がある場合は、Cronモジュールが必要ではないと思います。コントロールマシンのcrontab -eで7日間の予定のcrontabエントリを作成し、8日目の2番目のエントリを作成します。制御マシン上 のcrontabエントリは次のように実行されます:あなたはhttp://www.cronsandbox.com/

Ansibleのcronモジュール上でテストすることによって、タイミングを絞り込むことができ

# Every day at midnight 
0 0 * * * /usr/bin/ansible-playbook -i inventory playbook1_7.yml 

# Every 8 days 
0 0 */8 * * /usr/bin/ansible-playbook -i inventory playbook8.yml 

をあなたの脚本がそう、ターゲットホスト上のcrontabエントリを管理しなければならない場合に便利ですコントロール・マシンから、リモート・ホスト上のcrontabエントリーを作成、更新、除去、または確認するための演奏を実行します。もちろん、あなたはローカルホスト上でプレイブックを実行することもできます。

In an cron cronモジュールでは、「日」は「月の日」を意味します。したがって、01-07は、任意の月の第1日から第7日に実行するようにジョブをスケジュールする必要があります。

+0

ちょっと感謝Lenti ...しかし、あなたは毎日真夜中に言及していますか?ここでも私は毎日のためにメールを送る必要がありますが、警告メールのように7日間だけです。例えば、 – Doefi

+0

。 0 0 9-15 9 * 9月9日から15日までcronジョブをスケジュールします(ただし、毎年、2016年に必要な場合は、2017年9月以前にcronエントリを削除するか、テストと " 0 0 9-15 9 * test $(date + \%Y)-eq 2016 && scriptSendingMail.sh ")。前の例では、1-7は1日目から7日目にスケジュールされます。 crontabについてインターネット上に多くの例があります。 https://www.pantz.org/software/cron/croninfo.htmlを参照し、http://www.cronsandbox.comでオンラインでスケジュールを確認してください – gile

関連する問題