場景
近期在編寫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
是一門強大的工具,集成了很多不錯的功能模塊。學習這些東西,可以減少我們重複的工作,提高工作效率。
參考鏈接
隨緣求贊
如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注