ページ

2015年2月9日月曜日

Rundesk ジョブの作成と実行

ジョブの作成

Jobs 画面を開いて、「Create Job」から「+New Job…」を選択します。


Create New Job の画面になります。


Job Name pstree

Workflow では、Add a Step で Command を選択します。
Command として pstree -p --show-parents $$ を指定します。

Nodes では、それぞれのノードにコマンドを発行するため Dispatch to Nodes を選択します。

Node Filter に .* を入力し、Set Filter をクリックします。

ほかの項目はデフォルトにままでかまいません。

これで Create をクリックしてジョブを作成します。


ジョブの実行

作成したジョブを実行します。
ジョブの一覧から先ほど作成したpstreeを選択します。
psteeジョブの画面に切り替わります。

Run Job Now をクリックします。

ジョブが実行される様子が表示されます。
今回のジョブはステップが一つしかないのですぐに終了するでしょう。

実行結果が表示されます。

Summary

実行結果の要約です。

Report

ジョブの実行結果をノードやステップごとに確認できます。


Log Output

ジョブの出力が確認できます。

Definition

ジョブを実行したときのワークフローの定義が表示されます。

ジョブの実行対象ノード

Nodes の Change the Target Nodes にチェックを入れると、実行対象のノードを限定することができます。

ノード localhost だけを選んで実行してみます。

Summary画面ではわかりにくいですが、よく見ると Complete 100% 1/1 と、対象1ノードで、成功1ノードになっています。

ジョブの詳細設定

実行対象

ジョブを発行する対象は
  • Nodes のところで Dispatch to Nodes (各ノードに対しSSH経由で実行),
  • Execute locally (Rundeckサーバ上で実行)
から選択します。

Dispatch to Nodes を選択したときは、Node Filter で実行対象のノードを選択します。このときの指定には次のような方法があります。Node Filter の「?」をクリックすればヘルプが表示されます。

Select nodes by name: 名前を列挙する
mynode1 mynode2
This will select both nodes.
Filter nodes by attribute value: 属性値で選択する
  • Include: attribute: value
  • Exclude: !attribute: value
Use Regular Expressions: 正規表現で選択することができる
hostname: dev(\d+).test.com.
Regex syntax checking:
attribute: /regex/
attribute: /regex/
Examples:
All nodes すべてのノード
name: .*
Nodes tagged "production" 「production」というタグがついたノード
tags: production
Unix nodes  OSがunix」のノード
osFamily: unix

実行コマンド

実行するコマンド列はWorkflowとして設定します。

ステップには2種類のタイプがあります。
  • Node Steps : 各ノードごとに実行する
  • Workflow Steps : ノードに関係なく1度だけ実行する
各Node Steps は、以下の中から選択します。Workflow Steps のときに選択できるのはJob Reference のみです。
 Command - Execute a remote command
 Script - Execute an inline script
 Script file or URL - Execute a local script file or a script from a URL
 Job Reference - Execute another Job for each Node
2 Node Step Plugins
 Copy File - Copy a file to a destination on a remote node.
 Local Command - Run a command locally on the server
error hander で、ステップがエラー終了したとき、ワークフローを打ち切るか、実行を続けるかを指定できます。また、エラー処理のためのコマンドを実行することもできます。

コマンド実行

Commandで指定したコマンドは ssh node 'コマンド' のように実行されます。コマンドはリモートホスト上でシェルが評価して実行されます。

一方、Local Commandでは、コマンドは空白で分割されたのち、直接 exec(3) で実行されます。このときシェルは介在しないため、単純コマンドしか実行できません。パラメータ置換やパイプライン、コマンドリストなどが必要であれば、sh -c 'コマンド' のように指定してください。

引数

Optionsでジョブの引数を宣言することができます。
引数が取り得る値は、Allowed Valuesで指定します。GUIからジョブを実行するときに、この値を選択することができます。

引数はステップでは次のようにして参照できます。
The option values will be available to scripts in these forms:
Bash: $RD_OPTION_NAME (ローカル実行のみ。環境変数として渡されます。)
Commandline Arguments: ${option.name}
Script Content: @option.name@

