Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixes ocp-power-automation#220

Implementation how I did it at another customer. I have tested it again on our local test env and both (git and curl) was working like it should be.
  • Loading branch information
torwen1 committed Jul 8, 2021
1 parent fd9751e commit 74d6720
Show file tree
Hide file tree
Showing 8 changed files with 143 additions and 14 deletions.
30 changes: 27 additions & 3 deletions docs/var.tfvars-doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,12 +179,36 @@ This variable can be used for trying out custom OpenShift install image for deve
release_image_override = ""
```

These variables specify the ansible playbooks that are used for OpenShift install and post-install customizations.
These variables specify the ansible playbooks that are used for OpenShift install and post-install customizations. If the URL starts with the tag `git:`, then it is assumed that it points to a GitHub server and git clone and git checkout will be used. URLs without this tag and starting with http:/https: will be interpreted as standard web servers and curl will be used to download the packages.
`Only .tar.gz, or .tgz are supported formats on web servers and must be contain a complete git clone of the corresponding project!`
Valid options: Requires a URL pointing to the packages/GitHub project.
```
helpernode_repo = "https://github.com/RedHatOfficial/ocp4-helpernode"
helpernode_repo = "https://<HTTP SERVER>/ocp4-ansible-modules/ocp4-helpernode-latest.tar.gz"
OR
helpernode_repo = "git:https://github.com/RedHatOfficial/ocp4-helpernode"
helpernode_tag = "5eab3db53976bb16be582f2edc2de02f7510050d"
install_playbook_repo = "https://github.com/ocp-power-automation/ocp4-playbooks"
install_playbook_repo = "https://<HTTP SERVER>/ocp4-ansible-modules/ocp4-playbooks-latest.tar.gz"
OR
install_playbook_repo = "git:https://github.com/ocp-power-automation/ocp4-playbooks"
install_playbook_tag = "02a598faa332aa2c3d53e8edd0e840440ff74bd5"
helm_repo = "https://<HTTP SERVER>/python-modules/helm-latest-linux-ppc64le.tar.gz"
```

If you want to provide the ansible playbooks by your local HTTP server, follow these steps to clone both git repositories:
```
git clone https://github.com/RedHatOfficial/ocp4-helpernode
tar czvf ocp4-helpernode.tgz ocp4-helpernode
cp ocp4-helpernode.tgz /var/www/html/repos/
git clone https://github.com/ocp-power-automation/ocp4-playbooks
tar czvf ocp4-playbooks.tgz ocp4-playbooks
cp ocp4-playbooks.tgz /var/www/html/repos/
ls -la /var/www/html/repos/
total 13452
-rw-r--r--. 1 root root 13624204 Jul 8 13:43 ocp4-helpernode.tgz
-rw-r--r--. 1 root root 145165 Jul 8 13:44 ocp4-playbooks.tgz
```

These variables can be used when debugging ansible playbooks
Expand Down
57 changes: 53 additions & 4 deletions modules/3_helpernode/helpernode.tf
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ locals {
]

local_registry = local.local_registry
helm_repo = var.helm_repo
client_tarball = var.openshift_client_tarball
install_tarball = var.openshift_install_tarball
}
Expand All @@ -75,12 +76,12 @@ locals {
}
}

resource "null_resource" "config" {

resource "null_resource" "prep_helpernode_tools_git" {
triggers = {
bootstrap_count = var.bootstrap_port_ip == "" ? 0 : 1
worker_count = length(var.worker_port_ips)
}
count = length(regexall("^git:", var.helpernode_repo)) > 0 ? 1 : 0

connection {
type = "ssh"
Expand All @@ -94,13 +95,61 @@ resource "null_resource" "config" {

provisioner "remote-exec" {
inline = [
"mkdir -p .openshift",
"rm -rf ocp4-helpernode",
"echo 'Cloning into ocp4-helpernode...'",
"git clone ${var.helpernode_repo} --quiet",
"git clone ${replace(var.helpernode_repo, "/^git:/", "")} --quiet",
"cd ocp4-helpernode && git checkout ${var.helpernode_tag}"
]
}
}

resource "null_resource" "prep_helpernode_tools_curl" {
triggers = {
bootstrap_count = var.bootstrap_port_ip == "" ? 0 : 1
worker_count = length(var.worker_port_ips)
}
count = length(regexall("^http:|^https:", var.helpernode_repo)) > 0 ? 1 : 0

connection {
type = "ssh"
user = var.rhel_username
host = var.bastion_ip[0]
private_key = var.private_key
agent = var.ssh_agent
timeout = "${var.connection_timeout}m"
bastion_host = var.jump_host
}

provisioner "remote-exec" {
inline = [
"rm -rf ocp4-helpernode",
"echo 'Downloading ocp4-helpernode...'",
"curl -o ocp4-helpernode.tar.gz ${var.helpernode_repo}",
"echo 'Extracting ocp4-helpernode...'",
"tar zxvf ocp4-helpernode.tar.gz",
"rm ocp4-helpernode.tar.gz",
"cd ocp4-helpernode && git checkout ${var.helpernode_tag}"
]
}
}

resource "null_resource" "config" {
depends_on = [null_resource.prep_helpernode_tools_git, null_resource.prep_helpernode_tools_curl]
triggers = {
bootstrap_count = var.bootstrap_port_ip == "" ? 0 : 1
worker_count = length(var.worker_port_ips)
}

connection {
type = "ssh"
user = var.rhel_username
host = var.bastion_ip[0]
private_key = var.private_key
agent = var.ssh_agent
timeout = "${var.connection_timeout}m"
bastion_host = var.jump_host
}

provisioner "file" {
content = templatefile("${path.module}/templates/helpernode_inventory", local.helpernode_inventory)
destination = "$HOME/ocp4-helpernode/inventory"
Expand Down
2 changes: 1 addition & 1 deletion modules/3_helpernode/templates/helpernode_vars.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,4 @@ ocp_initramfs: "file:///dev/null"
ocp_install_kernel: "file:///dev/null"

# This is required for latest helpernode. TODO: Remove when https://github.com/RedHatOfficial/ocp4-helpernode/pull/140 is merged
helm_source: "https://get.helm.sh/helm-v3.4.0-linux-ppc64le.tar.gz"
helm_source: "${helm_repo}"
1 change: 1 addition & 0 deletions modules/3_helpernode/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ variable "ocp_release_tag" {}

variable "helpernode_repo" {}
variable "helpernode_tag" {}
variable "helm_repo" {}

variable "ansible_extra_options" {}

Expand Down
52 changes: 50 additions & 2 deletions modules/5_install/install.tf
Original file line number Diff line number Diff line change
Expand Up @@ -73,10 +73,11 @@ locals {
}
}

resource "null_resource" "install" {
resource "null_resource" "prep_playbooks_tools_git" {
triggers = {
worker_count = length(var.worker_ips)
}
count = length(regexall("^git:", var.install_playbook_repo)) > 0 ? 1 : 0

connection {
type = "ssh"
Expand All @@ -92,10 +93,57 @@ resource "null_resource" "install" {
inline = [
"rm -rf ocp4-playbooks",
"echo 'Cloning into ocp4-playbooks...'",
"git clone ${var.install_playbook_repo} --quiet",
"git clone ${replace(var.install_playbook_repo, "/^git:/", "")} --quiet",
"cd ocp4-playbooks && git checkout ${var.install_playbook_tag}"
]
}
}

resource "null_resource" "prep_playbooks_tools_curl" {
triggers = {
worker_count = length(var.worker_ips)
}
count = length(regexall("^http:|^https:", var.install_playbook_repo)) > 0 ? 1 : 0

connection {
type = "ssh"
user = var.rhel_username
host = var.bastion_ip[0]
private_key = var.private_key
agent = var.ssh_agent
timeout = "${var.connection_timeout}m"
bastion_host = var.jump_host
}

provisioner "remote-exec" {
inline = [
"rm -rf ocp4-playbooks",
"echo 'Downloading ocp4-playbooks...'",
"curl -o ocp4-playbooks.tar.gz ${var.install_playbook_repo}",
"echo 'Extracting ocp4-playbooks...'",
"tar zxvf ocp4-playbooks.tar.gz",
"rm ocp4-playbooks.tar.gz",
"cd ocp4-playbooks && git checkout ${var.install_playbook_tag}"
]
}
}

resource "null_resource" "install" {
depends_on = [null_resource.prep_playbooks_tools_git, null_resource.prep_playbooks_tools_curl]
triggers = {
worker_count = length(var.worker_ips)
}

connection {
type = "ssh"
user = var.rhel_username
host = var.bastion_ip[0]
private_key = var.private_key
agent = var.ssh_agent
timeout = "${var.connection_timeout}m"
bastion_host = var.jump_host
}

provisioner "file" {
content = templatefile("${path.module}/templates/install_inventory", local.install_inventory)
destination = "$HOME/ocp4-playbooks/inventory"
Expand Down
1 change: 1 addition & 0 deletions ocp.tf
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ module "helpernode" {
ocp_release_tag = var.ocp_release_tag
helpernode_repo = var.helpernode_repo
helpernode_tag = var.helpernode_tag
helm_repo = var.helm_repo
ansible_extra_options = var.ansible_extra_options
chrony_config = var.chrony_config
chrony_config_servers = var.chrony_config_servers
Expand Down
5 changes: 3 additions & 2 deletions var.tfvars
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,11 @@ cluster_id = "" # It will use random generated id with
#release_image_override = ""


#helpernode_repo = "https://github.com/RedHatOfficial/ocp4-helpernode"
#helpernode_repo = "git:https://github.com/RedHatOfficial/ocp4-helpernode"
#helpernode_tag = ""
#install_playbook_repo = "https://github.com/ocp-power-automation/ocp4-playbooks"
#install_playbook_repo = "git:https://github.com/ocp-power-automation/ocp4-playbooks"
#install_playbook_tag = ""
#helm_repo = "https://get.helm.sh/helm-v3.4.0-linux-ppc64le.tar.gz"

#installer_log_level = "info"
#ansible_extra_options = "-v"
Expand Down
9 changes: 7 additions & 2 deletions variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ variable "installer_log_level" {
variable "helpernode_repo" {
description = "Set the repo URL for using ocp4-helpernode"
# Repo for running ocp4 helpernode setup steps.
default = "https://github.com/RedHatOfficial/ocp4-helpernode"
default = "git:https://github.com/RedHatOfficial/ocp4-helpernode"
}

variable "helpernode_tag" {
Expand All @@ -269,7 +269,7 @@ variable "helpernode_tag" {
variable "install_playbook_repo" {
description = "Set the repo URL for using ocp4-playbooks"
# Repo for running ocp4 installations steps.
default = "https://github.com/ocp-power-automation/ocp4-playbooks"
default = "git:https://github.com/ocp-power-automation/ocp4-playbooks"
}

variable "install_playbook_tag" {
Expand All @@ -278,6 +278,11 @@ variable "install_playbook_tag" {
default = "10fec74c9e987b39f7af1127abe304a9e41f8e65"
}

variable "helm_repo" {
description = "Set the URL after http_server_repo_main_dir pointing to the Python helm modules"
default = "https://get.helm.sh/helm-v3.4.0-linux-ppc64le.tar.gz"
}

variable "ansible_extra_options" {
description = "Extra options string to append to ansible-playbook commands"
default = "-v"
Expand Down

0 comments on commit 74d6720

Please sign in to comment.