Я хочу установить официальный jenkins
шлем график , используя Terraform, который затем вызывает Ansible.
В идеале, я бы использовал поставщика Terraform helm
, но у него есть серьезное ограничение , когда будучи вызвано через tls .
Поэтому я выполняю фактическое helm
установка с помощью следующей local-exec
установки.
provisioner "local-exec" {
command = "ansible-playbook -vvv ${path.module}/playbooks/playbook.yaml -i ./playbooks/hosts --extra-vars \"{ \"k8s_cluster_name\": \"${local.k8s_name}\", \"zonename\": \"${var.zone}\", \"env_name\": \"${var.env_name}\", \"google_project_name\": \"${var.project_id}\", \"jenkins_master_image_tag\": \"${var.jenkins_master_image_tag}\", \"jenkins_agent_image_tag\": \"${var.jenkins_agent_image_tag}\", \"jenkins_plugins_list\": \"${var.jenkins_plugins_list}\" }\""
}
}
Моя цель состоит в том, чтобы иметь возможность передать список плагинов, используемых в файле значений, в качестве аргумента (т. Е. Extra var) в ansible
cmd.
Поэтому я объявил следующую переменную:
variable "jenkins_plugins_list" {
description = "The list of jenkins' plugins to be installed"
type = "list"
default = ["kubernetes:1.21.2", "workflow-job:2.36", "workflow-aggregator:2.6", "credentials-binding:1.20", "git:4.0.0"]
}
Конкретная задача ansible
, которая будет использовать переменную jenkins_plugins_list
, выглядит следующим образом:
- name: Install Jenkins
register: jenkins_init
shell: "helm upgrade --force --tls --install --set master.installPlugins={{ jenkins_plugins_list }} --set master.tag={{ jenkins_master_image_tag }} --set agent.tag={{ jenkins_agent_image_tag }} -f {{ tempdir }}/{{ env_name }}-jenkins/jenkins-values.yaml jenkins-{{ env_name }} --namespace jenkins stable/jenkins"
retries: 5
delay: 30
until: jenkins_init.rc == 0
I я пытаюсь явно установить переменную master.installPlugins
через переменную tf, переданную во время вызова ansible.
Проблема заключается в следующем:
The helm
Команда принимает список, т.е. значение, соответствующее переменной jenkins_plugins_list
, следующим образом:
helm upgrade --force --tls --install --set master.installPlugins="{kubernetes:1.21.2,git:4.0.0}"
, т.е. th кавычки и фигурные скобки.
Однако мне удалось только получить следующий вывод:
helm upgrade --force --tls --install --set master.installPlugins=[u'kubernetes:1.21.2', u'workflow-job:2.36', u'workflow-aggregator:2.6', u'credentials-binding:1.20', u'git:4.0.0'] -f /org_files/tmp/myenv-jenkins/jenkins-values.yaml jenkins-myenv --namespace jenkins stable/jenkins"