monolithprojects.github_actions_runner

GitHub Actions Runner

awesome-runners Role version Role downloads Molecule test License

この役割は、LinuxおよびmacOSシステム上でローカルGitHub Actions Runnerをデプロイ/再デプロイ/アンインストールし、登録/登録解除します(互換性リストを参照)。 Enterprise、Organization、およびRepository Runnersをサポートしています。

ロールのインストール

requirements.yml

roles:
  - name: monolithprojects.github_actions_runner
    version: 1.21.1
    src: https://github.com/MonolithProjects/ansible-github_actions_runner

必要条件

  • システムはGitHub APIにアクセスできる必要があります。

  • このロールはGitHubにアクセスするためのPersonal Access Tokenを必要とします。トークンはPERSONAL_ACCESS_TOKEN環境変数として設定できます。

注意
トークンには、リポジトリランナーを作成する際にはrepoスコープ、組織用のランナーを作成する際にはadmin:orgスコープ、エンタープライズランナーを作成する際にはmanage_runners:enterpriseスコープが必要です。 GitHubアカウント用のPersonal Access Tokenはこちらで作成できます。

警告
個人用アクセストークンをGitHubリポジトリに保存しないでください。GitHub Secretsやその他の秘密サービスを使用してください。

  • ランナーのユーザーは、事前に作成されている必要があります。 推奨ロール: monolithprojects.user_management

  • CentOSシステムにはEPELリポジトリが必要です。 推奨ロール: robertdebock.epel

サポートされるCPUアーキテクチャ

  • ARM、ARM64(依存関係のインストールはこのロールに含まれていません)
  • AMD64、x86_64

サポートされるオペレーティングシステム

  • Red Hat Enterprise Linux 7
  • CentOS 7
  • Rocky Linux 8+
  • Fedora 29+
  • Debian 9+
  • Ubuntu 16.04+
  • MacOS High Sierra +

週次テスト済みのOS:

  • Debian 11
  • Fedora 39
  • Rocky Linux 9
  • Ubuntu 20,22

ロール変数

これはdefaults/main.ymlからのコピーです

---
# ランナーのユーザー - ローカルランナーサービスが実行されているユーザー
runner_user: "{{ lookup('env', 'USER') }}"

# ローカルランナーがインストールされるディレクトリ
runner_dir: /opt/actions-runner

# GitHub Actions Runnerのバージョン
runner_version: "latest"

# ロールが完了した後のランナーサービスの状態(開始、停止、存在しない)
runner_state: "started"

# サーバーに見つかった場合、既存のランナーサービスを削除して再インストール
reinstall_runner: false

# 機密データを含む可能性のあるAnsibleログを表示しない
hide_sensitive_logs: true

# GitHubアドレス
github_url: "https://github.com"

# GitHub API
github_api_url: "https://api.github.com"

# 1ページあたりのランナー数
github_api_runners_per_page: 100

# GitHubアカウント用のPersonal Access Token
access_token: "{{ lookup('env', 'PERSONAL_ACCESS_TOKEN') }}"

# 組織用のランナーかどうか?
runner_org: false

# ランナーに適用するラベル
runner_labels: []

# 組織ランナーを追加するグループ
runner_group: ""

# GitHub Actions Runnerリポジトリ(カスタムActions Runnerフォークを使用する場合は変更)
runner_download_repository: "actions/runner"

# `config.sh`に渡す追加の引数。
# 複数の引数は1つの文字列として設定する必要があります(例: "--ephemeral --my_special_fork")
runner_extra_config_args: ""

# GitHubに割り当てるランナー名(デフォルトはシステムホスト名)
runner_name: "{{ ansible_facts.hostname }}"

# 単一のプレイ内で複数のリポジトリ用にランナーをプロビジョニングする場合はfalseに設定
all_runners_in_same_repo: true

# ランナー登録に使用するGitHubリポジトリのユーザーまたは組織のオーナー
# github_account: "youruser"

# GitHubリポジトリのオーナー名(github_account以外の場合)
# github_owner: "yourorg"

# GitHubリポジトリ名
# github_repo: "yourrepo"

# GitHubエンタープライズ名
# github_enterprise: "yourenterprise"

# カスタム.envファイルの設定
# custom_env: |
# http_proxy=YOUR_URL_HERE
# ftp_proxy=YOUR_URL_HERE
# HTTPS_PROXY=YOUR_URL_HERE
# https_proxy=YOUR_URL_HERE
# no_proxy=localhost,127.0.0.1,127.0.0.2
# HTTP_PROXY=

サンプルプレイブック

この例では、AnsibleロールがGitHub Actions Runnerサービスをインストール(または更新)します(最新の利用可能なバージョン)。ランナーはmy_awesome_repo GitHubリポジトリに登録されます。 ランナーサービスは起動し、AnsibleがSSH接続に使用しているのと同じユーザーで実行されます(ansible)。

