通过 Ansible 创建 Jenkins Server(2)

jenkins_version: "1.644"
jenkins_pkg_url: "http://www.example.com"
这两个配置是可选的,通过 jenkins_version 变量我们可以指定安装的 Jenkins 版本,这样每次都会安装相同的版本,当然必须是出现在 (Ubuntu)中的版本。
如果你不想使用官方的包,可以通过 jenkins_pkg_url 指定自己的包。默认这两个选项是被注释掉的,也就是说会安装官方的包。

jenkins_connection_delay: 5
jenkins_connection_retries: 60
启动后连接到 Jenkins 时需要等待的时间和次数,以验证 Jenkins 是否正在运行。等待的总时间=延迟*重试,因此默认情况下,这个角色在超时前将等待 300 秒。

jenkins_init_changes:
  - option: "JENKINS_ARGS"
    value: "--prefix={{ jenkins_url_prefix }}"
  - option: "JENKINS_JAVA_OPTIONS"
    value: "{{ jenkins_java_options }}"
修改 Jenkings 的初始脚本,默认的更改设置了配置的 URL 前缀,并为 Jenkins 的启动添加了配置的 Java 选项。如果要为 Jenkins 的初始化脚本设置其他选项,添加其他的 选项/值 就可以了。

下面的配置与平台相关,所以 Ubuntu 相关的配置放在配置文件 ~/.ansible/roles/geerlingguy.jenkins/vars/Debian.yml 中:
# For Debian (role default):
__jenkins_repo_url: deb https://pkg.jenkins.io/debian binary/
__jenkins_repo_key_url: https://pkg.jenkins.io/debian/jenkins.io.key
默认安装的是 Jenkins 的最新版本,如果要安装稳定版本请设置为下面的配置:
# For Debian/Ubuntu LTS:
__jenkins_repo_url: deb binary/
__jenkins_repo_key_url:

先在目标机器上安装 curl

由于在安装 Jenkins 的时候需要用到 curl 工具,所以有必要先安装该工具。具体的做法我们可以写一个简单 playbook 来实现,把下面的内容保存到文件 pb_curl.yml 文件中:

--- - hosts: jenkinsservers become: true become_user: root tasks: - name: install curl on Ubuntu apt: name: curl state: 'latest' update_cache: no

然后在 /etc/ansible/hosts 文件中添加一个组 jenkinsservers 来保存目标主机:

[jenkinsservers] 192.168.21.145

最后执行命令在目标机器上安装 curl:

$ ansible-playbook -u nick pb_curl.yml

如果你还不熟悉 Ansible 及其 playbook,请参考笔者的《Ansible 简介》一文。

安装 Jenkins

下面我们创建一个非常简单的 playbook 文件 pb_jenkins.yml,其中引用已经安装好的 role 来完成 jenkins 的安装:

--- - hosts: jenkinsservers vars: jenkins_hostname: localhost roles: - role: geerlingguy.java become: yes - role: geerlingguy.jenkins become: yes

注意,playbook 中先配置了 geerlingguy.java 来安装 Jenkins 依赖的 java。
执行下面的命令进行安装:

$ ansible-playbook -u nick pb_jenkins.yml

安装成功后,到目标机器上检查一下:

通过 Ansible 创建 Jenkins Server

Jenkins 服务器已经可以正常运行了,但此时只能通过 localhost 在本机访问。如果需要在局域网内访问,在配置文件中把 localhost 换成主机的 IP 就可以了。
注意,Ansible 的命令是可以重复执行的,如果因为网络等原因造成的失败问题,可以调整相关的超时参数然后重新执行一遍就行了。

总结

对于自动化来说,其本质是件一直在路上的工作。明确目标,然后找对工具进行持续的改进。笔者认为  Ansible 就是这么一款值得信赖的自动化利器,并且它能够通过 playbook 和 role 等概念把我们的使用经验积淀下来进行分享。

参考:

ansible-role-jenkins
galaxy role jenkins(geerlingguy)

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0e5e44e0a55ea35fac58f18d62dbd708.html