Linux自动化工具之SaltStack 实战项目2(功能模块_haproxy)
2020-03-03自动化运维90root355°c
A+ A-1.创建目录
[[email protected] ~]# cd /etc/salt/states/ [[email protected] states]# mkdir pkg #rpm依赖包目录 [[email protected] states]# mkdir -p haproxy/files #haproxy源码包目录
2.编写rpm依赖包文件,准备haproxy包
[[email protected] states]# cd pkg/ [[email protected] pkg]# cat pkg/pkg-init.sls pkg-init: #id声明 pkg.installed: #pkg模块,installed方法. - names: #包名 - gcc - gcc-c++ - glibc - make - autoconf - openssl - openssl-devel - htop - vim - lrzsz [[email protected] states]# ll haproxy/files/ #源码包已准备好 total 1504 -rw-r--r-- 1 root root 1538976 Mar 17 09:50 haproxy-1.6.2.tar.gz
3.获取haproxy启动脚本
[[email protected] states]# cp haproxy/files/haproxy-1.6.2.tar.gz /usr/local/src/ [[email protected] states]# cd /usr/local/src [[email protected] src]# tar xvf haproxy-1.6.2.tar.gz [[email protected] src]# cd haproxy-1.6.2/examples [[email protected] examples]# sed -i 's/\/usr\/sbin\/'\$BASENAME'/\/usr\/local\/haproxy\/sbin\/'\$BASENAME'/g' haproxy.init [[email protected] examples]# cp haproxy.init /etc/salt/states/haproxy/files/
4.编写haproxy安装文件
[[email protected] examples]# cd /etc/salt/states [[email protected] states]# vim haproxy/install.sls include: #name声明 - pkg.pkg-init haproxy-install: #id声明 file.managed: - name: /usr/local/src/haproxy-1.6.2.tar.gz - source: salt://haproxy/files/haproxy-1.6.2.tar.gz - user: root - group: root - mode: 755 cmd.run: - name: cd /usr/local/src && tar zxf haproxy-1.6.2.tar.gz && cd haproxy-1.6.2 &&make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy - unless: test -d /usr/local/haproxy #检查目录是否存在. - require: #依赖上面的gcc状态. - pkg: pkg-init - file: haproxy-install haproxy-init: file.managed: - name: /etc/init.d/haproxy - source: salt://haproxy/files/haproxy.init - user: root - group: root - mode: 755 - require: - cmd: haproxy-install cmd.run: - name: chkconfig --add haproxy - unless: chkconfig --list |grep haproxy - require: - file: haproxy-init net.ipv4.ip_nonlocal_bind: #name声明 sysctl.present: #监听非本地ip - value: 1 haproxy-config-dir: file.directory: - name: /etc/haproxy - user: root - group: root - mode: 755
PS: ====================参数详解============================
状态模块: 状态间关系 功 能:条件判断,主要用于cmd状态模块 常用方法: onlyif: 检查的命令, 仅当'onlyif'选项指向的命令返回true时才执行 name定义的命令 unless: 检查的命令, 仅当'unlesss'选项指向的命令返回false时才执行name指向的命令 功能名称: requisites 功 能: 处理状态之间关系 常用方法: require: 我依赖某个状态 require_in: 我被某个状态依赖 wathch: 我关注某个状态 watch_in: 我被某个状态关注
5.将haproxy.install添加到top
[[email protected] states]# cat top.sls base: '*': - init.env_init - haproxy.install
6.模拟运行
[[email protected] states]# salt 'node2.*' state.highstate test=True 无报错即可.
7.minion检测是否安装成功
[[email protected] states]# salt 'node2.*' cmd.run 'ls /usr/local/src' node2.90root.com: haproxy-1.6.2 haproxy-1.6.2.tar.gz php-5.3.6 php-5.3.6.tar.gz