Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,18 @@
.idea

# Test binary, build with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

### Terraform ###
# Local .terraform directories
**/.terraform/*

# .tfstate files
*.tfstate
*.tfstate.*

# Terraform plan file
*.tfplan.*
8 changes: 7 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,19 @@ test: # Run unit test
integration: deps-cgo ## Run integration test
go test -v sigs.k8s.io/cluster-api-provider-libvirt/test/integration

.PHONY: e2e
e2e: deps-cgo ## Run end-to-end test
hack/packet-provision.sh install
#TODO run tests
hack/packet-provision.sh destroy

.PHONY: lint
lint: ## Go lint your code
hack/go-lint.sh $(go list -f '{{ .ImportPath }}' ./...)

.PHONY: fmt
fmt: ## Go fmt your code
hack/verify-gofmt.sh
hack/go-fmt.sh

.PHONY: vet
vet: ## Apply go vet to all go files
Expand Down
42 changes: 42 additions & 0 deletions hack/packet-provision.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
set +e

# Your Packet user account
if [ "$PACKET_AUTH_TOKEN" == "" ]; then
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-z vis-a-vis == ""?

echo "You need to set PACKET_AUTH_TOKEN variable first."
echo "Make sure that your SSH key is also set in packet.net"
exit 1
fi

# Your Packet user account
if [ "$TF_VAR_packet_project_id" == "" ]; then
echo "You need to set TF_VAR_packet_project_id variable first."
exit 1
fi

export TF_VAR_id=${ID:-$(uuidgen | cut -c1-8)}

cd ./prebuild
case ${1} in
"install")
ssh_path="$TF_VAR_ssh_key_path"
if [ "$TF_VAR_ssh_key_path" == "" ]; then
echo -e "\e[33mCreating temporary SSH file\e[0m"
ssh-keygen -t rsa -b 4096 -C "temporary packet.net key" -P "" -f "/tmp/packet_id_rsa" -q
ssh_path="/tmp/packet_id_rsa"
fi
terraform init -input=false
terraform plan -input=false -out=tfplan.out && terraform apply -input=false -auto-approve tfplan.out
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we have -e this could be two separate commands.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, I will fix that in a follow-up PR

echo -e "\e[32m"
echo -e "*** Your packet.net host is called ${TF_VAR_environment_id}"
echo -e "*** You can also access it via SSH with key located in ${ssh_path}"
echo -e "\e[0m"
;;
"destroy")
terraform destroy -input=false -auto-approve
rm /tmp/packet_id_rsa* 2>/dev/null || :
;;
*)
echo "Use '$0 install' or '$0 destroy'."
;;
esac
24 changes: 24 additions & 0 deletions hack/prebuild/init.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#/bin/bash

yum install -y -d1 libvirt libvirt-daemon-kvm
usermod -aG libvirt root
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I've looked to see how this script is used (or when) but do you not need newgrp libvirt here having modified the groups?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is used to install libvirt on packet host the easiest way.


# Enable ssh+qemu access mode
cat <<EOF > /etc/libvirt/libvirtd.conf
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
EOF

# Next lines are here if we would like to enable tcp+qemu conection mode
#cat <<EOF > /etc/libvirt/libvirtd.conf
#unix_sock_group = "libvirt"
#unix_sock_rw_perms = "0770"
#listen_tls = 0
#listen_tcp = 1
#auth_tcp="none"
#tcp_port = "16509"
#EOF
#echo 'LIBVIRTD_ARGS="--listen"' >> /etc/sysconfig/libvirtd
#iptables -I INPUT -p tcp --dport 16509 -j ACCEPT -m comment --comment "Allow insecure libvirt clients"

systemctl start libvirtd
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we also need systemctl enable libvirtd? Is there any expectation of this starting on reboot?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, those machines aren't expected to be rebooted.

29 changes: 29 additions & 0 deletions hack/prebuild/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
resource "packet_ssh_key" "key" {
name = "unlikely_tf_ssh_key_name-${var.id}"
public_key = "${file("${var.ssh_key_path}")}"
}

resource "packet_device" "libvirt" {
hostname = "libvirt-${var.id}"
plan = "baremetal_0"
facility = "ewr1"
operating_system = "centos_7"
billing_cycle = "hourly"
project_id = "${var.packet_project_id}"
user_data = "#!/bin/bash\nsed -i 's/PasswordAuthentication.*$/PasswordAuthentication yes/g' /etc/ssh/sshd_config && systemctl restart sshd"
provisioner "remote-exec" {
script = "init.sh"
connection = {
type = "ssh"
user = "root"
password = "${self.root_password}"
agent = false
}
}
depends_on = ["packet_ssh_key.key"]
}

output "ip" {
value = "${packet_device.libvirt.access_public_ipv4}"
}

14 changes: 14 additions & 0 deletions hack/prebuild/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
variable "ssh_key_path" {
type = "string"
default = "/tmp/packet_id_rsa.pub"
}

variable "id" {
type = "string"
default = "randomid"
}

variable "packet_project_id" {
type = "string"
default = ""
}