ansible学习系列之make模块的使用
ansible系列文章
ansible学习系列之tags的使用
ansible学习系列之顺利启动后台程序
ansible学习系列之make模块的使用
ansible学习系列之become的使用
ansible学习系列之lineinfile模块的使用
场景
近期在编写redis集群的ansible部署脚本,因为redis是需要在对应的服务器上面进行编译才生成对应的可执行文件。我们这里有两种方式来做,一种是使用shell模块来做,另一种是使用make模块来做。本文是使用make来实现编译的动作。

环境
| 软件 | 版本 |
|---|---|
| Ansible | 2.9.4 |
| Python | 2.7.5 |
| Centos | 7 |
| redis | 5.0.5 |
| make | 3.82 |
前置要求
ansible的make模块,要求需要执行脚本的机器上面需要预装了make的环境。所以,如果机器上面还没有安装好make,需要事先安装好,否则就没办法执行。

介绍
针对具体的Makefile执行编译相关操作
参数介绍
| 参数 | 默认 | 含义 | 是否必需 |
|---|---|---|---|
| chdir | 在执行task之前,需要切换的目录路径 | 是 | |
| file | 标准Makefile的路径 | 否 | |
| params | 一些额外的需要传给make命令的参数 | 否 | |
| target | make要执行的操作,可以写:install/test/all | 否 |
样例
官方提供
- name: Build the default target
make:
chdir: /home/ubuntu/cool-project
- name: Run 'install' target as root
make:
chdir: /home/ubuntu/cool-project
target: install
become: yes
- name: Build 'all' target with extra arguments
make:
chdir: /home/ubuntu/cool-project
target: all
params:
NUM_THREADS: 4
BACKEND: lapack
- name: Build 'all' target with a custom Makefile
make:
chdir: /home/ubuntu/cool-project
target: all
file: /some-project/Makefile
redis编译样例
- name: Run 'install' target
make:
chdir: "{{ redis_install_path }}"
target: install
file: "{{redis_install_path}}/Makefile"
params:
PREFIX: "{{redis_install_path}}"
become: yes
tags:
- redis_install
说明
| 路径 | 用途 |
|---|---|
| make.params.PREFIX | 编译之后的文件存放位置。适用于不是root用户执行的脚本 |
| become | 使用root或者sudoer的权限 |
| tags | 标签,适合通过标签实现一个role下面的功能选择 |
结果
redis顺利编译通过,并生成相关的文件

总结
ansible是一门强大的工具,集成了很多不错的功能模块。学习这些东西,可以减少我们重复的工作,提高工作效率。
参考链接
随缘求赞
如果我的文章对大家产生了帮忙,可以在文章底部点个赞或者收藏;
如果有好的讨论,可以留言;
如果想继续查看我以后的文章,可以左上角点击关注

浙公网安备 33010602011771号