首页 > 解决方案 > 将 make 与 Ansible 一起使用时是否可以设置标志?

问题描述

我想知道是否可以在ansible使用其community.general.make模块时传递以下命令:

make -C safenet install PREFIX=~/.local

我必须使用params,如此处所述?例如

- name: installing safenet
  community.general.make:
    chdir: ~/myfiles/safenet
    target: install
    params:
      - "-C"
      - PREFIX=~/.local

编辑:这是我得到的输出。

TASK [Installing safenet] *******************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "argument 'params' is of type <class 'list'> and we were unable to convert to dict: <class 'list'> cannot be converted to a dict"}

标签: makefileansible

解决方案


万一其他人对此有疑问,这是一个相当简单的解决方法:您只需要使用params. 由于此模块喜欢用~作主文件夹,因此您需要使用变量或插件使其使用home当前用户的文件夹($USER)。例如

- name: "Your task"
  community.general.make:
    chdir: /home/{{ lookup('env', 'USER') }}/path/to/makefile
    target: install
    params: PREFIX=/home/{{ lookup('env', 'USER') }}/path/you/want/to/use

{{ lookup('env', 'USER') }}使得 Ansible 查找当前用户名。

希望这对将来的其他人有所帮助。


推荐阅读