Node Filter で name:${option.nameのようにして使うこともできます。

ジョブの名前

ジョブの名前は任意に指定できます。後から変更することもできます。
ただしJob Referenceで参照しているジョブの名前を変更すると、無効な参照となるため注意が必要です。

自動実行

Schedule to run repeatedly? からジョブの繰り返し実行のスケジュールを設定できます。
Crontab 形式での指定は、通常の crontab での設定とは異なり拡張されています。
秒 分 時 日 月 曜 年
先頭に秒、末尾に年が増えています。

以下は設定画面にある See: Cron reference for formatting helpリンク先からの転載です。
Quartz Scheduler を使っているのでしょうか?


Format

A cron expression is a string comprised of 6 or 7 fields separated by white space. Fields can contain any of the allowed values, along with various combinations of the allowed special characters for that field. The fields are as follows:
Field NameMandatoryAllowed ValuesAllowed Special Characters
SecondsYES0-59, - * /
MinutesYES0-59, - * /
HoursYES0-23, - * /
Day of monthYES1-31, - * ? / L W
MonthYES1-12 or JAN-DEC, - * /
Day of weekYES1-7 or SUN-SAT, - * ? / L #
YearNOempty, 1970-2099, - * /
So cron expressions can be as simple as this: * * * * ? *
or more complex, like this: 0/5 14,18,3-39,52 * ? JAN,MAR,SEP MON-FRI 2002-2010

Special characters

  • * ("all values") - used to select all values within a field. For example, "" in the minute field means *"every minute".
  • ? ("no specific value") - useful when you need to specify something in one of the two fields in which the character is allowed, but not the other. For example, if I want my trigger to fire on a particular day of the month (say, the 10th), but don't care what day of the week that happens to be, I would put "10" in the day-of-month field, and "?" in the day-of-week field. See the examples below for clarification.
  • - - used to specify ranges. For example, "10-12" in the hour field means "the hours 10, 11 and 12".
  • , - used to specify additional values. For example, "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday, and Friday".
  • / - used to specify increments. For example, "0/15" in the seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the seconds field means "the seconds 5, 20, 35, and 50". You can also specify '/' after the '' character - in this case '' is equivalent to having '0' before the '/'. '1/3' in the day-of-month field means "fire every 3 days starting on the first day of the month".
  • L ("last") - has different meaning in each of the two fields in which it is allowed. For example, the value "L" in the day-of-month field means "the last day of the month" - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means "7" or "SAT". But if used in the day-of-week field after another value, it means "the last xxx day of the month" - for example "6L" means "the last friday of the month". When using the 'L' option, it is important not to specify lists, or ranges of values, as you'll get confusing results.
  • W ("weekday") - used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify "15W" as the value for the day-of-month field, the meaning is: "the nearest weekday to the 15th of the month". So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not 'jump' over the boundary of a month's days. The 'W' character can only be specified when the day-of-month is a single day, not a range or list of days.
The 'L' and 'W' characters can also be combined in the day-of-month field to yield 'LW', which translates to *"last weekday of the month"*.
  • # - used to specify "the nth" XXX day of the month. For example, the value of "6#3" in the day-of-week field means"the third Friday of the month" (day 6 = Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the first Monday of the month and "4#5" = the fifth Wednesday of the month. Note that if you specify "#5" and there is not 5 of the given day-of-week in the month, then no firing will occur that month.
The legal characters and the names of months and days of the week are not case sensitive. MON is the same as mon.

実行結果

実行結果は履歴として残り、後からAcutivity画面を見れば確認できます。
結果には、実行時のワークフローの定義も一緒に記録されています。

過去の実行履歴をみると、その時、どのような定義のワークフローで実行したかもわかるようになっています。これは、ワークフローを後から変更したときでも、過去の実行履歴は独立した記録になっていて、影響を受けないということであり、大変重要なことです。

0 件のコメント:

コメントを投稿