geerlingguy.jenkins

Ansible 角色:Jenkins CI

CI

在 RHEL/CentOS 和 Debian/Ubuntu 服务器上安装 Jenkins CI。

要求

服务器上需要安装 curl。此外,更新版本的 Jenkins 需要 Java 8+(请参考 molecule/default 目录中的测试剧本,了解如何在您的操作系统上使用更新版本的 Java)。

角色变量

可用的变量如下所示,包含默认值(参见 defaults/main.yml):

jenkins_package_state: present

jenkins 软件包的安装状态。默认情况下,此角色安装 Jenkins,但不会升级 Jenkins(使用基于包的安装时)。如果希望始终更新到最新版本,请将其更改为 latest

jenkins_hostname: localhost

系统主机名;通常 localhost 可以正常工作。此设置将在安装期间用于通过 HTTP 请求与运行中的 Jenkins 实例进行通信。

jenkins_home: /var/lib/jenkins

Jenkins 主目录,用于存储工件、工作区和插件。此变量允许您覆盖默认的 /var/lib/jenkins 路径。

jenkins_http_port: 8080

Jenkins Web 界面的 HTTP 端口。

jenkins_admin_username: admin
jenkins_admin_password: admin

默认的管理员账户凭据,将在第一次安装 Jenkins 时创建。

jenkins_admin_password_file: ""

默认的管理员密码文件,在第一次安装 Jenkins 时创建为 /var/lib/jenkins/secrets/initialAdminPassword。

jenkins_jar_location: /opt/jenkins-cli.jar

存放 jenkins-cli.jar 文件的位置。此文件用于通过 CLI 与 Jenkins 通信。

jenkins_plugins:
  - blueocean
  - name: influxdb
    version: "1.12.1"

在配置期间自动安装的 Jenkins 插件。默认情况下为空列表([])。项目可以使用名称或包含 nameversion 键的字典来锁定特定版本的插件。

jenkins_plugins_install_dependencies: true

要安装的 Jenkins 插件是否也应安装任何插件依赖项。

jenkins_plugins_state: present

使用 latest 确保所有插件都运行最新版本。对于在 jenkins_plugins 列表中设置了特定版本的插件,将使用状态 present 而不是 jenkins_plugins_state 的值。

jenkins_plugin_updates_expiration: 86400

下载 update-center.json 文件的新副本的秒数。如果不应使用缓存文件,请将其设置为 0。

jenkins_updates_url: "https://updates.jenkins.io"

用于 Jenkins 插件更新和 update-center 信息的 URL。

jenkins_plugin_timeout: 30

安装 Jenkins 插件时的服务器连接超时(秒)。

jenkins_version: "2.346"
jenkins_pkg_url: "http://www.example.com"

(可选)Jenkins 版本可以锁定为 http://pkg.jenkins-ci.org/debian/(Debian/Ubuntu)或 http://pkg.jenkins-ci.org/redhat/(RHEL/CentOS)上提供的任何版本。如果所需的 Jenkins 版本在默认软件包 URL 中不可用,您可以使用自己的 URL 进行覆盖;设置 jenkins_pkg_url(_注意_:该角色依赖于 http://pkg.jenkins-ci.org/使用的相同命名约定)。

jenkins_url_prefix: ""

用于设置 Jenkins 安装的 URL 前缀。该选项作为 --prefix={{ jenkins_url_prefix }} 添加到 Jenkins 初始化 java 调用中,因此您可以像 http://www.example.com{{ jenkins_url_prefix }} 这样访问安装。确保前缀以斜杠 / 开头(例如 /jenkins)。

jenkins_connection_delay: 5
jenkins_connection_retries: 60

在初始启动后连接到 Jenkins 时等待的时间和次数,以验证 Jenkins 是否正在运行。总等待时间 = delay * retries,因此默认情况下,此角色将在超时前等待最多 300 秒。

jenkins_prefer_lts: false

默认情况下,此角色将根据平台使用官方仓库安装最新版本的 Jenkins。您可以通过将此设置为 false 来安装当前 LTS 版本。

默认的仓库(如下所示)也可以被覆盖。

# 对于 RedHat/CentOS:
jenkins_repo_url: https://pkg.jenkins.io/redhat{{ '-stable' if (jenkins_prefer_lts | bool) else '' }}/jenkins.repo
jenkins_repo_key_url: https://pkg.jenkins.io/redhat{{ '-stable' if (jenkins_prefer_lts | bool) else '' }}/jenkins.io.key

# 对于 Debian/Ubuntu:
jenkins_repo_url: deb https://pkg.jenkins.io/debian{{ '-stable' if (jenkins_prefer_lts | bool) else '' }} binary/
jenkins_repo_key_url: https://pkg.jenkins.io/debian{{ '-stable' if (jenkins_prefer_lts | bool) else '' }}/jenkins.io.key

通过设置 jenkins_repo_url: '',也可以防止添加仓库文件。这在您自己签署软件包或运行内部软件包管理(例如 Spacewalk)时是有用的。

jenkins_options: ""

用于通过系统服务的 systemd override.conf 文件在启动时传递给 Jenkins 的额外选项(例如设置 HTTP 保持活动超时),可以使用变量 jenkins_options 进行配置。默认情况下,不指定任何选项。

jenkins_java_options: "-Djenkins.install.runSetupWizard=false"

通过系统服务的 systemd override.conf 文件配置的 Jenkins 启动命令的额外 Java 选项可以使用变量 jenkins_java_options 设置。例如,如果您想配置 Jenkins 使用的时区,请添加 -Dorg.apache.commons.jelly.tags.fmt.timeZone=America/New_York。默认情况下,添加了禁用 Jenkins 2.0 安装向导的选项。

jenkins_init_changes:
  - option: "JENKINS_OPTS"
    value: "{{ jenkins_options }}"
  - option: "JAVA_OPTS"
    value: "{{ jenkins_java_options }}"
  - option: "JENKINS_HOME"
    value: "{{ jenkins_home }}"
  - option: "JENKINS_PREFIX"
    value: "{{ jenkins_url_prefix }}"
  - option: "JENKINS_PORT"
    value: "{{ jenkins_http_port }}"

对 Jenkins 的 systemd override.conf 文件所作的更改;默认的更改集设置了配置的 URL 前缀、Jenkins 主目录、Jenkins 端口,并为 Jenkins 启动添加了配置的 Jenkins 和 Java 选项。如果需要设置其他选项,可以添加其他选项/值对。

jenkins_proxy_host: ""
jenkins_proxy_port: ""
jenkins_proxy_noproxy:
  - "127.0.0.1"
  - "localhost"

如果您在代理服务器后运行 Jenkins,请相应地配置这些选项。否则,Jenkins 将被配置为直接连接互联网。

依赖关系

无。

示例剧本

- hosts: jenkins
  become: true
  
  vars:
    jenkins_hostname: jenkins.example.com
    java_packages:
      - openjdk-8-jdk

  roles:
    - role: geerlingguy.java
    - role: geerlingguy.jenkins

请注意,根据您的发行版,java_packages 可能需要不同版本(例如 Debian 10 的 openjdk-11-jdk,或 RHEL 7 或 8 的 java-1.8.0-openjdk)。

许可证

MIT (Expat) / BSD

作者信息

该角色由 Jeff Geerling 于 2014 年创建,他是 Ansible for DevOps 的作者。

安装
ansible-galaxy install geerlingguy.jenkins
许可证
mit
下载
2.7M
拥有者
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns