Hey there,
I've been playing with haproxy 1.6.2 and the LUA feature and I'm running
into the following issue:
I wrote a LUA script that loads an external library called "lua-requests".
I installed luarocks, then installed lua-requests via luarocks.
Now, my LUA scripts contains the following line:
local requests = require("requests")
But when I run HAProxy, I get the following error:
[ALERT] 347/175818 (4914) : Lua function 'send_varnish_ban': runtime error:
/etc/haproxy/send_varnish_ban.lua:2: module 'requests' not found:
no field package.preload['requests']
no file '/usr/local/share/lua/5.3/requests.lua'
no file '/usr/local/share/lua/5.3/requests/init.lua'
no file '/usr/local/lib/lua/5.3/requests.lua'
no file '/usr/local/lib/lua/5.3/requests/init.lua'
no file '/usr/share/lua/5.3/requests.lua'
no file '/usr/share/lua/5.3/requests/init.lua'
no file './requests.lua'
no file './requests/init.lua'
no file '/usr/local/lib/lua/5.3/requests.so'
no file '/usr/lib/x86_64-linux-gnu/lua/5.3/requests.so'
no file '/usr/lib/lua/5.3/requests.so'
no file '/usr/local/lib/lua/5.3/loadall.so'
no file './requests.so'.
But, the file /usr/local/share/lua/5.3/requests.lua does exist (ls does
show me the file). I even copied/pasted it into my /etc/haproxy/ folder,
and HAProxy still can't find it.
I tried changing the permissions of the file to 777 just to make sure this
wasn't the problem, still no luck.
Typing require("requests.lua") in the LUA interactive interpreter works
perfectly.
I added a print(package.path) in my HAProxy LUA script, and the value seems
correct: "
/usr/local/share/lua/5.3/?.lua;/usr/local/share/lua/5.3/?/init.lua;/usr/local/lib/lua/5.3/?.lua;/usr/local/lib/lua/5.3/?/init.lua;/usr/share/lua/5.3/?.lua;/usr/share/lua/5.3/?/init.lua;./?.lua;./?/init.lua
"
I've been fiddling for the past few hours with no luck.
Any idea why HAProxy can't seem to find a file that clearly exists?
Thanks!
-Hugues