Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

local ansible build fails at Gather variables for each operating system #1444

Open
nimbius opened this issue Mar 31, 2024 · 1 comment
Open
Labels

Comments

@nimbius
Copy link

nimbius commented Mar 31, 2024

[X]: This bug persists when memory is increased beyond 8GB.
(RAM for the build system is 2TB)

Describe the bug

ansible build fails at step TASK [netbootxyz : Gather variables for each operating system]
fatal: [localhost]: FAILED! => {"msg": "No file was found when using first_found."}

output has an override to /tmp/ because unprivileged build users dont touch /var/www.

To Reproduce
Steps to reproduce the behavior:

  1. build ansible local version of netboot.xyz for localhost

Expected behavior

we complete the variable gathering?
Screenshots

Additional context

full debug output:
TASK [netbootxyz : Gather variables for each operating system] *****************************************************************************************************************************************************************************************************************************
task path: /home/cicero/netboot.xyz/roles/netbootxyz/tasks/generate_disks_base.yml:6
fatal: [localhost]: FAILED! => {
"msg": "No file was found when using first_found."
}

PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************************
localhost : ok=12 changed=0 unreachable=0 failed=1 skipped=9 rescued=0 ignored=0

ansible version used is ansible [core 2.16.5]

@nimbius nimbius added the bug label Mar 31, 2024
@veloxsouth
Copy link

I had the same issue on a fresh install of Archlinux.
I have never worked with ansible before so pardon if I make any bad reasoning but my issue was solved.

[root@netbootxyz netboot.xyz]# ansible-playbook -i inventory site.yml

gives the same error for me

The error message says it's coming from line 6 of generate_disks_base.yml shown here

[root@netbootxyz netboot.xyz]# cat roles/netbootxyz/tasks/generate_disks_base.yml

---

- name: Gathering facts
  ansible.builtin.setup:

- name: Gather variables for each operating system
  ansible.builtin.include_vars: "{{ item }}"
  with_first_found:
    - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml"
    - "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
    - "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
    - "{{ ansible_distribution | lower }}.yml"
    - "{{ ansible_os_family | lower }}.yml"

The file names it is trying to find are generated from ansible.builtin.setup with the previous gathered facts step. On my system you can see one of those values here.

[root@netbootxyz netboot.xyz]# ansible localhost -m ansible.builtin.setup | grep ansible_os_family

[WARNING]: No inventory was parsed, only implicit localhost is available
        "ansible_os_family": "Archlinux",

So if it's looking for a file named "ansible_os_family | lower" would reduce to "archlinux.yml", but in what path?

[root@netbootxyz netboot.xyz]# find . -type f -name "*.yml"

 . . .
./user_overrides.yml
./script/netbootxyz-overrides.yml
./roles/netbootxyz/vars/ubuntu.yml
./roles/netbootxyz/vars/debian.yml
./roles/netbootxyz/vars/redhat.yml
./roles/netbootxyz/vars/main.yml

I see some os families have their own ansible files, but not archlinux. They seem responsible for installing packages in apt and pip, so I created a similar file that was empty with the understanding I might have to do some manual installs later.

.roles/netbootxyz/vars/archlinux.yml

---
netbootxyz_packages: []

pipxe_packages: []

After creating this file and running the following command, it appears to work and NBPs are generated.

[root@netbootxyz netboot.xyz]# ansible-playbook -i inventory site.yml

PLAY RECAP ********************************************************************************************************************************
localhost                  : ok=40   changed=16   unreachable=0    failed=0    skipped=22   rescued=0    ignored=0

I do not know what a more robust archlinux.yml file should contain to support self hosting netbootxyz the stub I created was sufficient. The only packages I installed manually were ansible, apache, and git.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants