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