Сконфигурируйте Jenkins 2.0 с Ansible

Я использую Ansible для предоставления наших серверов, я установил Jenkins 2.0, но он становится с загрузочной конфигурацией, когда я открываю веб-интерфейс. Как я могу сделать это с Ansible или Shell или Jenkins-Cli. CentOS 7, Ansible 2.0.1.0. Так,

  1. Установка Jenkins 2.0 с http://pkg.jenkins-ci.org/redhat-rc/jenkins-2.0-1.1.noarch.rpm об / мин.
  2. Установите Java с Yum.
  3. Служба запуска Дженкинс.
  4. Открыть 192.168.46.10:8080, которая открывает Дженкинс.
  5. В веб-интерфейс добавляется начальный пароль администратора.
  6. В веб-интерфейсе выберите и установите плагины.
  7. В веб-интерфейсе создайте нового администратора.

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

4 ответа

Решение

Я нашел решение, это отключить мастер настройки, после этого я смог изменить конфигурационные файлы.

- 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

Вы можете создать скрипт инициализации (в 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:

- 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

На Ubuntu 16.04 с Jenkins, установленным с помощью 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

Вам все равно придется настроить безопасность, хотя!

Другие вопросы по тегам