mirror of
https://github.com/Dannecron/netology-devops.git
synced 2025-12-25 15:22:37 +03:00
215 lines
6.0 KiB
YAML
215 lines
6.0 KiB
YAML
---
|
|
- name: Preapre all hosts
|
|
hosts: all
|
|
tasks:
|
|
- name: Create group
|
|
become: true
|
|
group:
|
|
name: "{{ user_group }}"
|
|
state: present
|
|
- name: Create user
|
|
become: true
|
|
user:
|
|
name: "{{ user_name }}"
|
|
generate_ssh_key: true
|
|
register: ssh_key_info
|
|
- name: Install JDK
|
|
become: true
|
|
package:
|
|
name: "{{ java_packages }}"
|
|
state: present
|
|
|
|
- name: Get Jenkins master installed
|
|
hosts: jenkins_masters
|
|
tasks:
|
|
- name: Get repo Jenkins
|
|
become: true
|
|
get_url:
|
|
url: https://pkg.jenkins.io/redhat-stable/jenkins.repo
|
|
dest: /etc/yum.repos.d/jenkins.repo
|
|
validate_certs: false
|
|
- name: Add Jenkins key
|
|
become: true
|
|
rpm_key:
|
|
key: https://pkg.jenkins.io/redhat-stable/jenkins.io.key
|
|
state: present
|
|
validate_certs: false
|
|
- name: Install epel-release
|
|
become: true
|
|
yum:
|
|
name: epel-release
|
|
state: present
|
|
- name: Install Jenkins and requirements
|
|
become: true
|
|
yum:
|
|
name:
|
|
- jenkins
|
|
- git
|
|
state: present
|
|
register: jenkins_installed
|
|
- name: Ensure jenkins agents are present in known_hosts file
|
|
become: true
|
|
become_user: "{{ jenkins_user_name }}"
|
|
known_hosts:
|
|
name: "{{ hostvars[item].ansible_host }}"
|
|
state: present
|
|
key: "{{ lookup('pipe', 'ssh-keyscan {{ hostvars[item].ansible_host }}') }}"
|
|
hash_host: true
|
|
with_items: "{{ groups.jenkins_agents }}"
|
|
- name: Start Jenkins
|
|
become: true
|
|
systemd:
|
|
name: jenkins
|
|
state: restarted
|
|
enabled: true
|
|
when: jenkins_installed is changed
|
|
- name: Ensure github.com is a known host
|
|
become: true
|
|
become_user: "{{ jenkins_user_name }}"
|
|
lineinfile:
|
|
dest: ~/.ssh/known_hosts
|
|
create: yes
|
|
state: present
|
|
line: "{{ lookup('pipe', 'ssh-keyscan -t rsa github.com') }}"
|
|
regexp: "^github\\.com"
|
|
tags:
|
|
- jenkins-master
|
|
|
|
- name: Prepare jenkins agent
|
|
hosts: jenkins_agents
|
|
become: true
|
|
become_user: "{{ jenkins_user_name }}"
|
|
tasks:
|
|
- name: Add master publickey into authorized_key
|
|
authorized_key:
|
|
user: "{{ jenkins_user_name }}"
|
|
state: present
|
|
key: "{{ hostvars['jenkins-master-01']['ssh_key_info']['ssh_public_key'] }}"
|
|
- name: Create agent_dir
|
|
become_user: root
|
|
file:
|
|
path: "{{ jenkins_agent_dir }}"
|
|
state: directory
|
|
owner: "{{ jenkins_user_name }}"
|
|
group: "{{ jenkins_user_group }}"
|
|
- name: Add docker repo
|
|
become_user: root
|
|
get_url:
|
|
url: https://download.docker.com/linux/centos/docker-ce.repo
|
|
dest: /etc/yum.repos.d/docker-ce.repo
|
|
validate_certs: false
|
|
- name: Install some required
|
|
become_user: root
|
|
yum:
|
|
name:
|
|
- git
|
|
- docker-ce
|
|
- docker-ce-cli
|
|
- containerd.io
|
|
- gcc
|
|
- openssl-devel
|
|
- bzip2-devel
|
|
- libffi-devel
|
|
- zlib-devel
|
|
- xz-devel
|
|
state: present
|
|
- name: Download python 3.8 distrib
|
|
ansible.builtin.get_url:
|
|
url: "https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz"
|
|
dest: "{{ jenkins_agent_dir }}/Python-3.8.12.tgz"
|
|
- name: Unpack python 3.8 distrib
|
|
ansible.builtin.unarchive:
|
|
src: "{{ jenkins_agent_dir }}/Python-3.8.12.tgz"
|
|
dest: "{{ jenkins_agent_dir }}"
|
|
remote_src: true
|
|
- name: Configure python 3.8
|
|
ansible.builtin.shell:
|
|
cmd: ./configure --enable-optimizations
|
|
chdir: "{{ jenkins_agent_dir }}/Python-3.8.12"
|
|
- name: Install python 3.8
|
|
become_user: root
|
|
ansible.builtin.shell:
|
|
cmd: make altinstall
|
|
chdir: "{{ jenkins_agent_dir }}/Python-3.8.12"
|
|
- name: Create symbolic link python3
|
|
become_user: root
|
|
ansible.builtin.file:
|
|
src: /usr/local/bin/python3.8
|
|
dest: /usr/bin/python3
|
|
state: link
|
|
- name: Create symbolic link pip3
|
|
become_user: root
|
|
ansible.builtin.file:
|
|
src: /usr/local/bin/pip3.8
|
|
dest: /usr/bin/pip3
|
|
state: link
|
|
- name: Add local to path
|
|
become_user: root
|
|
ansible.builtin.shell: echo "PATH=$PATH:/usr/local/bin" > /etc/environment
|
|
- name: Update pip
|
|
become_user: root
|
|
pip:
|
|
executable: /usr/bin/pip3
|
|
name: pip
|
|
extra_args: --upgrade
|
|
- name: Install Ansible
|
|
become_user: root
|
|
pip:
|
|
executable: /usr/bin/pip3
|
|
name:
|
|
- selinux
|
|
- ansible<3.0
|
|
state: present
|
|
- name: Reinstall Selinux
|
|
become_user: root
|
|
pip:
|
|
executable: /usr/bin/pip3
|
|
name:
|
|
- selinux
|
|
state: forcereinstall
|
|
- name: Create docker group
|
|
become_user: root
|
|
group:
|
|
name: docker
|
|
state: present
|
|
- name: Add jenkins user to dockergroup
|
|
become_user: root
|
|
user:
|
|
name: "{{ jenkins_user_name }}"
|
|
groups: docker
|
|
- name: Restart docker
|
|
become_user: root
|
|
systemd:
|
|
name: docker
|
|
state: restarted
|
|
enabled: true
|
|
- name: Install agent.jar
|
|
get_url:
|
|
url: "http://{{ hostvars['jenkins-master-01']['ansible_host'] }}:8080/jnlpJars/agent.jar"
|
|
dest: "{{ jenkins_agent_dir }}"
|
|
register: install_agent
|
|
until: install_agent is succeeded
|
|
retries: 10
|
|
timeout: 10
|
|
- name: Install pip molecule
|
|
become_user: root
|
|
ansible.builtin.pip:
|
|
executable: /usr/bin/pip3
|
|
name:
|
|
- molecule==3.5.2
|
|
- molecule-docker
|
|
- yamllint
|
|
- ansible-lint
|
|
- name: Update ansible community.docker collection
|
|
ansible.builtin.shell:
|
|
cmd: ansible-galaxy collection install community.docker
|
|
- name: Ensure github.com is a known host
|
|
lineinfile:
|
|
dest: ~/.ssh/known_hosts
|
|
create: yes
|
|
state: present
|
|
line: "{{ lookup('pipe', 'ssh-keyscan -t rsa github.com') }}"
|
|
regexp: "^github\\.com"
|
|
tags:
|
|
- jenkins-agent
|