[背景]以前为一个项目学习过一段时间的Irule,最近又因其他需求,需要将其拾其,但突然发现,以前学的没有做整理,有点遗忘,这次想将学习的过程记录下来.

什么是Irule,我想大家google下,肯定会比我说的还详细.对与它能干什么,我想说的是它什么都能做,当然是在进入到流出F5这段时间里.所以,我们可以在数据流进入后,修改相应的数据包,重构请求包,或者在后端服务器相应后,做出相应内容的重写,都是可以的.看到这里,大家肯定心动了吧.其实吧,我也心动,能通过写写脚本就能将请求/响应数据包改了.按自己的需求提供给后端或者请求者,哈哈,简直,我就是王道嘛.

Irule的程序相对还是比较简单的,它是基与TCL(TOOL COMMAND Language)语法的,是基与触发事件的语言.简单就是说,当数据包处在F5的某一位置,就会触发一种事件,触发一种事件后,就会在此事件中执行一段代码.

when EVENT_NAME{
    CODE
}
你看简单吧.构造就是如此简单,但你想学会灵活使用它,真不简单,因为它的事件太多了,需要很长的时间消化.而且不同的事件,还需要你的VS中profile的指定,如HTTP_REQUEST事件就需要http的profile,否则你就无法将使用此事件的Irule脚本挂到VS上.

当然,光看构造还是不行的,因为Irule也有自己的命令,函数,语句,操作符,将这些一切一切组织在一起就构成了上面的CODE段.

总之,你要是想写好Irule还真不是那么简单,你首先要了解事件,每个事件中可以用到的命令,当然这些都可以在以后慢慢的体会.对了,写程序,免不了Debug,所以我也提供如何Debug我们的程序,我们需要借助Irule提供的log语句.

log local0.info "Hello,World!"
好,提供整段代码吧!
when CLIENT_ACCEPTED {

log local0. "Hello,World"

}

观查,请ssh登录到F5上用tail -f /var/log/ltm命令查看,前提要把上面的Irule挂到VS上噢,切记,切记!


F5 Irule俺也是门外汉,对我不要要求太高噢!