---
- name: disable SELinux on reboot
selinux:
state: disabled
notify: Reboot ALL machines
- name: Install firewalld package
yum:
name: firewalld
state: present
- name: disable firewall service for labs
service:
name: firewalld
state: stopped
enabled: false
- name: Enable Root Login
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "^PermitRootLogin"
line: "PermitRootLogin yes"
state: present
backup: yes
become_user: root
notify:
- Restart SSH
- name: Install basic packages
dnf:
name:
- wget
- vim
- git
state: present
update_cache: true
- name: Install Java
dnf:
name:
- java-11-openjdk
- java-11-openjdk-devel
state: present
- name: Install Maven
dnf:
name: maven
state: present
- name: Download Long Term Jenkins release
get_url:
url: https://pkg.jenkins.io/redhat-stable/jenkins.repo
dest: /etc/yum.repos.d/jenkins.repo
- name: Import Jenkins key from URL
rpm_key:
state: present
key: https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
- name: DNF update
dnf:
name: "*"
state: latest
- name: Install Jenkins
dnf:
name: jenkins
state: latest
- name: Daemon-reload to pick up config changes
systemd:
daemon_reload: yes
- name: Start Jenkins
systemd:
name: jenkins
enabled: true
state: started
ignore_errors: true
- name: Fetch initial admin token
fetch:
src: "{{ admin_token_file }}"
dest: /home/ansible/jenkins-admintoken.txt
flat: yes
# - name: Sleep 1 min for Jenkins to initialize
# wait_for:
# timeout: 60
# - name: Skip Jenkins StartUp
# lineinfile: dest=/lib/systemd/system/jenkins.service
# regexp='^Environment="JAVA_OPTS=-Djava.awt.headless=true'
# line='Environment="JAVA_OPTS=-Djava.awt.headless=true -Djenkins.install.runSetupWizard=false"'
# notify:
# - Restart Jenkins
# - name: Sleep 1 min for Jenkins to initialize
# wait_for:
# timeout: 60
# - name: Install ansible plugin on Jenkins
# jenkins_plugin:
# name: build-pipeline-plugin
# notify:
# - Restart Jenkins
# - name: Get initial admin token
# shell: "cat {{ admin_token_file }}"
# register: admin_auth_token
# - name: Create crumb authentication request
# uri:
# url: 'http://{{ jenkins.host }}:{{ jenkins.port }}/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
# user: admin
# password: "{{ admin_auth_token.stdout }}"
# force_basic_auth: yes
# return_content: yes
# register: crumb
# - name: Create Jenkins administration account
# uri:
# method: POST
# url: "http://{{ jenkins.host }}:{{ jenkins.port }}/securityRealm/createAccountByAdmin"
# user: admin
# password: "{{ admin_auth_token.stdout }}"
# force_basic_auth: yes
# follow_redirects: all
# headers:
# Jenkins-Crumb: '{{ crumb.content.split(":")[1] }}'
# Cookie: "{{ crumb.set_cookie }}"
# body: "username={{ jenkins.user }}&password1={{ jenkins.pass }}&password2={{ jenkins.pass }}&fullname={{ jenkins.fullname }}&email={{ jenkins.email }}"