我正在用SaltStack弄湿我的脚.我已经完成了我的第一个状态(带有静态配置的Vim安装程序),而我正在开发第二个状态.
不幸的是,我希望我的状态安装的应用程序没有Ubuntu软件包.我将不得不自己构建应用程序.使用Salt进行"configure-make-install"类型安装是否有"最佳实践"? 或者我应该只使用cmd?
特别是,如果我是手工做的话,我会做一些事情:
wget -c http://example.com/foo-3.4.3.tar.gz
tar xzf foo-3.4.3.tar.gz
cd foo-3.4.3
./configure --prefix=$PREFIX && make && make install
Run Code Online (Sandbox Code Playgroud)
Dan*_*ite 23
如果您愿意,可以使用状态模块来抽象前两行.
file.managed:http://docs.saltstack.com/ref/states/all/salt.states.file.htmlarchive.extracted:http://docs.saltstack.com/ref/states/all/salt.states.archive.html但是你也可以在目标minion上运行命令.
install-foo:
cmd.run:
- name: |
cd /tmp
wget -c http://example.com/foo-3.4.3.tar.gz
tar xzf foo-3.4.3.tar.gz
cd foo-3.4.3
./configure --prefix=/usr/local
make
make install
- cwd: /tmp
- shell: /bin/bash
- timeout: 300
- unless: test -x /usr/local/bin/foo
Run Code Online (Sandbox Code Playgroud)
只需确保包含一个unless参数以使脚本具有幂等性.
或者,将bash脚本分发给minion并执行.请参阅: 如何使用Salt Stack执行多个命令?
至于best practice?我建议使用fpm创建.deb或.rpm包并安装它.至少,将该tarball复制到salt master并且不再依赖外部资源在三年之后存在.
Jef*_*uer 11
我们假设foo-3.4.3.tar.gz检入GitHub.您可以在状态文件中使用以下方法:
git:
pkg.installed
https://github.com/nomen/foo.git:
git.latest:
- rev: master
- target: /tmp/foo
- user: nomen
- require:
- pkg: git
foo_deployed:
cmd.run:
- cwd: /tmp/foo
- user: nomen
- name: |
./configure --prefix=/usr/local
make
make install
- require:
- git: https://github.com/nomen/foo.git
Run Code Online (Sandbox Code Playgroud)
您的配置prefix位置可以作为盐柱传递.如果构建过程更复杂,您可以考虑编写自定义状态.
| 归档时间: |
|
| 查看次数: |
7201 次 |
| 最近记录: |