在开始之前,让我详细介绍一下我的ansible目录结构
所以现在,如果我想将一个应用程序部署到暂存,我只需运行此playbook命令:
ansible-playbook -i environments/staging/hosts deploy-app.yml
例如,我将staging / group_vars / webserver中app1目录的路径定义为“/var/www/staging.app1.com”。但我还需要为app2部署到同一台服务器,但使用不同的目录。是否可以在group_vars中使用条件变量?
所以,如果我跑:
ansible-playbook -i environments/staging/hosts deploy-app.yml --extra-vars "app_name=app1"
它将部署到/var/www/staging.app1.com上的登台服务器 和
ansible-playbook -i environments/staging/hosts deploy-app.yml --extra-vars "app_name=app2"
它将部署到/var/www/staging.app2.com上的登台服务器
我知道最简单的方法是在运行playbook时定义app_dir变量,但如果可能,我更喜欢定义app_name,然后将根据指定的app_name使用app_dir。
if app_name = app1, then app_dir = /var/www/staging.app1.com
elif app_name = app2, then app_dir = /var/www/staging.app2.com
请善意告知
答案 0 :(得分:1)
您可以在论坛中模板Non-SSL Settings
(NOT Recommended)
Username: jon@domain.com
Password: Use the email account’s password.
Incoming Server: mail.domain.com
IMAP Port: 143
POP3 Port: 110
Outgoing Server: mail.domian.com
SMTP Port: 25
Authentication is required for IMAP, POP3, and SMTP.
:
app_dir
如果您有更多依赖于应用程序的变量并且它们不可篡改,您可以在变量文件中使用app_dir: '/var/www/staging.{{ app_name }}.com'
dict:
apps
并在需要app_dir等时使用apps:
app1:
dir: '/var/www/app1'
key: 'klg23sdkjfsdf'
db_host: '127.0.0.1'
app2:
dir: '/opt/apps/app2'
key: 'askjh233423444'
db_host: '127.0.1.1'
。