<mohammadrony>
---
- 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 }}"