Skip to content

Commit 13a73a8

Browse files
iabheeiabhee
iabhee
authored and
iabhee
committed
initial version
0 parents  commit 13a73a8

File tree

9 files changed

+236
-0
lines changed

9 files changed

+236
-0
lines changed

README.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Ansible
2+
3+
## Requirements
4+
5+
6+
## Set Up a Jenkins Build Server in AWS ##
7+
8+
https://d1.awsstatic.com/Projects/P5505030/aws-project_Jenkins-build-server.pdf

playbook.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
- hosts: localhost
3+
connection: local
4+
5+
gather_facts: false
6+
roles:
7+
- {role: 'vpc-launch', tags: 'vpc-launch'}
8+
- {role: 'jenkins-ec2', tags: 'jenkins-ec2'}
9+
10+
- hosts: launched
11+
gather_facts: false
12+
remote_user: ec2-user
13+
become: yes
14+
tasks:
15+
roles:
16+
- jenkins-install

roles/inventory

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[local]
2+
localhost ansible_connection=local
3+
ansible_user=ec2-user
4+
ansible_ssh_private_key_file: ~/.ssh/mynewkey.pem

roles/jenkins-ec2/tasks/main.yml

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
- name: Create and configure security group
3+
ec2_group:
4+
aws_access_key: "{{ aws_access_key }}"
5+
aws_secret_key: "{{ aws_secret_key }}"
6+
name: "{{ sg_name }}"
7+
description: "{{ sg_name_description }}"
8+
vpc_id: "{{ vpc_id }}"
9+
region: "{{ aws_region }}"
10+
rules:
11+
- proto: tcp
12+
ports:
13+
- 80
14+
- 8080
15+
- 22
16+
cidr_ip: 0.0.0.0/0
17+
rule_desc: allow all on port 80
18+
register: ec2_group
19+
20+
- name: Create an ec2 instance
21+
ec2:
22+
key_name: "{{ keypair }}"
23+
instance_tags:
24+
Name: "{{ instance_name }}"
25+
exact_count: 1
26+
count_tag:
27+
Name: "{{ instance_name }}"
28+
region: "{{ aws_region }}"
29+
aws_access_key: "{{ aws_access_key }}"
30+
aws_secret_key: "{{ aws_secret_key }}"
31+
image: "{{ ami }}"
32+
instance_type: "{{ instance_type }}"
33+
group: "{{ sg_name }}"
34+
vpc_subnet_id: "{{ public_subnet_id }}"
35+
assign_public_ip: yes
36+
wait: yes
37+
register: ec2
38+
39+
- name: Add new instance to host group
40+
add_host:
41+
hostname: "{{ item.public_ip }}"
42+
groupname: launched
43+
with_items: "{{ ec2.instances }}"
44+
45+
46+
- name: Wait for SSH to come up
47+
wait_for:
48+
host: "{{ item.public_dns_name }}"
49+
port: 22
50+
delay: 10
51+
timeout: 320
52+
state: started
53+
with_items: "{{ ec2.instances }}"

roles/jenkins-ec2/vars/main.yml

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# AWS Credentials
2+
aws_access_key: YOUR ACCESS KEY
3+
aws_secret_key: YOUR SECRET KEY
4+
aws_region: "us-west-1"
5+
6+
# SecurityGroup name
7+
sg_name: WebServerSG
8+
sg_name_description: WebServerSG_Jenkins
9+
10+
# To be assigned from VPC roles
11+
vpc_id: "{{ vpc_id }}"
12+
keypair: "mynewkey"
13+
ami: ami-024c80694b5b3e51a
14+
instance_type: t2.micro
15+
public_subnet_id: "{{ public_subnet_id }}"
16+
instance_name: jenkins-ec2
17+
ansible_ssh_private_key_file: ~/.ssh/mynewkey.pem

