使用 Ansible 配置 Jenkins 2.0
Configure Jenkins 2.0 with Ansible
我正在使用 Ansible 来配置我们的服务器,我安装了 Jenkins 2.0,但是当我打开网络时它会变成启动配置 UI。我如何使用 Ansible 或 shell 或 jenkins-cli 来做到这一点。 CentOS 7,安塞布尔 2.0.1.0。
所以,
- 从 http://pkg.jenkins-ci.org/redhat-rc/jenkins-2.0-1.1.noarch.rpm rpm 安装 Jenkins 2.0。
- 使用 yum 安装 java。
- 服务启动jenkins。
- 打开192.168.46.10:8080,也就是打开Jenkins。
- 在 Web 中 UI 添加初始管理员密码。
- 在网络中 UI select 并安装插件。
- 在网络中 UI 创建一个新的管理员用户。
5、6、7点都是新版Jenkins的启动配置。我不知道我们如何自动安装它。
编辑 1:
1,2,3点已经完成了,只是我没有分享因为没有必要,因为我只需要一个建议如何配置Jenkins。但现在我将它添加到我的问题中。
---
- name: Jenkins - install | Install java
yum: name=java state=installed
- name: Jenkins - install | Install Jenkins 2.0
yum: pkg=http://pkg.jenkins-ci.org/redhat-rc/jenkins-2.0-1.1.noarch.rpm state=installed
- name: Jenkins - install | Start and enable Jenkins 2.0
service: name=jenkins state=started enabled=yes
我找到了一个解决方案,就是关闭设置向导,之后我就可以更改配置文件了。
- name: Jenkins - configure | Turn off Jenkins setup wizard
lineinfile: dest=/etc/sysconfig/jenkins regexp='^JENKINS_JAVA_OPTIONS=' line='JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false"'
notify: restart jenkins
上述解决方案对我不起作用,但请给我提示,这是对我有用的解决方案 Ubuntu:
- name: Configure JVM Arguments
lineinfile:
dest: /etc/default/jenkins
regexp: '^JAVA_ARGS='
line: 'JAVA_ARGS="-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false"'
notify:
- Restart Jenkins
您可以创建一个初始化脚本(在 groovy 中)来添加管理员帐户。
脚本应出现在 $JENKINS_HOME/init.groovy.d/*.groovy
中。
有关详细信息,请参阅 Jenkins CI Wiki。
这是一个例子。
security.groovy.j2
文件:
#!groovy
import java.util.logging.Level
import java.util.logging.Logger
import hudson.security.*
import jenkins.model.*
def instance = Jenkins.getInstance()
def logger = Logger.getLogger(Jenkins.class.getName())
logger.log(Level.INFO, "Ensuring that local user '{{ jenkins.admin_username }}' is created.")
if (!instance.isUseSecurity()) {
logger.log(Level.INFO, "Creating local admin user '{{ jenkins.admin_username }}'.")
def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
strategy.setAllowAnonymousRead(false)
def hudsonRealm = new HudsonPrivateSecurityRealm(false)
hudsonRealm.createAccount("{{ jenkins.admin_username }}", "{{ jenkins.admin_password }}")
instance.setSecurityRealm(hudsonRealm)
instance.setAuthorizationStrategy(strategy)
instance.save()
}
如何在 Ansible playbook 中使用:
- name: Create initialization scripts directory
file: path={{ jenkins.home }}/init.groovy.d
state=directory
owner=jenkins
group=jenkins
mode=0775
- name: Add initialization script to setup basic security
template: src=security.groovy.j2
dest={{ jenkins.home }}/init.groovy.d/security.groovy
我受到这个 GitHub 存储库的启发。
在 Ubuntu 16.04 上 Jenkins installed using apt-get,这有效:
- name: "Turn off Jenkins setup wizard"
lineinfile:
dest: /etc/init.d/jenkins
regexp: '^JAVA_ARGS='
line: 'JAVA_ARGS="-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false"'
insertbefore: '^DAEMON_ARGS='
notify: restart jenkins
- name: restart jenkins
service: name=jenkins state=restarted
不过您仍然需要设置安全性!
我正在使用 Ansible 来配置我们的服务器,我安装了 Jenkins 2.0,但是当我打开网络时它会变成启动配置 UI。我如何使用 Ansible 或 shell 或 jenkins-cli 来做到这一点。 CentOS 7,安塞布尔 2.0.1.0。 所以,
- 从 http://pkg.jenkins-ci.org/redhat-rc/jenkins-2.0-1.1.noarch.rpm rpm 安装 Jenkins 2.0。
- 使用 yum 安装 java。
- 服务启动jenkins。
- 打开192.168.46.10:8080,也就是打开Jenkins。
- 在 Web 中 UI 添加初始管理员密码。
- 在网络中 UI select 并安装插件。
- 在网络中 UI 创建一个新的管理员用户。
5、6、7点都是新版Jenkins的启动配置。我不知道我们如何自动安装它。
编辑 1:
1,2,3点已经完成了,只是我没有分享因为没有必要,因为我只需要一个建议如何配置Jenkins。但现在我将它添加到我的问题中。
---
- name: Jenkins - install | Install java
yum: name=java state=installed
- name: Jenkins - install | Install Jenkins 2.0
yum: pkg=http://pkg.jenkins-ci.org/redhat-rc/jenkins-2.0-1.1.noarch.rpm state=installed
- name: Jenkins - install | Start and enable Jenkins 2.0
service: name=jenkins state=started enabled=yes
我找到了一个解决方案,就是关闭设置向导,之后我就可以更改配置文件了。
- name: Jenkins - configure | Turn off Jenkins setup wizard
lineinfile: dest=/etc/sysconfig/jenkins regexp='^JENKINS_JAVA_OPTIONS=' line='JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false"'
notify: restart jenkins
上述解决方案对我不起作用,但请给我提示,这是对我有用的解决方案 Ubuntu:
- name: Configure JVM Arguments
lineinfile:
dest: /etc/default/jenkins
regexp: '^JAVA_ARGS='
line: 'JAVA_ARGS="-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false"'
notify:
- Restart Jenkins
您可以创建一个初始化脚本(在 groovy 中)来添加管理员帐户。
脚本应出现在 $JENKINS_HOME/init.groovy.d/*.groovy
中。
有关详细信息,请参阅 Jenkins CI Wiki。
这是一个例子。
security.groovy.j2
文件:
#!groovy
import java.util.logging.Level
import java.util.logging.Logger
import hudson.security.*
import jenkins.model.*
def instance = Jenkins.getInstance()
def logger = Logger.getLogger(Jenkins.class.getName())
logger.log(Level.INFO, "Ensuring that local user '{{ jenkins.admin_username }}' is created.")
if (!instance.isUseSecurity()) {
logger.log(Level.INFO, "Creating local admin user '{{ jenkins.admin_username }}'.")
def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
strategy.setAllowAnonymousRead(false)
def hudsonRealm = new HudsonPrivateSecurityRealm(false)
hudsonRealm.createAccount("{{ jenkins.admin_username }}", "{{ jenkins.admin_password }}")
instance.setSecurityRealm(hudsonRealm)
instance.setAuthorizationStrategy(strategy)
instance.save()
}
如何在 Ansible playbook 中使用:
- name: Create initialization scripts directory
file: path={{ jenkins.home }}/init.groovy.d
state=directory
owner=jenkins
group=jenkins
mode=0775
- name: Add initialization script to setup basic security
template: src=security.groovy.j2
dest={{ jenkins.home }}/init.groovy.d/security.groovy
我受到这个 GitHub 存储库的启发。
在 Ubuntu 16.04 上 Jenkins installed using apt-get,这有效:
- name: "Turn off Jenkins setup wizard"
lineinfile:
dest: /etc/init.d/jenkins
regexp: '^JAVA_ARGS='
line: 'JAVA_ARGS="-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false"'
insertbefore: '^DAEMON_ARGS='
notify: restart jenkins
- name: restart jenkins
service: name=jenkins state=restarted
不过您仍然需要设置安全性!