karlmdavis.jenkins2

ビルドステータス

Ansibleロール:Jenkins 2+

このAnsibleロールは、Jenkins 2のインストールと管理に使用できます。

要件

このロールには、Ansible 2.4以上が必要です。また、管理されるシステムにAnsibleのパイプライン機能またはsetfaclが必要です(詳細は非特権ユーザーになるを参照)。

このロールは現在、Ubuntu 14.04(Trusty)とUbuntu 16.04(Xenial)をサポートしています。他のプラットフォームのサポートも歓迎します!

ロール変数

このロールは、以下の変数をサポートしています。デフォルト値はdefaults/main.ymlに記載されています。

  • jenkins_release_line: 'weekly'
    • long_term_supportに設定すると、JenkinsのLTSリリースがインストールされます。
    • weeklyに設定すると、Jenkinsの週次リリースがインストールされます。
  • jenkins_release_update: true
    • trueの場合、ロールの実行時にJenkinsパッケージが最新のバージョンにアップグレードされます。
  • jenkins_home: /var/lib/jenkins
    • Jenkinsデータが保存されるディレクトリです。
    • Jenkinsインストーラーの制限により、jenkinsサービスアカウントはデフォルトのホームディレクトリを使用します。これはSSHキーに関してのみ関係します。
  • jenkins_port: 8080
    • JenkinsがHTTPリクエスト用に実行されるポートです。
    • 多くのシステムでは、この値は1024以上である必要があります。なぜなら、Jenkinsはrootとして実行されないからです。
  • jenkins_context_path: ''
    • Jenkinsがホストされるコンテキストパスです。例えば、http://localhost:8080/foo/fooなどです。ルートパスでホストするには''のままにします。
  • jenkins_url_external: ''
    • ユーザーがJenkinsにアクセスするために使用する外部URLです。Jenkinsの設定に設定され、メールやWebhookなどで使用されます。
    • これが空のままの場合、設定は行われず、Jenkinsは自動的にこれを検出しようとします(プロキシを使用している場合には正しく機能しません)。
  • jenkins_admin_username: (未定義)
    • jenkins_admin_usernameまたはjenkins_admin_passwordのいずれかが定義されている場合、両方が必要です。
    • この変数をオーバーライドして、各可能なセキュリティ領域に使用すべきJenkins管理者の資格情報を指定します。
    • 未定義のままにした場合、ロールは匿名認証を使用しようとします。
    • このロールは、Jenkinsが匿名認証を許可するように設定されている場合(インストール直後です)を自動的に検出し、適切に処理します。
  • jenkins_admin_password: (未定義)
    • jenkins_admin_usernameまたはjenkins_admin_passwordのいずれかが定義されている場合、両方が必要です。
    • この変数をオーバーライドして、各可能なセキュリティ領域に使用すべきJenkins管理者の資格情報を指定します。
  • jenkins_session_timeout: 30
    • Jenkinsセッションがタイムアウトするまでの分数、つまりログインが有効な時間です。
    • デフォルトは30分です。
    • 0に設定すると、タイムアウトしなくなります。
  • jenkins_plugins_extra: []
    • この変数をオーバーライドして、追加のJenkinsプラグインをインストールします。
    • これらは、Jenkins 2の新しいセットアップウィザードによって自動的にインストールされる推奨プラグインに加えてインストールされます(defaults/main.yml内のjenkins_plugins_recommendedを参照)。
  • jenkins_plugins_timeout: 60
  • jenkins_plugins_update: true
    • trueの場合、ロールが実行されるときにJenkinsプラグインが更新されます(不足しているプラグインは常にインストールされます)。
  • jenkins_java_args_extra: ''
    • JenkinsプロセスのJAVA_ARGSに追加されるオプションです。例えば、JVMメモリ設定-Xmx4gなどです。
  • jenkins_http_proxy_server, jenkins_http_proxy_port, jenkins_http_proxy_no_proxy_hosts: (すべて未定義)
    • これらはJVMのhttp.proxyHosthttp.proxyPorthttp.nonProxyHostsシステムプロパティと同じ機能を持ち、HTTPおよびHTTPSリクエストの両方に使用される設定です。
    • 具体的には、これらの設定は以下のように使用されます:
      • Jenkins JVMのhttp.proxyHosthttp.proxyPorthttps.proxyHosthttps.proxyPorthttp.nonProxyHostsシステムプロパティ(Java Networking and Proxiesを参照)を設定します。
      • 一部のプラグインが必要とするJenkins固有のプロキシ設定(GitHubプラグインなど)を設定します。詳細はJenkinsBehindProxyを参照してください。
      • jenkins_http_proxy_no_proxy_hostsの値はリストで、例えば['localhost', 'example.com']のように設定する必要があります。

依存関係

