如何使用ansible和模块portinstall安装FreeBSD端口?

时间:2016-08-18 14:39:59

标签: python ansible freebsd

我需要使用shell中的内容构建端口:

  

cd / usr / ports / www / nginx /&& make HTTP_GEOIP = YES BATCH = yes

我可以找到any文档,如何使用ansible module portinstall =(

3 个答案:

答案 0 :(得分:1)

我建议保留自定义构建选项的本地文件,并在portinstall之前将其复制到主机。

- name: Copy customized build options
  copy: src="{{role_path}}/files/nginx-build-options"
        dest="/var/db/ports/www_nginx/options"

- name: Install nginx from the port
  portinstall: name=nginx state=present

答案 1 :(得分:1)

我想补充一下。不幸的是,建议的解决方法并不是幂等的。

- name: Build Nginx with geoip. command: make HTTP_GEOIP=YES BATCH=yes args: chdir: /usr/ports/www/nginx/ 这意味着,它将始终报告为“已更改”。

答案 2 :(得分:0)

似乎此操作未在port_install module中实现。该模块是ansible-module-extra repository的一部分,这意味着:

  

这些模块目前随Ansible一起提供,但将来可能会单独发货。他们也主要由社区维护。非核心模块仍然可以完全使用,但对于问题和拉取请求可能会收到略低的响应率。

由于BSD(可悲)并不是很受欢迎,因此某人实施该功能的可能性不是很高。

但是可以通过使用command模块来解决这些限制:

- name: Build Nginx with geoip.
  command: make HTTP_GEOIP=YES BATCH=yes
  args:
    chdir: /usr/ports/www/nginx/

我建议编写另一个任务来检查系统上安装的端口的状态/版本,并为任务添加when子句,否则Ansible将在每次运行时重建端口。