【发布时间】:2016-03-02 03:28:52
【问题描述】:
我正在使用 Vagrant 对 Ansible 进行原型设计,并正在使用“vagrant provision”来构建我的堆栈。我已经定义了构建核心系统、网络服务器、数据库服务器和应用程序服务器的角色。 (核心系统将是任何系统类型所需的角色,例如安装系统包和用户)。
我想将 Vagrant 配置为执行所有角色(将所有内容安装在单个 vm 上),但在生产环境中,我可能只想在某些机器上安装某些角色。构建我的剧本和库存文件以使我可以容纳单服务器 Vagrant 机器和多服务器生产机器组的最佳方法是什么?
这会涉及创建多个剧本吗?一种用于 Vagrant,另一种用于其他配置?如果是这样,那可能会导致大量重复代码。
这是我目前所拥有的,但它不起作用......
这是完整的项目: https://github.com/JoeJasinski/docker-ansible-web
流浪文件
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.provision :ansible do |ansible|
ansible.playbook = "ansible/site.yml"
ansible.verbose = "vvv"
ansible.extra_vars = {}
ansible.inventory_path = "ansible/inventory.ini"
ansible.sudo = true
ansible.groups = {
"nginxServer" => ["nginxServer",],
"djangoServer" => ["djangoServer",],
"postgresServer" => ["postgresServer",]
}
end
inventory.ini
[nginxServer]
127.0.0.1
[djangoServer]
127.0.0.1
[postgresServer]
127.0.0.1
site.yml
---
- name: Base states
hosts: all
vars:
- update_apt_cache: yes
vars_files:
- env_vars/base.yml
roles:
- role: base
- { role: users, tags: ['users'] }
- { role: sites, tags: ['sites'] }
- name: Nginx Host
hosts: nginxServer
vars:
- update_apt_cache: yes
vars_files:
- env_vars/base.yml
roles:
- { role: supervisor, tags: ['supervisor'] }
- { role: nginx, tags: ['nginx'] }
- name: Django Host
hosts: djangoServer
vars:
- update_apt_cache: yes
vars_files:
- env_vars/base.yml
roles:
- { role: supervisor, tags: ['supervisor'] }
- { role: django, tags: ['django'] }
- name: Postgres Host
hosts: postgresServer
vars:
- update_apt_cache: yes
vars_files:
- env_vars/base.yml
roles:
- { role: postgres, tags: ['postgres'],}
- { role: postgis, tags: ['postgis'], }
【问题讨论】:
标签: python django vagrant ansible provisioning