このロールには他のAnsibleロールの直接的な依存関係はありません。ただし、Java JREがシステムパスで利用可能である必要があります。

例プレイブック

このロールは、以下のようにインストールできます:

$ ansible-galaxy install karlmdavis.jenkins2

このロールは、以下のように適用できます:

- hosts: some_box
  tasks:
    - import_role:
        name: karlmdavis.ansible-jenkins2
      vars:
        jenkins_plugins_extra:
          - github-oauth

Jenkinsを構成するためのGroovyスクリプトの実行

Jenkinsをインストールした後、JenkinsをさらにカスタマイズするためにGroovyスクリプトをAnsible経由で実行できます。

例えば、Jenkinsをインストールして、HudsonPrivateSecurityRealmを使用するように構成する方法は次のとおりです:

- hosts: some_box
  tasks:

    - import_role:
        name: karlmdavis.ansible-jenkins2
      vars:
        # 初回実行時に必要ありませんが、以前の実行(以下のセキュリティが有効にされた後)には必要です。
        jenkins_admin_username: test
        jenkins_admin_password: supersecret

    # Jenkinsが必要に応じて再起動されたことを確認します。
    - meta: flush_handlers

    # Jenkinsローカルアカウントを使用するようにセキュリティを構成します。
    - name: セキュリティの構成
      jenkins_script:
        url: "{{ jenkins_url_local }}"
        user: "{{ jenkins_dynamic_admin_username | default(omit) }}"
        password: "{{ jenkins_dynamic_admin_password | default(omit) }}"
        script: |
          // これはJenkinsのインタラクティブスクリプトコンソールが自動的に含む基本的なインポートです。
          import jenkins.*;
          import jenkins.model.*;
          import hudson.*;
          import hudson.model.*;

          // 認証を管理するセキュリティレルムを構成します。
          def securityRealm = new hudson.security.HudsonPrivateSecurityRealm(false)
          if(!securityRealm.equals(Jenkins.instance.getSecurityRealm())) {
            Jenkins.instance.setSecurityRealm(securityRealm)

            // ログインするためのユーザーを作成します。ユーザーはシステムローカルの`jenkins`ユーザーのSSHキーにバインドされていることを確認します。
            def testUser = securityRealm.createAccount("test", "supersecret")
            testUser.addProperty(new hudson.tasks.Mailer.UserProperty("[email protected]"));
            testUser.save()

            Jenkins.instance.save()
            println "認証を変更しました。"
          }

          // 誰が何をできるかを指定する認可戦略を構成します。
          def authorizationStrategy = new hudson.security.FullControlOnceLoggedInAuthorizationStrategy()
          if(!authorizationStrategy.equals(Jenkins.instance.getAuthorizationStrategy())) {
            authorizationStrategy.setAllowAnonymousRead(false)
            Jenkins.instance.setAuthorizationStrategy(authorizationStrategy)
            Jenkins.instance.save()
            println "認可を変更しました。"
          }
      register: shell_jenkins_security
      changed_when: "(shell_jenkins_security | success) and 'Changed' not in shell_jenkins_security.stdout"

または、Groovyスクリプトを別のファイルとして保存し、以下のようにlookup(...)を使用して読み込むこともできます:

- hosts: some_box
  tasks:

    - import_role:
        name: karlmdavis.ansible-jenkins2
      vars:
        # 初回実行時に必要ありませんが、以前の実行(以下のセキュリティが有効にされた後)には必要です。
        jenkins_admin_username: test
        jenkins_admin_password: supersecret

    # Jenkinsが必要に応じて再起動されたことを確認します。
    - meta: flush_handlers

    # Jenkinsローカルアカウントを使用するようにセキュリティを構成します。
    - name: セキュリティの構成
      jenkins_script:
        url: "{{ jenkins_url_local }}"
        user: "{{ jenkins_dynamic_admin_username | default(omit) }}"
        password: "{{ jenkins_dynamic_admin_password | default(omit) }}"
        script: "{{ lookup('template', 'templates/jenkins_security.groovy.j2') }}"

ライセンス

このプロジェクトは、全世界でパブリックドメインにあります。CONTRIBUTINGに明記されているように:

このプロジェクトは、アメリカ合衆国においてパブリックドメインにあり、作品に関する著作権および関連権利は、CC0 1.0 Universal public domain dedicationを通じて放棄されます。

このプロジェクトへのすべての貢献は、CC0の献身の下にリリースされます。プルリクエストを送信することで、著作権権益の放棄に従うことに同意します。

著者情報

このプラグインは、Karl M. Davis(https://justdavis.com/karl/)によって作成されました。

プロジェクトについて

This Ansible role can be used to install and manage Jenkins 2.

インストール
ansible-galaxy install karlmdavis.jenkins2
ライセンス
other
ダウンロード
888
所有者