-
Notifications
You must be signed in to change notification settings - Fork 208
/
13-step-13.nutsh
89 lines (61 loc) · 2.62 KB
/
13-step-13.nutsh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
lesson_name("Using roles from Ansible Galaxy - Install a Jenkins server")
make_and_go_ws
clear_ws
run(`cp -r /tutorials/files/step-13/* .`)
"Ansible Galaxy ( `http://docs.ansible.com/ansible/latest/galaxy.html` ) refers to the Galaxy website where users can share roles, and to a command line tool for installing, creating and managing roles."
"In this lesson, we are going to use a role from Ansible Galaxy to install Jenkins on one of our nodes."
"You can browse available roles here: `https://galaxy.ansible.com/list#/roles`"
"Run the following command to install the required role"
"*ansible-galaxy install geerlingguy.jenkins*"
prompt {
if success && command == "ansible-galaxy install geerlingguy.jenkins" {
expect ("ansible-galaxy install geerlingguy.jenkins")
""
"OK!"
break
}
}
"Let's continue with an inventory file. We will install on `host0.example.org`"
"Check the inventory file I've prepared for you, by running:"
"*cat hosts*"
prompt {
if success && command == "cat hosts" {
expect ("cat hosts")
""
"See? We created a new group named `jenkins`. This is not mandatory but a good practice."
break
}
}
"Now we need a playbook and we will use the one provided as example in github repo of the role: `https://github.com/geerlingguy/ansible-role-jenkins#example-playbook`"
"Inspect our playbook, by running:"
"*cat jenkins.yaml*"
prompt {
if success && command == "cat jenkins.yaml" {
expect ("cat jenkins.yaml")
""
"The playbook includes another role which installs `java` (a prerequisite for jenkins). This role has already been installed with our first `ansible-galaxy install ...` command as `geerlingguy.jenkins` has a dependency on `geerlingguy.java`."
"That's it, we are ready to go!"
break
}
}
"Run the following command to run the playbook:"
"*ansible-playbook -i hosts jenkins.yaml*"
prompt {
if success && command == "ansible-playbook -i hosts jenkins.yaml" {
expect ("ansible-playbook -i hosts jenkins.yaml")
""
"Perfect!"
say("Now go to `http://127.0.0.1:" + run (`echo $(($HOSTPORT_BASE+3))`) + "` and see the result!")
say("You can login with `admin/admin` :)")
say("! Remember our hosts are docker containers and `port 8080 of host0.example.org` is exposed to `port " + run (`echo $(($HOSTPORT_BASE+3))`) + " of your local machine`")
break
}
}
"This is the end of this lesson!"
"Please press the \"`Enter`\" key to continue!"
prompt {
if command == "" {
expect (" ")
break
}
}