--- # Étape 11 : service de correction sur l'hyperviseur. Il tourne en root : # il lui faut `docker exec nova_libvirt virsh` (agent invité QEMU). - name: créer le dossier du code source ansible.builtin.file: path: "{{ correcteur_dossier }}" state: directory owner: "{{ ansible_user }}" group: "{{ ansible_user }}" mode: "0755" - name: synchroniser le code source become: false ansible.posix.synchronize: src: "{{ playbook_dir }}/../correcteur/" dest: "{{ correcteur_dossier }}/" delete: true rsync_opts: - "--exclude=/correcteur" - "--exclude=/correcteur-linux-amd64" notify: redémarrer correcteur # Cache et modules Go dans /root, pas dans le dossier synchronisé : sinon ils # appartiendraient à root et bloqueraient le rsync suivant (piège de l'étape 9). - name: compiler le binaire ansible.builtin.command: cmd: /usr/local/bin/go build -o /usr/local/sbin/correcteur . args: chdir: "{{ correcteur_dossier }}" environment: HOME: /root GOFLAGS: -mod=readonly changed_when: true notify: redémarrer correcteur - name: lire l'id du projet OpenStack des labs ansible.builtin.shell: cmd: >- OS_CLIENT_CONFIG_FILE=/etc/kolla/clouds-paillasse.yaml OS_CLOUD=paillasse-service /opt/kolla-venv/bin/openstack token issue -f value -c project_id register: correcteur_projet changed_when: false - name: lire l'uid de www-data (seul client autorisé) ansible.builtin.getent: database: passwd key: www-data - name: déployer le fichier d'environnement du service ansible.builtin.copy: dest: /etc/correcteur.env owner: root group: root mode: "0644" content: | # Géré par Ansible (rôle correcteur). Aucun secret ici. CORRECTEUR_SOCKET={{ correcteur_socket }} CORRECTEUR_LABS={{ correcteur_dossier_labs }} CORRECTEUR_PROJET={{ correcteur_projet.stdout | trim }} CORRECTEUR_UID_CLIENT={{ ansible_facts.getent_passwd['www-data'][1] }} notify: redémarrer correcteur - name: déployer le service systemd ansible.builtin.template: src: correcteur.service.j2 dest: /etc/systemd/system/correcteur.service mode: "0644" notify: - recharger systemd - redémarrer correcteur - name: appliquer les changements ansible.builtin.meta: flush_handlers - name: vérifier que le service tourne ansible.builtin.systemd: name: correcteur enabled: true state: started