ansible學習系列之make模塊的使用

場景

近期在編寫redis集羣的ansible部署腳本,因爲redis是需要在對應的服務器上面進行編譯才生成對應的可執行文件。我們這裏有兩種方式來做,一種是使用shell模塊來做,另一種是使用make模塊來做。本文是使用make來實現編譯的動作。
在這裏插入圖片描述

環境

軟件 版本
Ansible 2.9.4
Python 2.7.5
Centos 7
redis 5.0.5
make 3.82

前置要求

ansiblemake模塊,要求需要執行腳本的機器上面需要預裝了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是一門強大的工具,集成了很多不錯的功能模塊。學習這些東西,可以減少我們重複的工作,提高工作效率。

參考鏈接

make_module

隨緣求贊

如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以左上角點擊關注
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章