如何通过Apt无交互安装Redmine及Chef部署时跳过配置弹窗
嘿,这两个问题刚好是自动化部署Redmine时经常碰到的痛点,我来一步步给你讲清楚怎么解决!
1. 使用Apt工具无任何交互提示安装Redmine
要实现完全无交互的Apt安装,核心是预先用debconf-set-selections命令设置好Redmine安装时需要的所有配置项,这样apt-get执行安装时就不会弹出任何对话框了。
先设置debconf的配置参数,这里以MySQL为例(如果用SQLite的话,配置项会更简单):
echo "redmine redmine/instances/default/database-type select mysql" | debconf-set-selections echo "redmine redmine/instances/default/dbname string redmine_default" | debconf-set-selections echo "redmine redmine/instances/default/dbuser string redmine" | debconf-set-selections echo "redmine redmine/instances/default/dbpass password your_secure_password" | debconf-set-selections echo "redmine redmine/instances/default/dbserver string localhost" | debconf-set-selections echo "redmine redmine/instances/default/dbport string 3306" | debconf-set-selections你可以根据自身需求修改这些值,比如数据库名称、用户名、密码等。如果想用SQLite,只需要把
database-type设为sqlite3,其他数据库相关的配置项可以直接省略。执行无交互安装命令:
apt-get update && apt-get -y install redmine redmine-mysql这里的
-y参数会自动确认所有安装提示,加上之前预设的debconf配置,整个安装过程就完全没有交互了。
2. Chef部署Redmine时预先配置数据库信息跳过交互
在Chef环境中,你可以通过两种方法实现无交互部署,推荐优先选择符合Chef最佳实践的方式:
方法一:直接使用Chef的debconf资源
在你的自定义recipe里添加以下代码,预先设置好所有需要的debconf配置项:
# 配置Redmine数据库类型 debconf 'redmine/instances/default/database-type' do value 'mysql' type 'select' end # 配置数据库名称 debconf 'redmine/instances/default/dbname' do value 'redmine_default' type 'string' end # 配置数据库用户名 debconf 'redmine/instances/default/dbuser' do value 'redmine' type 'string' end # 配置数据库密码 debconf 'redmine/instances/default/dbpass' do value 'your_secure_password' type 'password' end # 配置数据库服务器地址 debconf 'redmine/instances/default/dbserver' do value 'localhost' type 'string' end # 安装Redmine主包 package 'redmine' do action :install options '-y' end # 安装MySQL适配包 package 'redmine-mysql' do action :install end
Chef会在执行安装操作前自动完成所有debconf参数的设置,整个部署过程不会出现任何交互对话框。
方法二:使用社区维护的Redmine Cookbook(更推荐)
如果使用Supermarket上的官方Redmine Cookbook,你可以直接在attributes文件里配置数据库相关参数,Cookbook会自动帮你处理debconf的配置工作:
# 在attributes/default.rb中添加配置 default['redmine']['database']['type'] = 'mysql' default['redmine']['database']['name'] = 'redmine_default' default['redmine']['database']['user'] = 'redmine' default['redmine']['database']['password'] = 'your_secure_password' default['redmine']['database']['host'] = 'localhost' default['redmine']['database']['port'] = 3306
然后在你的主recipe中引入该Cookbook即可:
include_recipe 'redmine::default'
这种方式更符合Chef的基础设施即代码理念,后续维护和修改也更方便。
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