---
- name: GitHub Actions Runnerをインストール
  hosts: all
  user: ansible
  become: yes
  vars:
    - github_account: github-access-user
    - github_repo: my_awesome_repo
  roles:
    - role: monolithprojects.github_actions_runner

上記と同様の例ですが、ランナーは組織に追加され、GitHubエンタープライズサーバーにデプロイされます。

---
- name: GitHub Actions Runnerをインストール
  hosts: all
  user: ansible
  become: yes
  vars:
    - github_account: my_awesome_org
    - runner_org: yes
    - runner_on_ghes: yes
  roles:
    - role: monolithprojects.github_actions_runner

GitHubエンタープライズクラウドライセンスを持っていて、エンタープライズからすべてのセルフホストランナーを管理したい場合:

---
- name: GitHub Actions Runnerをインストール
  hosts: all
  user: automation
  become: yes
  vars:
    - github_enterprise: my_awesome_enterprise
    - runner_org: no
  roles:
    - role: monolithprojects.github_actions_runner

この例では、AnsibleロールがGitHub Actionsランナーサービス(バージョン2.165.2)をデプロイ(または更新)し、GitHubリポジトリにランナーを登録します。ランナーサービスはユーザーrunner-userのもとで実行されます。ランナーは2つのラベルで登録されます。 ランナーサービスは停止され、無効化されます。ランナーはカスタム環境変数(セルフホストランナーアプリケーションディレクトリ内の.envという名前のファイルから)を使用します。

---
- name: GitHub Actions Runnerを停止
  hosts: all
  become: yes
  vars:
    - runner_version: "2.165.2"
    - runner_user: runner-user
    - github_account: github-access-user
    - github_repo: my_awesome_repo
    - runner_state: "stopped"
    - runner_labels:
        - production
        - west
    - custom_env: |
        HTTP_PROXY=http://proxy.local:8080
        http_proxy=http://proxy.local:8080
        HTTPS_PROXY=http://proxy.local:8080
        https_proxy=http://proxy.local:8080
        no_proxy=localhost,127.0.0.1,127.0.0.2

  roles:
    - role: monolithprojects.github_actions_runner

この例では、Ansibleロールがランナーサービスをアンインストールし、GitHubリポジトリから登録解除します。

---
- name: GitHub Actions Runnerをアンインストール
  hosts: all
  become: yes
  vars:
    - github_account: github-access-user
    - github_repo: my_awesome_repo
    - runner_state: "absent"
  roles:
    - role: monolithprojects.github_actions_runner

Moleculeによるテスト

Moleculeは、Ansibleのためのテストフレームワークです。このセクションはコントリビューター向けです。

前提条件

  • Python
  • Docker
  • Ansible
  • Molecule

インストール

  1. まだインストールしていない場合は、Python、Docker、Ansibleをインストールします。
  2. pipを使用してMoleculeとそのDockerドライバーをインストールします:
pip install molecule[docker]

以下は、monolithprojects.github_actions_runner AnsibleロールをMoleculeでテストする方法について説明するREADMEの基本的な例です:

# monolithprojects.github_actions_runner

これはGitHub ActionsランナーをセットアップするためのAnsibleロールです。

## Moleculeによるテスト

[Molecule](https://molecule.readthedocs.io/)はAnsibleのためのテストフレームワークで、`monolithprojects.github_actions_runner`ロールのテストに使用します。

### 前提条件

- Python
- Docker
- Ansible
- Molecule

### インストール

1. まだインストールしていない場合は、Python、Docker、Ansibleをインストールします。
2. pipを使用してMoleculeとそのDockerドライバーをインストールします:

```bash
pip install molecule[docker]

テストの実行

  1. ロールのディレクトリに移動します:
cd path/to/monolithprojects.github_actions_runner
  1. 環境変数を設定します
export PERSONAL_ACCESS_TOKEN=your_github_pat # GitHub用のPersonal Access Token
export GITHUB_ACCOUNT=your_account # GitHubアカウント
export GITHUB_REPO=your_repository # ランナーをセットアップするGitHubリポジトリ
  1. Moleculeを実行します:
molecule test

これにより、Moleculeテストが実行され、Dockerコンテナーが作成され、ロールがその中で実行され、関連するdefaultテスト(molecule/defaultディレクトリ参照)が実行され、その後コンテナーが破棄されます。

Moleculeの使用方法についての詳細は、Moleculeドキュメントを参照してください。

ライセンス

MIT

著者情報

2020年にMichal Muranskyによって作成されました。

プロジェクトについて

Deploy Github Actions private runner

インストール
ansible-galaxy install monolithprojects.github_actions_runner
ライセンス
mit
ダウンロード
304.1k
所有者
Full-time Cloud Engineer, part-time adventurer