Skip to content

Commit c47ef2f

Browse files
committed
Add user config and Docker test
1 parent 4f78fe5 commit c47ef2f

File tree

3 files changed

+58
-8
lines changed

3 files changed

+58
-8
lines changed

cloud-init-user-data

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,27 @@
11
#cloud-config
22

3+
# users and groups
4+
#groups:
5+
# - docker
6+
7+
users:
8+
- default
9+
- name: ${user}
10+
sudo: ALL=(ALL) NOPASSWD:ALL
11+
shell: /bin/zsh
12+
groups: docker
13+
14+
disable_root: true
15+
16+
# packages
317
package_update: true
418
package_upgrade: true
519

620
packages:
721
- curl
822
- docker-ce
923
- git
24+
- sudo
1025
- zsh
1126

1227
apt:
@@ -17,14 +32,23 @@ apt:
1732
keyid: 0EBFCD88
1833

1934
runcmd:
20-
# install Oh My ZSH
35+
# copy authorized SSH keys for the created user
36+
- 'mkdir -p /home/${user}/.ssh'
37+
- 'cp /root/.ssh/authorized_keys /home/${user}/.ssh/authorized_keys'
38+
- 'chown ${user}:root /home/${user}/.ssh/authorized_keys'
39+
# install Oh My ZSH for root
2140
- 'git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git /root/.oh-my-zsh'
2241
- 'cp /root/.oh-my-zsh/templates/zshrc.zsh-template /root/.zshrc'
2342
- 'sed -i "s/ZSH_THEME=\".*\"/ZSH_THEME=\"ys\"/" /root/.zshrc'
2443
- 'chsh -s /usr/bin/zsh'
44+
# install Oh My ZSH for user
45+
- 'runuser -l ${user} -c "git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git /home/${user}/.oh-my-zsh"'
46+
- 'runuser -l ${user} -c "cp /home/${user}/.oh-my-zsh/templates/zshrc.zsh-template /home/${user}/.zshrc"'
47+
- 'sed -i "s/ZSH_THEME=\".*\"/ZSH_THEME=\"ys\"/" /home/${user}/.zshrc'
2548

2649
power_state:
27-
delay: "now"
50+
delay: "+1"
51+
timeout: 0
2852
mode: reboot
2953
message: Reboot after system upgrade
3054
condition: True

main.tf

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,41 @@ resource "scaleway_server" "node" {
1414
type = "${var.server_type}"
1515
dynamic_ip_required = true
1616
boot_type = "local"
17+
18+
# initialization sequence
19+
cloudinit = "${data.template_file.userdata.rendered}"
20+
provisioner "remote-exec" {
21+
inline = ["while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'waiting for cloud-init initialization'; sleep 10; done;"]
22+
}
23+
provisioner "local-exec" {
24+
command = "sleep 80" # wait more than 1 minute for the instance to be rebooted
25+
}
26+
1727
}
1828

1929
data "template_file" "userdata" {
2030
template = "${file("${path.module}/cloud-init-user-data")}"
2131

2232
vars {
23-
distrib = "${var.docker_distrib}"
2433
codename = "${var.docker_distrib_codename}"
34+
distrib = "${var.docker_distrib}"
35+
user = "${var.username}"
2536
}
2637
}
2738

28-
resource "scaleway_user_data" "ud" {
29-
count = "${var.node_count}"
30-
server = "${element(scaleway_server.node.*.id, count.index)}"
31-
key = "cloud-init"
32-
value = "${data.template_file.userdata.rendered}"
39+
resource "null_resource" "node" {
40+
count = "${var.node_count}"
41+
42+
connection {
43+
host = "${element(scaleway_server.node.*.public_ip, count.index)}"
44+
user = "${var.username}"
45+
}
46+
47+
provisioner "remote-exec" {
48+
inline = [
49+
"mkdir -p ~/www",
50+
"echo 'It works' > ~/www/index.html",
51+
"docker run --name http-nginx --restart=always -v ~/www:/usr/share/nginx/html:ro -p 80:80 -d nginx"
52+
]
53+
}
3354
}

variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ variable "server_type" {
2323
default = "START1-S"
2424
}
2525

26+
variable "username" {
27+
type = "string"
28+
default = "user"
29+
}
30+
2631
variable "docker_distrib" {
2732
type = "string"
2833
default = "ubuntu"

0 commit comments

Comments
 (0)