--- - hosts: lxd_cluster_ci:localhost vars_files: - ../vars/ci-instances.yml - ../roles/lxd/defaults/main.yml - ../roles/libvirt/vars/main.yml vars: skip_libvirt: false skip_lxd: false skip_dns: false skip_jenkins: false jenkins_config: "~/.config/jenkins_jobs/jenkins_jobs.ini" jenkins_default_credentials: "c3e4f9f2-3e89-474d-bc75-6251a13e1053" tasks: - name: Manage instances when: item.lxd|default(false) and not skip_lxd and inventory_hostname == lxd_host include_tasks: file: '../roles/lxd/tasks/container.yml' vars: object: >- {{item.lxd| combine({'config':{'user.network-config': lookup('ansible.builtin.template', '../templates/cloud_init_netconf.j2', template_vars=item.meta ) } }, recursive=true )}} with_items: "{{containers}}" - name: Manage Libvirt VMs when: item.vm|default(false) and not skip_libvirt and inventory_hostname == item.vm.host|default(libvirt_host) include_tasks: file: '../roles/libvirt/tasks/vm.yml' vars: object: "{{item.vm}}" with_items: "{{containers}}" - name: Update DNS entries when: not skip_dns and inventory_hostname == 'localhost' with_items: "{{containers}}" ansible.builtin.command: argv: [ '../scripts/update_dns_entry.py', '-n', "{{item.lxd.name|default(item.vm.name)}}", '-z', "{{search_domain}}", '-v', "{{item.meta.address}}", '-s', "{{name_server}}", ] - name: Update Jenkins nodes when: item.jenkins|default(false) and not skip_jenkins and inventory_hostname == 'localhost' with_items: "{{containers}}" vars: node_name: "{{item.jenkins.node_name|default(item.lxd.name|default(item.vm.name))}}" node_ip: "{{item.meta.address|default(None)}}" node_host: "{{item.meta.jenkins.node_host|default(item.lxd.name|default(item.vm.name) + '.' + search_domain)}}" node_label: "{{item.jenkins.label|default('')}}" node_state: "{{item.jenkins.state|default('online')}}" node_credentials: "{{item.jenkins.credentials|default(jenkins_default_credentials)}}" node_message: "{{item.jenkins.message|default('Set offline by ansible')}}" node_mode: "{{item.jenkins.mode|default('NORMAL')}}" node_json: "{{item.jenkins.config|default({})|to_json}}" ansible.builtin.command: argv: [ '../scripts/update_jenkins_node.py', '-n', "{{node_name}}", '-c', "launcher/host={{node_ip|default(node_host)}}", '-c', "label={{node_label}}", '-c', "launcher/credentialsId={{node_credentials}}", '-c', "launcher/sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.ManuallyTrustedKeyVerificationStrategy=class", '-c', "mode={{node_mode}}", '-s', "{{node_state}}", '-m', "{{node_message}}", '-f', "{{jenkins_config|expanduser}}", '-j', "{{node_json}}", ]