I’ve started looking at Ansible to manage all the laptops, VMs, SBCs that I have running Arch Got the ol’ pacman installs / updates working fine, but I’m having some problems understanding how to setup AUR to install some of those packages.

Main issue is where Ansible is basically doing everything as root, and AUR helpers don’t want to run as root, so ok, create a 2nd non-root user first

But even installing an AUR helper (yay) brings problems:

I can setup a folder in /tmp/aur , I can git clone the yay package, but then I have no idea how to run makepkg or then yay as that non-root user.

Does anyone have this already figured out?

Or am I going about this the wrong way?

  • mumblerfish
    arrow-up
    5
    arrow-down
    0
    ·
    9 months ago
    edit-2
    9 months ago
    link
    fedilink

    Sound like you have configured your Ansible to run as root per default. You should remove that from your ansible.cfg. The tasks you do need root for you use the keyword ‘become: true’ to use sudo for that task alone (or use ‘become’ for a block if several tasks).

    • SayCyberOnceMoreOPEnglish
      arrow-up
      2
      arrow-down
      1
      ·
      9 months ago
      link
      fedilink

      Ah! Ok, I’ll dig into that and have a look.

      I thought I was SSHing into the clients as a non-root user, but I guess that’s where I’m going wrong.

      Yeah, looking at the /tmp/aur folder it creates, it’s owner is root hmmm.

      Thanks

      • mumblerfish
        arrow-up
        2
        arrow-down
        0
        ·
        9 months ago
        link
        fedilink

        I may be wrong, but if you did ssh as roothen it seems like your ssh configuration leaves a bit to be desired. If you can ssh in as root, you may want disallow that in your ssh configuration don’t remember the setting now, ‘AllowRoot no’ maybe? Then it also should be that you have your pub key in root’s .ssh/authorized_keys, you may want to remove that. Allowing anyone to ssh in as root is probably not a good idea. For example ‘root’ is a very common username used in bruteforce attacks on exposed ssh ports, so locking down any possibility to get in as root directly is probably a good idea.

        • SayCyberOnceMoreOPEnglish
          arrow-up
          2
          arrow-down
          0
          ·
          9 months ago
          link
          fedilink

          Thanks for the pointer, but no, I’m not SSHing as root. And PermitRootLogin no is configured, so all good there.

          Turns out I start the entire sequence as become, so I had to learn about changing users with ansible-become variables

          Still have a few bugs to work out, but thanks for getting me on track

  • TheRandomNinja
    arrow-up
    2
    arrow-down
    0
    ·
    9 months ago
    link
    fedilink

    If your non-root user has sudo access, then it should be as easy as making your Ansible playbook log in as the non-root user by default, and then use Ansible’s become for anything that needs to run with sudo.

  • deluxeparrotEnglish
    arrow-up
    2
    arrow-down
    0
    ·
    9 months ago
    edit-2
    9 months ago
    link
    fedilink

    Edit: I missed part of the question. The repository below only references installing yay. Could you have the become_password as a vault secret in ansible and respond to the password prompt with expect?

    I literally stumbled upon this a few hours ago, maybe it will help.

    github.com/DoTheEvo/ansible-arch

  • wiccan2
    arrow-up
    2
    arrow-down
    0
    ·
    9 months ago
    link
    fedilink

    I did something similar with Puppet a while ago, it also runs as root so hot the same problem.

    My solution was to set up my own package repo for the AUR packages I needed and just build them periodically. This way I only have to build them once for all the machines.

    • SayCyberOnceMoreOPEnglish
      arrow-up
      2
      arrow-down
      0
      ·
      9 months ago
      link
      fedilink

      I will be looking at setting up a local package cache soon, but hadn’t thought about putting the aur packages in the same one nice.

      So, do you just build those packages anywhere and just copy to your repo?

      • wiccan2
        arrow-up
        1
        arrow-down
        0
        ·
        9 months ago
        link
        fedilink

        Basically.

        I build on my laptop and then add to the repo stored on my NAS.

        I’ve also got chaotic-aur set up as they tend to build the bulk of what I need from the AUR so I only have to build the more niche packages I use.

  • mellejwzEnglish
    arrow-up
    1
    arrow-down
    0
    ·
    9 months ago
    link
    fedilink

    Can’t you change to a normal user with become? We do lots of stuff with Ansible as normal user. You should be able to create tasks that get executed as normal user and install yay and run makepkg, and then run yay to install packages.

    • SayCyberOnceMoreOPEnglish
      arrow-up
      1
      arrow-down
      0
      ·
      9 months ago
      link
      fedilink

      Yeah, the problem was that some modules don’t support become, so I just ran the whole thing that way.

      For git and aur, to drop sudo I found that I have to use ansible-become variables to override just that step.

      Live & learn