diff --git a/cicd/ansible_setup/README.md b/cicd/ansible_setup/README.md new file mode 100644 index 000000000..1cbf2e691 --- /dev/null +++ b/cicd/ansible_setup/README.md @@ -0,0 +1,11 @@ +# Ansible CI/CD Setup + +This Ansible playbook provisions Jenkins, Nexus for a local CI/CD pipeline. + +## How to Use + +1. Install Ansible: `sudo apt install ansible`. +2. Run the playbook: `ansible-playbook -i inventory/local site.yml`. +3. Verify: + - Jenkins: http://localhost:8080 + - Nexus: http://localhost:8081 diff --git a/cicd/ansible_setup/group_vars/all.yml b/cicd/ansible_setup/group_vars/all.yml new file mode 100644 index 000000000..c7f2d8d72 --- /dev/null +++ b/cicd/ansible_setup/group_vars/all.yml @@ -0,0 +1,5 @@ +--- +java_version: applejdk-17 +jenkins_url: "http://localhost:8080" +ansible_become_password: + diff --git a/cicd/ansible_setup/inventory/local b/cicd/ansible_setup/inventory/local new file mode 100644 index 000000000..13cfabe9b --- /dev/null +++ b/cicd/ansible_setup/inventory/local @@ -0,0 +1,2 @@ +[local] +localhost ansible_connection=local diff --git a/cicd/ansible_setup/roles/jenkins_agent/tasks/main.yml b/cicd/ansible_setup/roles/jenkins_agent/tasks/main.yml new file mode 100644 index 000000000..f867c9e61 --- /dev/null +++ b/cicd/ansible_setup/roles/jenkins_agent/tasks/main.yml @@ -0,0 +1,10 @@ +--- + +- name: Start Jenkins agent + shell: | + curl -sO {{ jenkins_url }}/jnlpJars/agent.jar; + java -jar agent.jar -url {{ jenkins_url }} -secret {{ jenkins_agent_secret }} -name agent1 -webSocket -workDir "{{ jenkins_agent_dir }}" + args: + become: true + async: 60 + poll: 0 diff --git a/cicd/ansible_setup/roles/jenkins_agent/vars/main.yml b/cicd/ansible_setup/roles/jenkins_agent/vars/main.yml new file mode 100644 index 000000000..9930c8bc8 --- /dev/null +++ b/cicd/ansible_setup/roles/jenkins_agent/vars/main.yml @@ -0,0 +1,3 @@ +--- +jenkins_agent_dir: "/tmp/jenkins-agent" +jenkins_agent_secret: diff --git a/cicd/ansible_setup/roles/jenkins_master/tasks/main.yml b/cicd/ansible_setup/roles/jenkins_master/tasks/main.yml new file mode 100644 index 000000000..ab33d4c49 --- /dev/null +++ b/cicd/ansible_setup/roles/jenkins_master/tasks/main.yml @@ -0,0 +1,13 @@ +--- +- name: Install Jenkins + homebrew: + name: jenkins-lts + state: present + +- name: Start Jenkins Controller + shell: | + nohup /opt/homebrew/opt/openjdk@21/bin/java -Dmail.smtp.starttls.enable\=true -jar /opt/homebrew/opt/jenkins-lts/libexec/jenkins.war --httpListenAddress\=127.0.0.1 --httpPort\=8080 + become: true + async: 60 + poll: 0 + ignore_errors: true diff --git a/cicd/ansible_setup/roles/jenkins_master/vars/main.yml b/cicd/ansible_setup/roles/jenkins_master/vars/main.yml new file mode 100644 index 000000000..0c5db391a --- /dev/null +++ b/cicd/ansible_setup/roles/jenkins_master/vars/main.yml @@ -0,0 +1,2 @@ +--- +jenkins_dir: "/Users/moleksiienko/devopstest/jenkins" diff --git a/cicd/ansible_setup/roles/nexus/tasks/main.yml b/cicd/ansible_setup/roles/nexus/tasks/main.yml new file mode 100644 index 000000000..34cae9598 --- /dev/null +++ b/cicd/ansible_setup/roles/nexus/tasks/main.yml @@ -0,0 +1,18 @@ +--- +- name: Unarchive Nexus package + unarchive: + src: "{{ nexus_dir }}/nexus.tar.gz" + dest: "/opt" + remote_src: yes + creates: "{{ nexus_dir }}/nexus-3.43.0-01" + +- name: Start Nexus repository + shell: | + nohup {{ nexus_dir }}/nexus-3.43.0-01/bin/nexus run + become: true + async: 60 + poll: 0 + ignore_errors: true + + + diff --git a/cicd/ansible_setup/roles/nexus/vars/main.yml b/cicd/ansible_setup/roles/nexus/vars/main.yml new file mode 100644 index 000000000..7f5015909 --- /dev/null +++ b/cicd/ansible_setup/roles/nexus/vars/main.yml @@ -0,0 +1,2 @@ +--- +nexus_dir: "/Users/moleksiienko/devopstest/nexus" diff --git a/cicd/ansible_setup/site.yml b/cicd/ansible_setup/site.yml new file mode 100644 index 000000000..aa605080e --- /dev/null +++ b/cicd/ansible_setup/site.yml @@ -0,0 +1,7 @@ +--- +- hosts: local + roles: + - jenkins_master + - jenkins_agent + - nexus +