karlmdavis.jenkins2
Ansible-Rolle für Jenkins 2+
Diese Ansible Rolle kann verwendet werden, um Jenkins 2 zu installieren und zu verwalten.
Anforderungen
Diese Rolle benötigt Ansible 2.4 oder höher, wobei entweder Ansible-Pipelining verfügbar sein muss oder setfacl auf dem verwalteten System vorhanden sein muss (siehe Becoming an Unprivileged User).
Die Rolle unterstützt derzeit Ubuntu 14.04 (Trusty) und Ubuntu 16.04 (Xenial). Beiträge zur Unterstützung zusätzlicher Plattformen sind willkommen!
Rollenvariablen
Diese Rolle unterstützt die folgenden Variablen, die hier mit ihren Standardwerten aus defaults/main.yml aufgeführt sind:
jenkins_release_line:'weekly'- Wenn auf
long_term_supportgesetzt, installiert die Rolle die LTS-Versionen von Jenkins. - Wenn auf
weeklygesetzt, installiert die Rolle die wöchentlichen Versionen von Jenkins.
- Wenn auf
jenkins_release_update:true- Wenn
true, wird das Jenkins-Paket (YUM, APT usw.) auf die neueste Version aktualisiert, wenn diese Rolle ausgeführt wird.
- Wenn
jenkins_home:/var/lib/jenkins- Das Verzeichnis, in dem (die meisten) Jenkins-Daten gespeichert werden.
- Aufgrund von Einschränkungen des Jenkins-Installers verwendet das
jenkinsDienstkonto dennoch den Standardwert als Home-Verzeichnis. Dies ist nur für SSH-Schlüssel relevant.
jenkins_port:8080- Der Port, auf dem Jenkins für HTTP-Anfragen läuft.
- In den meisten Systemen muss dieser Wert über 1024 liegen, da Jenkins nicht als
rootläuft.
jenkins_context_path:''- Der Kontextpfad, unter dem Jenkins gehostet wird, z. B.
/fooinhttp://localhost:8080/foo. Belassen Sie ihn auf'', um am Wurzelpfad zu hosten.
- Der Kontextpfad, unter dem Jenkins gehostet wird, z. B.
jenkins_url_external:''- Die externe URL, die Benutzer verwenden, um auf Jenkins zuzugreifen. Wird in der Jenkins-Konfiguration festgelegt und in E-Mails, Webhooks usw. verwendet.
- Wenn dies leer gelassen wird, wird die Konfiguration nicht festgelegt, und Jenkins versucht, dies automatisch zu erkennen (was nicht korrekt funktioniert, wenn es proxy-gesteuert ist).
jenkins_admin_username: (undefiniert)- Wenn eine von
jenkins_admin_usernameundjenkins_admin_passworddefiniert ist, müssen beide gesetzt werden. - Überschreiben Sie diese Variable, um die Jenkins-Administrator-Anmeldeinformationen anzugeben, die für jeden möglichen Sicherheitsbereich verwendet werden sollen.
- Wenn undefiniert gelassen, wird die Rolle versuchen, anonyme Authentifizierung zu verwenden.
- Beachten Sie, dass die Rolle automatisch erkennt, ob Jenkins für die Erlaubnis anonymer Authentifizierung eingestellt ist (wie es direkt nach der Installation der Fall ist) und damit korrekt umgeht.
- Wenn eine von
jenkins_admin_password: (undefiniert)- Wenn eine von
jenkins_admin_usernameundjenkins_admin_passworddefiniert ist, müssen beide gesetzt werden. - Überschreiben Sie diese Variable, um die Jenkins-Administrator-Anmeldeinformationen anzugeben.
- Wenn eine von
jenkins_session_timeout:30- Die Anzahl der Minuten, bevor Jenkins-Sitzungen ablaufen, d. h. wie lange Anmeldungen gültig sind.
- Standardmäßig 30 Minuten.
- Kann auf
0gesetzt werden, um niemals abzulaufen.
jenkins_plugins_extra:[]- Überschreiben Sie diese Variable, um zusätzliche Jenkins-Plugins zu installieren.
- Diese wären zusätzlich zu den von Jenkins 2 empfohlenen Plugins, die automatisch von dieser Rolle installiert werden (siehe
jenkins_plugins_recommendedin defaults/main.yml).
jenkins_plugins_timeout:60- Die Zeit (in Sekunden), die vergeht, bevor die Installation/Aktualisierung eines Plugins fehlschlägt. Dieser Wert wird an den Timeout-Parameter im
jenkins_pluginModul übergeben. (Siehe hier für Details: http://docs.ansible.com/ansible/latest/jenkins_plugin_module.html#options.)
- Die Zeit (in Sekunden), die vergeht, bevor die Installation/Aktualisierung eines Plugins fehlschlägt. Dieser Wert wird an den Timeout-Parameter im
jenkins_plugins_update:true- Wenn
true, werden die Jenkins-Plugins aktualisiert, wenn diese Rolle ausgeführt wird. (Beachten Sie, dass fehlende Plugins immer installiert werden.)
- Wenn
jenkins_java_args_extra:''- Zusätzliche Optionen, die den
JAVA_ARGSfür den Jenkins-Prozess hinzugefügt werden, z. B. die JVM-Speichereinstellungen, z. B.-Xmx4g.
- Zusätzliche Optionen, die den
jenkins_http_proxy_server,jenkins_http_proxy_port,jenkins_http_proxy_no_proxy_hosts: (alle undefiniert)- Diese haben die gleiche Funktion wie die JVM-Eigenschaften
http.proxyHost,http.proxyPortundhttp.nonProxyHosts, wobei die Einstellungen sowohl für HTTP- als auch für HTTPS-Anfragen verwendet werden. - Insbesondere werden diese Einstellungen verwendet, um zu konfigurieren:
- Die Jenkins-JVMs
http.proxyHost,http.proxyPort,https.proxyHost,https.proxyPortundhttp.nonProxyHostsEigenschaften, wie in Java Networking and Proxies dokumentiert. - Die spezifischen Proxy-Einstellungen von Jenkins (die einige Plugins, wie das GitHub-Plugin, benötigen), wie in JenkinsBehindProxy dokumentiert.
- Der Wert von
jenkins_http_proxy_no_proxy_hostssollte eine Liste sein, z. B.['localhost', 'example.com'].
- Die Jenkins-JVMs
- Diese haben die gleiche Funktion wie die JVM-Eigenschaften
Abhängigkeiten
Diese Rolle hat keine direkten Abhängigkeiten von anderen Ansible-Rollen. Sie erfordert jedoch, dass eine Java JRE im Systempfad verfügbar ist.
Beispiel-Playbook
Diese Rolle kann wie folgt installiert werden:
$ ansible-galaxy install karlmdavis.jenkins2
Diese Rolle kann wie folgt angewendet werden:
- hosts: some_box
tasks:
- import_role:
name: karlmdavis.ansible-jenkins2
vars:
jenkins_plugins_extra:
- github-oauth
Ausführen von Groovy-Skripten zur Konfiguration von Jenkins
Nach der Installation von Jenkins können Groovy-Skripte über Ansible ausgeführt werden, um Jenkins weiter anzupassen.
Zum Beispiel, so installieren Sie Jenkins und konfigurieren dann Jenkins zur Verwendung von HudsonPrivateSecurityRealm für lokale Jenkins-Konten:
- hosts: some_box
tasks:
- import_role:
name: karlmdavis.ansible-jenkins2
vars:
# Wird beim ersten Durchlauf nicht benötigt, aber bei vorherigen Durchläufen (nachdem
# die Sicherheit aktiviert wurde, wie unten beschrieben).
jenkins_admin_username: test
jenkins_admin_password: supersecret
# Sicherstellen, dass Jenkins neu gestartet wurde, falls erforderlich.
- meta: flush_handlers
# Sicherheit konfigurieren, um lokale Jenkins-Konten zu verwenden.
- name: Konfigurieren der Sicherheit
jenkins_script:
url: "{{ jenkins_url_local }}"
user: "{{ jenkins_dynamic_admin_username | default(omit) }}"
password: "{{ jenkins_dynamic_admin_password | default(omit) }}"
script: |
// Diese sind die grundlegenden Importe, die Jenkins interaktive Skriptkonsole
// automatisch einfügt.
import jenkins.*;
import jenkins.model.*;
import hudson.*;
import hudson.model.*;
// Sicherheit realm konfigurieren, das die Authentifizierung behandelt.
def securityRealm = new hudson.security.HudsonPrivateSecurityRealm(false)
if(!securityRealm.equals(Jenkins.instance.getSecurityRealm())) {
Jenkins.instance.setSecurityRealm(securityRealm)
// Einen Benutzer zum Anmelden erstellen. Sicherstellen, dass der Benutzer an den
// systemlokalen `jenkins` Benutzer-SSH-Schlüssel gebunden ist, damit dieses
// Konto mit der Jenkins-CLI verwendet werden kann.
def testUser = securityRealm.createAccount("test", "supersecret")
testUser.addProperty(new hudson.tasks.Mailer.UserProperty("[email protected]"));
testUser.save()
Jenkins.instance.save()
println "Authentifizierung geändert."
}
// Autorisierungsstrategie konfigurieren, die festlegt, wer was tun kann.
def authorizationStrategy = new hudson.security.FullControlOnceLoggedInAuthorizationStrategy()
if(!authorizationStrategy.equals(Jenkins.instance.getAuthorizationStrategy())) {
authorizationStrategy.setAllowAnonymousRead(false)
Jenkins.instance.setAuthorizationStrategy(authorizationStrategy)
Jenkins.instance.save()
println "Autorisierung geändert."
}
register: shell_jenkins_security
changed_when: "(shell_jenkins_security | success) and 'Changed' not in shell_jenkins_security.stdout"
Alternativ können die Groovy-Skripte als separate Dateien gespeichert und über lookup(...) wie folgt eingebunden werden:
- hosts: some_box
tasks:
- import_role:
name: karlmdavis.ansible-jenkins2
vars:
# Wird beim ersten Durchlauf nicht benötigt, aber bei vorherigen Durchläufen (nachdem
# die Sicherheit aktiviert wurde, wie unten beschrieben).
jenkins_admin_username: test
jenkins_admin_password: supersecret
# Sicherstellen, dass Jenkins neu gestartet wurde, falls erforderlich.
- meta: flush_handlers
# Sicherheit konfigurieren, um lokale Jenkins-Konten zu verwenden.
- name: Konfigurieren der Sicherheit
jenkins_script:
url: "{{ jenkins_url_local }}"
user: "{{ jenkins_dynamic_admin_username | default(omit) }}"
password: "{{ jenkins_dynamic_admin_password | default(omit) }}"
script: "{{ lookup('template', 'templates/jenkins_security.groovy.j2') }}"
Lizenz
Dieses Projekt ist im weltweiten öffentlichen Bereich. Wie in CONTRIBUTING angegeben:
Dieses Projekt ist im öffentlichen Bereich innerhalb der Vereinigten Staaten, und Urheberrechte und verwandte Rechte am Werk weltweit werden durch die CC0 1.0 Universalübertragung in den öffentlichen Bereich aufgehoben.
Alle Beiträge zu diesem Projekt werden unter der CC0-Übertragung veröffentlicht. Durch das Einreichen eines Pull-Requests erklären Sie sich damit einverstanden, diese Aufhebung des Urheberrechtsinteresses einzuhalten.
Autoreninformation
Dieses Plugin wurde von Karl M. Davis (https://justdavis.com/karl/) verfasst.
ansible-galaxy install karlmdavis.jenkins2