roles/jenkins-install/tasks/main.yml

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
3+
- name: update all packages
4+
yum:
5+
name: '*'
6+
state: latest
7+
8+
- name: install openjdk
9+
yum:
10+
name: java-1.8.0-openjdk
11+
state: present
12+
13+
- name: Add the Jenkins repo
14+
get_url:
15+
url: "{{ jenkins_repo_url }}"
16+
dest: /etc/yum.repos.d/jenkins.repo
17+
18+
- name: Import a key file from Jenkins-CI
19+
rpm_key:
20+
state: present
21+
key: "{{ gpg_key }}"
22+
23+
- name: Install Jenkins
24+
yum:
25+
name: jenkins
26+
state: present
27+
28+
- name: Start Jenkins service
29+
systemd:
30+
name: jenkins
31+
state: started
32+
enabled: true
33+
- name: sleep for 30 seconds
34+
wait_for:
35+
timeout: 30
36+
37+
- name: Init password Jenkins
38+
become: yes
39+
become_method: sudo
40+
command: cat /var/lib/jenkins/secrets/initialAdminPassword
41+
changed_when: false
42+
register: result
43+
44+
- name: Print init password Jenkins
45+
debug:
46+
var: result.stdout
47+
48+

roles/jenkins-install/vars/main.yml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
gpg_key: https://pkg.jenkins.io/redhat/jenkins.io.key
2+
jenkins_repo_url: https://pkg.jenkins.io/redhat/jenkins.repo

roles/vpc-launch/tasks/main.yml

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
---
2+
- name: create a VPC
3+
ec2_vpc_net:
4+
name: "{{ vpc_name }}"
5+
cidr_block: "{{ vpc_cidr_block }}"
6+
region: "{{ aws_region }}"
7+
aws_access_key: "{{ aws_access_key }}"
8+
aws_secret_key: "{{ aws_secret_key }}"
9+
state: "present"
10+
register: vpc
11+
12+
- name: Set VPC ID in the variable
13+
set_fact:
14+
vpc_id: "{{ vpc.vpc.id }}"
15+
16+
- name: Create internet gateway for VPC
17+
ec2_vpc_igw:
18+
vpc_id: "{{ vpc_id }}"
19+
region: "{{ aws_region }}"
20+
aws_access_key: "{{ aws_access_key }}"
21+
aws_secret_key: "{{ aws_secret_key }}"
22+
state: "present"
23+
register: vpc_igw
24+
25+
- name: Set internet gateway id in the variable
26+
set_fact:
27+
igw_id: "{{ vpc_igw.gateway_id }}"
28+
29+
- name: Create public subnet
30+
ec2_vpc_subnet:
31+
state: "present"
32+
vpc_id: "{{ vpc_id }}"
33+
cidr: "{{ public_subnet_cidr }}"
34+
az: "{{ aws_region }}a"
35+
region: "{{ aws_region }}"
36+
aws_access_key: "{{ aws_access_key }}"
37+
aws_secret_key: "{{ aws_secret_key }}"
38+
resource_tags:
39+
Name: "public subnet"
40+
register: public_subnet
41+
42+
- name: Set public subnet id in the variable
43+
set_fact:
44+
public_subnet_id: "{{ public_subnet.subnet.id }}"
45+
46+
- name: Create route table
47+
ec2_vpc_route_table:
48+
vpc_id: "{{ vpc_id }}"
49+
region: "{{ aws_region }}"
50+
aws_access_key: "{{ aws_access_key }}"
51+
aws_secret_key: "{{ aws_secret_key }}"
52+
tags:
53+
Name: "Public"
54+
subnets:
55+
- "{{ public_subnet_id }}"
56+
routes:
57+
- dest: "0.0.0.0/0"
58+
gateway_id: "{{ igw_id }}"
59+
60+
- name: Create Main Security Group
61+
ec2_group:
62+
name: "Personal Security Group"
63+
description: "Personal Security Group"
64+
vpc_id: "{{ vpc_id }}"
65+
region: "{{ aws_region }}"
66+
aws_access_key: "{{ aws_access_key }}"
67+
aws_secret_key: "{{ aws_secret_key }}"
68+
rules:
69+
- proto: "tcp"
70+
from_port: "22"
71+
to_port: "22"
72+
cidr_ip: "{{ my_ip }}/32"

roles/vpc-launch/vars/main.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
3+
# AWS Credentials
4+
ws_access_key: YOUR ACCESS KEY
5+
aws_secret_key: YOUR SECRET KEY
6+
aws_region: "us-west-1"
7+
8+
# VPC Information
9+
vpc_name: "MyVPC"
10+
vpc_cidr_block: "10.0.0.0/16"
11+
12+
# For Security Group Rule
13+
my_ip: YOUR IP ADDRESS
14+
15+
# Subnets
16+
public_subnet_cidr: "10.0.0.0/24"

0 commit comments

Comments
 (0)