buluma.service
Ansibleロール service
Linuxシステムにカスタムサービスを追加します。
GitHub | バージョン | 問題 | プルリクエスト | ダウンロード |
---|---|---|---|---|
例のプレイブック
この例はmolecule/default/converge.yml
から取られたもので、各プッシュ、プルリクエスト、およびリリースでテストされています。
---
- name: Converge
hosts: all
become: true
gather_facts: true
vars:
_service_test_command:
default: /usr/bin/sleep
Alpine: /bin/sleep
Debian: /bin/sleep
Ubuntu-16: /bin/sleep
Ubuntu-18: /bin/sleep
service_test_command: "{{ _service_test_command[ansible_distribution ~ '-' ~ ansible_distribution_major_version] | default(_service_test_command[ansible_os_family] | default(_service_test_command['default'])) }}" # noqa 204 Just long.
roles:
- role: buluma.service
service_list:
- name: simple-service
description: 簡単なサービス
start_command: "{{ service_test_command }} 3600"
state: started
enabled: true
- name: stopped-service
description: 簡単なサービス
start_command: "{{ service_test_command }} 3601"
state: stopped
enabled: false
- name: specific-stop-service
description: 特定の停止サービス
start_command: "{{ service_test_command }} 1440"
stop_command: /usr/bin/killall -f "sleep 1440"
- name: specific-user-group-service
description: 特定のユーザーグループサービス
start_command: "{{ service_test_command }} 28800"
user_name: root
group_name: root
- name: specific-workingdirectory-service
description: 特定の作業ディレクトリサービス
start_command: "{{ service_test_command }} 57600"
working_directory: /tmp
- name: specific-pattern-service
description: 特定のステータスパターンサービス
start_command: "{{ service_test_command }} 115200"
status_pattern: 115200
- name: variable-service
description: 環境変数を持つサービス
start_command: "{{ service_test_command }} ${time}"
environment_variables:
time: 230400
- name: pidfile-service
description: PIDファイルを持つサービス
start_command: "{{ service_test_command }} 460800"
pidfile: /var/run/pidfile-service.pid
- name: environmentfile-service
description: 環境ファイルを持つサービス
start_command: "{{ service_test_command }} 921600"
environmentfile: /environmentfile.txt
マシンを準備する必要があります。CIでは、molecule/default/prepare.yml
を使用してこれを行います。
---
- name: Prepare
hosts: all
gather_facts: false
become: true
serial: 30%
roles:
- role: buluma.bootstrap
post_tasks:
- name: /environmentfile.txtを配置
ansible.builtin.copy:
content: "value=variable"
dest: /environmentfile.txt
mode: "0644"
これらの役割の使用方法に関する完全な説明と例もご覧ください。
ロール変数
変数のデフォルト値は、defaults/main.yml
で設定されています。
---
# サービスのデフォルトファイル
# service_listにはシステムに追加するサービスのリストを含めることができます。
# 各項目の必須項目は次のとおりです:
# - name: サービスの(短い)名前、例: "tomcat"。
# - description: もう少し長い名前、例: "Tomcatアプリケーションサーバ"。
# - start_command: デーモンを起動するためのコマンド、
# 例: "/usr/local/bin/java -jar some.jar"
# オプションの項目は以下の通りです:
# - stop_command: デフォルトでは、起動されたプログラムは見つかり停止されます。
# 実行中のプログラムがスタートアップ中に名前変更または拡張(パスを含む)された場合は、
# ここにカスタム停止コマンドを指定できます、例: "pkill foo"
# - status_pattern: プログラムのステータスを確認する際に探すプログラム(またはパターン)、
# 例: "artifactory"。
# - type: プログラムの開始方法; "simple"または"forking"。simpleはプログラムがフォアグラウンドで実行されることを意味し、
# 例: "nc -l 1234"。forkingはプログラム自体がフォークすることを意味し、例: "nc -l 12345 &"
# - working_directory: サービスを起動する前に移動するディレクトリ。
# - environment_variables: 設定するための変数のリスト。例えば:
# environment_variables:
# variable1: value1
# variable2: value2
# - after: 指定されたサービスの後にスタート。
# - restart_mode: 使用するモード、例えば"always"。
# - restart_seconds: 再起動が完了するまでの時間。
service_list: []
要件
- requirements.txtに記載されたpipパッケージ。
使用するロールの状態
システムを準備するために使用されるロールは以下の通りです。他の方法でシステムを準備することもできます。
要件 | GitHub | バージョン |
---|---|---|
buluma.bootstrap |
コンテキスト
このロールは多くの互換性のあるロールの一部です。さらなる情報については、これらのロールのドキュメントをご覧ください。
関連ロールの概要は以下の通りです:
互換性
このロールは以下のコンテナイメージでテストされています:
コンテナ | タグ |
---|---|
EL | 8 |
Debian | すべて |
Fedora | すべて |
opensuse | すべて |
Ubuntu | すべて |
Kali | すべて |
必要なAnsibleの最小バージョンは2.12で、テストは以下の通り行われています:
- 前のバージョン。
- 現在のバージョン。
- 開発版。
問題が見つかった場合は、GitHubに登録してください。