Bash スクリプトを繰り返し使えるチームのジョブに

シェルスクリプトを Git に保存し、Semaphore から実行します。入力を保存し、定期作業をスケジュールして、何が起きたかをチームで共有できる記録を残します。

自分のシェルセッションがなくても、チームはスクリプトを繰り返し実行できますか?

便利なコマンドでも、ローカルツール、エクスポートされた変数、実行を忘れない人に依存します。日常的なチーム業務を支える仕組みとしては不安定です。

スクリプトだけでなく、操作全体を保存

  • リポジトリと .sh のエントリーポイントを選択
  • 実行間で環境値を再利用
  • タスクをスケジュールし、出力とステータスを保持

日常のシェル自動化を共有の場所へ

バックアップとストレージを確認

バックアップの新しさやストレージの可用性を確認する検証スクリプトをスケジュールします。対応が必要な確認結果では、失敗の終了コードを返します。

スケジュールを設定

サービスと証明書の確認を実行

準備済み環境で既存のコマンドラインツールを使います。端末セッションの終了後も、各確認処理の出力を参照できます。

準備済みジョブを共有

クリーンアップと保守を自動化

テスト済みのクリーンアップスクリプトを、入力を明確にした名前付きジョブとして保存します。手動でも定期的にも実行できます。

準備済みジョブを共有

シェルジョブを保存し、完了した実行を確認

シェルジョブをほかの自動化に接続

Ansible の保守前にバックアップ検証スクリプトを実行し、その後 Python でサービスを確認します。前提条件が失敗すれば、次のジョブを開始させずに済みます。

サービスの保守ワークフロー
バックアップを検証
成功時出力 → 入力
保守を実行
成功時出力 → 入力
サービスの稼働状態を確認
失敗時
診断情報を収集

入力と結果を明確にしたシェル実行

環境変数から入力を渡す

Bash Script テンプレートとリポジトリ内のパスを選択します。変数グループが環境値を提供します。操作に必要な実行入力だけを公開し、スクリプトで検証してください。

選択したサーバーまたはランナーで実行

Bash タスクは、実行環境の /bin/bash で実行されます。呼び出すコマンドラインツールを準備してください。複数のリモートホストをインベントリ単位で自動化する場合は Ansible を使います。

出力と終了コードで結果を報告

スクリプトは対話操作なしで実行されます。診断に役立つ出力を残し、意図した操作が失敗した場合は 0 以外のコードで終了してください。Semaphore はその出力をタスクとともに保持します。

新たなシェルセッションなしでジョブを再利用

保存済みテンプレートをスケジュールするか、連携から起動します。失敗したタスクのアラートを設定し、生成したバックアップやエクスポートは永続ストレージへ書き込みます。

FAQ

Semaphore はリポジトリ内の既存の Bash スクリプトを実行できますか?

はい。リポジトリと .sh のエントリーポイントを持つ Bash Script タスクテンプレートを作成します。環境入力用に変数グループを関連付け、スクリプトが呼び出すコマンドラインツールを準備してください。Semaphore は /bin/bash で実行し、出力と終了ステータスを記録します。

Bash タスクは自動的にインベントリ全体で実行されますか?

いいえ。スクリプトは、選択した Semaphore サーバーまたはランナーで実行されます。インベントリ内のホストへコマンドを自動配信するわけではありません。管理対象ホストの自動化には Ansible タスクテンプレートを使うか、必要なリモート操作をスクリプトに明示的に実装してください。

任意のコマンドを許可せずに入力を公開するにはどうすればよいですか?

サービス名や送信先などの選択には、意図した環境値と対応するテンプレート入力を使います。スクリプト内で値を検証し、引用符で適切に囲んでください。保存済みテンプレートは操作を再利用可能にしますが、シェル入力の安全な処理は引き続きコードの責任です。

Bash タスクが作成したファイルはどこに保存されますか?

スクリプトは実行環境で動くため、コードが別の場所へ書き込まない限り、ローカルファイルはその環境に作成されます。バックアップとエクスポートには永続ストレージを使ってください。チームメンバーが結果を見つけられるよう、タスクログには診断出力と参照先を残します。

バックアップや証明書の確認をスケジュールできますか?

はい。検証スクリプトをタスクテンプレートとして保存し、スケジュールを追加します。実行環境に必要なコマンドラインツールとアクセスを準備します。確認失敗時は 0 以外の終了コードを返し、その結果に対する通知を設定してください。

Ansible や Terraform の前後に Bash を実行できますか?

はい。ワークフローでタスクテンプレートを接続します。たとえば、Bash によるバックアップ検証、Ansible による保守、Python によるサービス確認の順で実行できます。前提条件が失敗したときに、成功を条件とする保守ジョブが開始されないよう、タスクの依存関係を設定します。

チームメンバーはサーバーにアクセスせずにシェルジョブを実行できますか?

実行ホストにシェルセッションを開く代わりに、Semaphore から準備済みタスクテンプレートを開始できます。そのジョブのプロジェクトアクセスと意図した入力を設定してください。何が実行され、どのリソースに影響しうるかは、引き続きテンプレートとスクリプトが決めます。

失敗したシェルジョブの結果はどこで確認できますか?

テンプレートまたはプロジェクト履歴からタスクを開き、記録された出力とステータスを確認します。スクリプトは、診断に十分なコンテキストを出力し、意味のある終了コードを返すようにしてください。次のエンジニアは、端末の記録を求めることなく保存済みの実行を調査できます。