On Mon, 14 Dec 2015 21:21:00 -0800 Hugues Alary <hug...@betabrand.com> wrote:
> Someone answered me in a private message and pointed out I must be running > in a chroot. > > This is indeed the issue. Removing the chroot global option fixes this. Hi, you should move your lua library in the chroot. It is a more secure way. > I'll see if I can find a way to keep running haproxy all the while running > in a chroot. Just move your lua libraries (and eventually its dependancies) in the chroot. Thierry > -Hugues > > On Mon, Dec 14, 2015 at 6:13 PM, Hugues Alary <hug...@betabrand.com> wrote: > > > 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 > >