создание рабочих мест Дженкинса с помощью ansible
Я работаю над проектом по развертыванию сервера Jenkins CI на centos7 с использованием ansible И у меня возникли проблемы с созданием заданий Дженкинса из xml-шаблона с использованием ansible.
Пока все работает нормально, но теперь я хочу иметь возможность создавать задания и давать им некоторую базовую конфигурацию из xml-файла с помощью ansible. Моим решением была следующая команда от jenkins-cli:
sudo java -jar jenkins-cli.jar -s http://localhost:8080 create-job Job_test1 < Job_test1.xml
Это прекрасно работает, когда вводится вручную в поле centos7, но когда я помещаю его в ansible и запустите его:
- name: create jenkins jobs with xml files
sudo: yes
command: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}"
with_items: jenkins_jobs
Он выдает следующее сообщение об ошибке:
stderr: Too many arguments: <
java -jar jenkins-cli.jar create-job NAME
Creates a new job by reading stdin as a configuration XML file.
Кто-нибудь знает решение этой проблемы? Насколько я могу видеть, я делаю это правильно(так как команда работает, когда не введена ansible)
3 ответа:
Командный модуль не поддерживает перенаправление ввода и вывода, так как он не передает командную строку в оболочку. Вот что говорится в его документации:
Он не будет обрабатываться через оболочку, поэтому переменные, такие как $HOME и операции, такие как "", "|", и " & " не будет работать (используйте модуль оболочки , Если вам нужны эти функции).
Итак:
- name: create jenkins jobs with xml files sudo: yes shell: "java -jar {{ jenkins.cli_dest }} -s http://localhost:8080 create-job {{ item.name }} < {{ jenkins_dest }}/{{ item.xml_name }}" with_items: jenkins_jobs
Я управляю своими конвейерами Jenkins CI / CD и настройкой с помощью ansible, и я в значительной степени полагаюсь на доступные библиотеки (groovy DSL, python jenkins-job-builder) и шаблон кишки конфигурации Jenkins XML с помощью jinja2. Меня попросили продемонстрировать, что можно сделать с ansible на местном митапе, и я работал над некоторым кодом, который я буду доставлять и делиться на этом митапе в новом году. Я серьезно думаю, что этот материал может вам очень помочь, я в настоящее время использую эту установку в моем текущем проекте и не могу представить, как можно управлять Дженкинсом по-другому.