--- - name: Bootstrap new host - Setup sudo hosts: all tags: bootstrap remote_user: graham gather_facts: no vars: ansible_user: graham tasks: - name: Install sudo package first (if needed) raw: "which sudo || (apt-get update && apt-get install -y sudo) || (yum install -y sudo)" become: yes become_method: su become_user: root - name: Configure sudo for graham user raw: "echo 'graham ALL=NOPASSWD: ALL' | tee /etc/sudoers.d/graham && chmod 0440 /etc/sudoers.d/graham" become: yes become_method: su become_user: root - name: Test sudo access raw: "sudo whoami" register: sudo_test changed_when: false - name: Show sudo test result debug: msg: "Sudo test result: {{ sudo_test.stdout }}" - name: Install Python if needed raw: "which python3 || sudo apt-get update && sudo apt-get install -y python3 python3-apt" changed_when: false - name: Find Python interpreter raw: "which python3 || which python" register: python_path changed_when: false - name: Show Python path debug: msg: "Python path: {{ python_path.stdout }}" - name: Bootstrap new host - Base configuration hosts: all tags: bootstrap remote_user: graham become: yes become_method: sudo vars: ansible_user: graham ansible_python_interpreter: /usr/bin/python3 roles: - base