geerlingguy.jenkins
Ansible 角色:Jenkins 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 插件。默认情况下为空列表([]
)。项目可以使用名称或包含 name
和 version
键的字典来锁定特定版本的插件。
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