--- - hosts: "{{lxd_host}}" vars_files: - ../vars/ci-instances.yml - ../roles/lxd/defaults/main.yml vars: skp_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: not skip_lxd 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: Update DNS entries delegate_to: localhost when: not skip_dns with_items: "{{containers}}" ansible.builtin.command: argv: [ '../scripts/update_dns_entry.py', '-n', "{{item.lxd.name}}", '-z', "{{search_domain}}", '-v', "{{item.meta.address}}", '-s', "{{name_server}}", ] - name: Update Jenkins nodes delegate_to: localhost when: not skip_jenkins with_items: "{{containers}}" vars: node_name: "{{item.jenkins.node_name|default(item.lxd.name)}}" node_ip: "{{item.meta.address|default(None)}}" node_host: "{{item.meta.jenkins.node_host|default(item.lxd.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')}}" 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", '-s', "{{node_state}}", '-m', "{{node_message}}", '-f', "{{jenkins_config|expanduser}}", ]